Squid adalah proxy server dan web cache yang sudah lama jadi andalan sysadmin Linux. Fungsi utamanya sederhana: Squid berdiri di antara client dan internet, meneruskan request HTTP/HTTPS, dan bisa memfilter serta meng-cache konten supaya bandwidth lebih efisien.
Artikel ini akan memandu setup dasar Squid dari nol, mulai install sampai test koneksi dari client, mencakup dua distro paling umum di production: Ubuntu/Debian dan CentOS/RHEL/AlmaLinux.
Kapan Squid Dipakai di Lingkungan IT?
Sebelum setup, pahami dulu konteks penggunaannya supaya konfigurasi tidak meleset dari kebutuhan.
- Kontrol akses internet kantor: Batasi situs yang bisa diakses karyawan via ACL.
- Hemat bandwidth: Cache konten yang sering diakses supaya tidak re-download berulang.
- Monitoring traffic: Log semua request HTTP dari client internal.
- Keamanan jaringan: Sembunyikan IP internal, semua traffic keluar pakai IP proxy.
- Update server terisolasi: Server di jaringan privat bisa update lewat satu proxy tanpa akses langsung ke internet.
Prasyarat Server
- Server Linux (Ubuntu 20.04/22.04/24.04, Debian 11/12, CentOS 7/8, RHEL 8/9, AlmaLinux 8/9)
- Akses root atau sudo
- Port 3128 tidak diblok firewall (default Squid)
- Minimal 1 CPU, 512MB RAM untuk beban ringan
Instalasi di Ubuntu/Debian
Update repo dulu sebelum install supaya dapat versi terbaru dari official repo.
sudo apt update
sudo apt install squid -y
Cek versi Squid yang terinstall:
squid -v
Service Squid otomatis aktif setelah install di Ubuntu/Debian. Verifikasi statusnya:
sudo systemctl status squid
Instalasi di CentOS/RHEL/AlmaLinux
Di keluarga RHEL, package manager yang dipakai adalah dnf (atau yum untuk CentOS 7).
CentOS 7:
sudo yum install squid -y
CentOS 8, RHEL 8/9, AlmaLinux 8/9:
sudo dnf install squid -y
Tidak seperti Ubuntu, service di RHEL tidak otomatis start. Enable dan start manual:
sudo systemctl enable squid
sudo systemctl start squid
sudo systemctl status squid
Konfigurasi Dasar squid.conf
File konfigurasi utama Squid ada di /etc/squid/squid.conf. File ini panjang karena banyak komentar, tapi bagian penting yang perlu dipahami hanya beberapa blok saja.
Backup dulu sebelum edit:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak
Buka file konfigurasi:
sudo nano /etc/squid/squid.conf
1. Definisikan Network Lokal (ACL)
ACL (Access Control List) adalah cara Squid mengenal siapa yang boleh pakai proxy ini. Cari baris acl localnet dan sesuaikan dengan subnet jaringan internal kamu. Contoh untuk subnet 192.168.1.0/24:
acl localnet src 192.168.1.0/24
Bisa tambahkan lebih dari satu subnet jika jaringannya besar:
acl localnet src 192.168.1.0/24
acl localnet src 10.0.0.0/8
2. Izinkan Akses dari Network Lokal
Pastikan baris ini ada dan tidak dikomentari, supaya client dari localnet tadi boleh lewat proxy:
http_access allow localnet
http_access allow localhost
Baris http_access deny all harus tetap ada di bawahnya, fungsinya menolak semua request yang tidak cocok ACL manapun.
http_access deny all
3. Port Squid
Default Squid listen di port 3128. Tidak perlu diubah kecuali ada konflik port di server:
http_port 3128
4. Hostname (Opsional tapi Disarankan)
Tambahkan baris ini supaya Squid tidak throw warning soal hostname saat start:
visible_hostname proxy.namaserver.local
Setelah selesai edit, simpan file lalu reload konfigurasi Squid:
sudo systemctl reload squid
Buka Port di Firewall
Client tidak bisa konek jika port 3128 diblok firewall server. Buka portnya sesuai firewall yang dipakai.
Ubuntu/Debian (UFW):
sudo ufw allow 3128/tcp
sudo ufw reload
CentOS/RHEL/AlmaLinux (firewalld):
sudo firewall-cmd --permanent --add-port=3128/tcp
sudo firewall-cmd --reload
Verifikasi port sudah listening:
ss -tlnp | grep 3128
Test Koneksi dari Client
Ada dua cara test, pilih sesuai situasi.
Test via curl dari client Linux
Ganti IP_PROXY_SERVER dengan IP server Squid kamu:
curl -x http://IP_PROXY_SERVER:3128 http://example.com
Kalau berhasil, curl akan return HTML dari example.com, artinya request sudah lewat Squid.
Test via curl dari server Squid sendiri
curl -x http://127.0.0.1:3128 http://example.com
Cek Log Realtime
Set proxy di browser, buka situs apapun, lalu pantau log Squid:
sudo tail -f /var/log/squid/access.log
Setiap request yang lewat Squid akan muncul di log ini secara realtime.
Cara Client Pakai Squid untuk Update Repo
Salah satu use case paling umum Squid di lingkungan IT adalah membantu server-server internal yang tidak punya akses internet langsung tetap bisa melakukan apt update atau dnf update lewat satu proxy server. Berikut cara set proxy di sisi client.
1. Temporary via Export (Berlaku di Session Ini Saja)
Cara paling cepat untuk test, cukup export environment variable sebelum jalankan perintah apapun. Ganti IP_PROXY_SERVER dengan IP server Squid kamu:
export http_proxy=http://IP_PROXY_SERVER:3128
export https_proxy=http://IP_PROXY_SERVER:3128
export no_proxy=localhost,127.0.0.1
Setelah di-export, semua perintah yang jalan di session tersebut akan otomatis routing lewat Squid. Variabel ini hilang begitu session terminal ditutup.
2. Persistent untuk apt (Ubuntu/Debian)
Supaya apt selalu pakai proxy tanpa perlu export tiap kali, buat file konfigurasi khusus di direktori apt.conf.d:
sudo nano /etc/apt/apt.conf.d/proxy.conf
Isi file dengan:
Acquire::http::Proxy "http://IP_PROXY_SERVER:3128";
Acquire::https::Proxy "http://IP_PROXY_SERVER:3128";
Simpan file. Tidak perlu restart service apapun, konfigurasi langsung aktif untuk perintah apt berikutnya.
Test:
sudo apt update
Pantau log Squid di server proxy, request dari client tersebut harusnya muncul:
sudo tail -f /var/log/squid/access.log
3. Persistent untuk yum (CentOS 7)
Edit file /etc/yum.conf dan tambahkan baris berikut di bagian [main]:
sudo nano /etc/yum.conf
[main]
proxy=http://IP_PROXY_SERVER:3128
Test:
sudo yum check-update
4. Persistent untuk dnf (CentOS 8, RHEL 8/9, AlmaLinux)
Edit file /etc/dnf/dnf.conf dan tambahkan baris proxy di bagian [main]:
sudo nano /etc/dnf/dnf.conf
[main]
proxy=http://IP_PROXY_SERVER:3128
Test:
sudo dnf check-update
Jika update repo berjalan lancar dan log Squid menunjukkan request dari IP client, artinya konfigurasi sudah benar.
Catatan: Proxy dengan Autentikasi
Jika Squid dikonfigurasi pakai Basic Auth, format URL proxy perlu menyertakan username dan password:
http://username:password@IP_PROXY_SERVER:3128
Berlaku untuk semua metode di atas, baik export, apt.conf.d, maupun yum.conf dan dnf.conf.
Troubleshooting Umum
Squid gagal start setelah edit config
Cek syntax file konfigurasi dulu sebelum restart:
sudo squid -k parse
Perintah ini akan highlight baris yang error. Perbaiki dulu baru restart service.
Client dapat “Access Denied”
Kemungkinan subnet client tidak masuk ACL localnet. Cek IP client dan pastikan cocok dengan subnet yang didefinisikan di squid.conf. Setelah edit, jangan lupa reload:
sudo systemctl reload squid
Port 3128 tidak bisa diakses dari luar
Cek tiga hal: firewall server (UFW atau firewalld), SELinux di RHEL/AlmaLinux, dan apakah Squid benar-benar listening di semua interface.
Cek SELinux (khusus RHEL based):
sudo getenforce
Jika output Enforcing dan ada masalah koneksi, cek log SELinux:
sudo ausearch -m avc -ts recent | grep squid
Cache disk penuh
Monitor penggunaan direktori cache Squid:
du -sh /var/spool/squid
Sesuaikan directive cache_dir di squid.conf untuk limit ukuran cache.
Next Steps: Hardening untuk Production
Setup basic di atas sudah cukup untuk lingkungan internal yang terpercaya. Untuk production yang lebih serius, pertimbangkan langkah lanjutan berikut:
- Basic Authentication: Tambahkan username dan password supaya tidak sembarang client bisa pakai proxy.
- URL Blacklist/Whitelist: Gunakan
aclberbasis domain untuk blokir atau izinkan situs tertentu saja. - SSL Bumping: Intercept dan inspect traffic HTTPS (butuh setup certificate authority internal).
- Log Rotation: Konfigurasikan
logrotatesupayaaccess.logtidak memenuhi disk. - Monitoring: Integrasikan log Squid ke Grafana atau ELK Stack untuk visibility traffic.
Squid adalah tool yang mature dan sangat fleksibel. Dengan setup dasar ini, proxy server kamu sudah siap dipakai. Untuk kebutuhan yang lebih kompleks, eksplorasi dokumentasi resminya di squid-cache.org.