Cara Setup Squid Proxy di Ubuntu/Debian dan CentOS/RHEL

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 acl berbasis domain untuk blokir atau izinkan situs tertentu saja.
  • SSL Bumping: Intercept dan inspect traffic HTTPS (butuh setup certificate authority internal).
  • Log Rotation: Konfigurasikan logrotate supaya access.log tidak 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.

Leave a Reply

Your email address will not be published. Required fields are marked *