Ditulis oleh Guru SKJ pada 29 Jul 2026
Pendahuluan
Pada masa awal perkembangan internet, proxy server banyak digunakan untuk mempercepat akses web. Proxy menyimpan salinan halaman, gambar, dan berkas yang pernah diakses sehingga permintaan berikutnya dapat dilayani dari jaringan lokal.
Namun, kondisi internet saat ini sudah berubah. Sebagian besar situs menggunakan HTTPS, layanan berbasis cloud, Content Delivery Network atau CDN, aplikasi seluler, dan konten yang berubah secara dinamis. Perubahan tersebut membuat kemampuan caching tradisional tidak lagi menjadi alasan utama penggunaan proxy.
Meskipun demikian, proxy belum ditinggalkan. Proxy masih digunakan pada jaringan:
Saat ini proxy lebih banyak digunakan untuk:
-
mengendalikan akses internet;
-
mencatat aktivitas koneksi;
-
mengharuskan autentikasi pengguna;
-
membatasi tujuan tertentu;
-
mengatur siapa yang boleh menggunakan internet;
-
menerapkan kebijakan berdasarkan alamat IP;
-
mempercepat unduhan tertentu;
-
serta menjadi perantara antara jaringan internal dan internet.
MikroTik RouterOS memiliki fitur Web Proxy bawaan untuk menangani permintaan HTTP dan HTTP-proxy. Namun, untuk jaringan dengan banyak pengguna dan kebutuhan pengelolaan yang lebih kompleks, proxy eksternal menggunakan Squid pada Ubuntu Server lebih tepat digunakan. MikroTik dapat tetap menangani routing, NAT, firewall, DHCP, hotspot, dan bandwidth, sedangkan Ubuntu Server menangani layanan proxy.
Apakah Proxy Masih Relevan?
Jawabannya adalah masih relevan, tetapi penggunaannya harus disesuaikan dengan teknologi internet modern.
Proxy masih relevan untuk:
-
Mengontrol akses internet berdasarkan alamat IP.
-
Mengharuskan pengguna menggunakan jalur internet tertentu.
-
Membatasi akses ke domain atau kategori situs tertentu.
-
Mencatat permintaan akses melalui access log.
-
Memberikan autentikasi sebelum pengguna mengakses internet.
-
Mengurangi penggunaan bandwidth untuk konten yang memang dapat di-cache.
-
Membatasi akses internet pada laboratorium sekolah.
-
Menyediakan akses internet untuk server yang tidak diizinkan keluar secara langsung.
-
Mengendalikan pembaruan sistem operasi dan paket aplikasi.
-
Menyembunyikan struktur jaringan internal dari server tujuan.
Proxy kurang efektif untuk:
-
Membaca isi komunikasi HTTPS tanpa melakukan TLS inspection.
-
Memblokir seluruh aplikasi hanya berdasarkan nama domain.
-
Menggantikan fungsi firewall.
-
Mengamankan perangkat yang sudah terinfeksi malware.
-
Menggantikan antivirus atau endpoint protection.
-
Menjamin anonimitas pengguna secara penuh.
-
Menangani seluruh trafik jaringan selain protokol yang didukung proxy.
Proxy harus dipahami sebagai salah satu bagian dari sistem keamanan jaringan, bukan sebagai satu-satunya pengamanan.
Apa Itu Proxy Server?
Proxy server adalah perangkat atau layanan yang menjadi perantara antara client dan server tujuan.
Ketika komputer pengguna mengakses suatu situs, permintaan tidak selalu dikirim langsung ke internet. Permintaan dapat dikirim terlebih dahulu ke proxy server. Proxy kemudian memeriksa permintaan tersebut dan memutuskan apakah permintaan:
Alur dasarnya adalah:
Client
↓
Proxy Server
↓
Internet
↓
Server Tujuan
Jawaban dari server tujuan juga melewati proxy sebelum diterima client.
Server Tujuan
↓
Proxy Server
↓
Client
Proxy dapat mengetahui informasi seperti:
Perbedaan Proxy dan Firewall
Proxy dan firewall mempunyai fungsi yang berbeda.
Firewall
Firewall bekerja dengan memeriksa lalu lintas jaringan berdasarkan aturan seperti:
Firewall dapat mengizinkan atau menolak paket sebelum paket mencapai layanan tertentu.
Proxy
Proxy bekerja sebagai perantara pada tingkat aplikasi. Client melakukan komunikasi dengan proxy, kemudian proxy membuat komunikasi baru menuju server tujuan.
Proxy dapat digunakan untuk:
Kesimpulan perbedaannya
Firewall : Mengatur lalu lintas paket.
Proxy : Menjadi perantara komunikasi aplikasi.
Dalam penerapan yang baik, firewall dan proxy digunakan bersama-sama.
Jenis-Jenis Proxy
1. Forward Proxy
Forward proxy digunakan oleh client dalam jaringan internal untuk mengakses internet.
Client → Forward Proxy → Internet
Web Proxy MikroTik dan Squid dalam artikel ini termasuk forward proxy.
2. Reverse Proxy
Reverse proxy berada di depan web server dan menerima permintaan dari internet.
Internet → Reverse Proxy → Web Server
Reverse proxy biasanya digunakan untuk:
Contohnya adalah Nginx, HAProxy, Traefik, dan layanan reverse proxy berbasis cloud.
3. Explicit Proxy
Pada explicit proxy, alamat dan port proxy diatur secara langsung pada:
-
browser;
-
sistem operasi;
-
aplikasi;
-
Group Policy;
-
atau file konfigurasi.
Contoh:
Proxy Address : 192.168.10.2
Proxy Port : 3128
Metode ini paling mudah dipahami, paling jelas, dan paling cocok untuk proxy modern.
4. Transparent atau Intercepting Proxy
Pada transparent proxy, client tidak perlu mengatur proxy secara manual. Router mengalihkan trafik tertentu menuju proxy.
Metode ini mudah diterapkan untuk HTTP biasa, tetapi bermasalah untuk HTTPS karena koneksi HTTPS dirancang untuk memastikan client berkomunikasi langsung dengan identitas server yang dituju.
Keterbatasan Proxy pada HTTPS
Sebagian besar situs modern menggunakan HTTPS pada port TCP 443. Isi komunikasi HTTPS dienkripsi sehingga proxy biasa tidak dapat melihat:
Proxy mungkin masih mengetahui tujuan koneksi tertentu, tetapi tidak otomatis dapat membaca isi komunikasinya.
Agar isi HTTPS dapat diperiksa, diperlukan TLS inspection atau SSL bump. Mekanisme tersebut membutuhkan:
-
sertifikat Certificate Authority internal;
-
pemasangan sertifikat ke setiap client;
-
pengelolaan keamanan sertifikat;
-
konfigurasi proxy yang lebih kompleks;
-
pengecualian untuk aplikasi tertentu;
-
pertimbangan privasi;
-
dan kebijakan organisasi yang jelas.
TLS inspection tidak disarankan sebagai praktik awal bagi siswa karena berisiko menimbulkan masalah keamanan dan privasi apabila diterapkan tanpa perencanaan yang benar.
Untuk sekolah, pendekatan yang lebih aman adalah menggabungkan:
-
firewall MikroTik;
-
DNS filtering;
-
explicit proxy;
-
kebijakan perangkat;
-
SafeSearch;
-
pembatasan aplikasi;
-
autentikasi hotspot;
-
dan monitoring log.
Skenario Praktikum
Artikel ini menggunakan contoh topologi berikut.
INTERNET
|
ether1
[ ROUTER MIKROTIK ]
192.168.10.1/24
|
ether2
|
[ SWITCH / BRIDGE ]
/ \
/ \
[UBUNTU PROXY] [CLIENT]
192.168.10.2 192.168.10.10
Squid :3128
Tabel alamat IP
| Perangkat |
Interface |
Alamat IP |
| MikroTik |
ether1 |
Dari ISP |
| MikroTik |
bridge-LAN |
192.168.10.1/24 |
| Ubuntu Server |
ens18 atau enp0s3 |
192.168.10.2/24 |
| Client |
Ethernet/Wi-Fi |
DHCP 192.168.10.0/24 |
| Squid |
TCP |
Port 3128 |
| Web Proxy MikroTik |
TCP |
Port 8080 |
Pada praktik ini terdapat dua pilihan:
Pilihan A
Menggunakan Web Proxy internal MikroTik.
Client → MikroTik Web Proxy → Internet
Pilihan B
Menggunakan Squid pada Ubuntu Server.
Client → Ubuntu Squid → MikroTik → Internet
Kedua skenario sebaiknya diuji secara terpisah agar alur paket mudah dipahami.
Bagian I: Persiapan Router MikroTik
1. Membuat bridge LAN
/interface bridge
add name=bridge-LAN comment="Bridge jaringan lokal"
/interface bridge port
add bridge=bridge-LAN interface=ether2
add bridge=bridge-LAN interface=ether3
add bridge=bridge-LAN interface=ether4
Interface dapat disesuaikan dengan topologi yang digunakan.
2. Memberikan alamat IP LAN
/ip address
add address=192.168.10.1/24 interface=bridge-LAN comment="Gateway LAN"
3. Membuat DHCP Server
Gunakan DHCP Setup melalui terminal:
/ip dhcp-server setup
Kemudian pilih:
DHCP Server Interface : bridge-LAN
DHCP Address Space : 192.168.10.0/24
Gateway : 192.168.10.1
Address Pool : 192.168.10.10-192.168.10.200
DNS Server : 192.168.10.1
Lease Time : 1d
Konfigurasi manual dapat dibuat seperti berikut:
/ip pool
add name=pool-LAN ranges=192.168.10.10-192.168.10.200
/ip dhcp-server
add name=dhcp-LAN interface=bridge-LAN address-pool=pool-LAN disabled=no
/ip dhcp-server network
add address=192.168.10.0/24 gateway=192.168.10.1 \
dns-server=192.168.10.1
4. Mengaktifkan DNS cache MikroTik
/ip dns
set allow-remote-requests=yes servers=1.1.1.1,8.8.8.8
Pada lingkungan produksi, DNS dapat diarahkan menuju DNS filtering milik organisasi.
5. Membuat NAT internet
/ip firewall nat
add chain=srcnat out-interface=ether1 action=masquerade \
comment="NAT internet LAN"
Jika nama interface WAN bukan ether1, sesuaikan dengan interface yang terhubung ke ISP.
6. Menguji koneksi
Dari MikroTik:
/ping 8.8.8.8
Kemudian:
/ping google.com
Dari client, periksa:
ping 192.168.10.1
Setelah itu uji akses internet.
Bagian II: Menggunakan Web Proxy Internal MikroTik
Web Proxy MikroTik dapat digunakan sebagai proxy HTTP sederhana, filtering URL, access control, dan pencatatan aktivitas.
Namun, kemampuan perangkat RouterBoard terbatas. Caching dalam jumlah besar tidak disarankan pada router dengan:
Untuk jaringan besar, gunakan server proxy eksternal.
Mengaktifkan Web Proxy MikroTik
Jalankan perintah:
/ip proxy
set enabled=yes \
port=8080 \
cache-administrator=admin@sekolah.sch.id \
max-cache-size=none
Penjelasan:
-
enabled=yes mengaktifkan proxy;
-
port=8080 menentukan port proxy;
-
cache-administrator menentukan alamat administrator;
-
max-cache-size=none menonaktifkan penyimpanan cache disk.
Untuk praktik caching terbatas, ukuran cache dapat disesuaikan dengan kapasitas perangkat. Jangan menggunakan cache besar pada penyimpanan RouterBoard yang kecil.
Lihat konfigurasi:
/ip proxy print
Pantau status proxy:
/ip proxy monitor
Menggunakan MikroTik sebagai Explicit Proxy
Pada client, atur proxy browser atau sistem operasi menjadi:
Alamat proxy : 192.168.10.1
Port proxy : 8080
Pengaturan pada Windows
Buka:
Settings
→ Network & Internet
→ Proxy
→ Use a proxy server
Masukkan:
Address : 192.168.10.1
Port : 8080
Setelah itu buka situs HTTP untuk melakukan pengujian.
Perlu diperhatikan bahwa tidak semua aplikasi mengikuti pengaturan proxy Windows. Beberapa aplikasi menggunakan koneksi langsung atau memiliki pengaturan proxy sendiri.
Membuat Access Rule Web Proxy MikroTik
Access rule digunakan untuk menentukan permintaan yang diizinkan atau ditolak.
1. Mengizinkan jaringan lokal
/ip proxy access
add src-address=192.168.10.0/24 action=allow \
comment="Izinkan client LAN"
2. Menolak jaringan selain LAN
/ip proxy access
add action=deny comment="Tolak selain jaringan LAN"
Urutan rule sangat penting. Router membaca rule dari atas ke bawah.
Aturan mengizinkan LAN harus diletakkan sebelum aturan menolak seluruh akses.
Memblokir Domain Menggunakan Web Proxy
Contoh memblokir domain:
/ip proxy access
add dst-host="*.example.com" action=deny \
comment="Blokir example.com"
Contoh lain:
/ip proxy access
add dst-host="example.org" action=deny
add dst-host="*.example.org" action=deny
Rule pertama memblokir domain utama, sedangkan rule kedua memblokir subdomain.
Perlu dipahami bahwa filter dst-host pada Web Proxy terutama relevan untuk permintaan yang benar-benar diproses oleh proxy. Filter ini bukan pengganti filtering HTTPS modern.
Memblokir Kata pada URL
Contoh:
/ip proxy access
add path="*download*" action=deny \
comment="Blokir URL mengandung download"
Atau:
/ip proxy access
add path="*.exe" action=deny \
comment="Blokir file EXE melalui HTTP"
Pemfilteran ini hanya bekerja apabila URL dapat dilihat oleh proxy. Untuk HTTPS terenkripsi, path lengkap tidak dapat dibaca oleh proxy biasa.
Mengizinkan Situs Tertentu
Contoh jaringan laboratorium hanya diizinkan mengakses situs pembelajaran tertentu:
/ip proxy access
add src-address=192.168.10.0/24 dst-host="*.kemdikbud.go.id" \
action=allow comment="Izinkan Kemdikbud"
add src-address=192.168.10.0/24 dst-host="*.belajar.id" \
action=allow comment="Izinkan belajar.id"
add src-address=192.168.10.0/24 action=deny \
comment="Tolak tujuan lain melalui proxy"
Namun, whitelist domain modern dapat menjadi sulit karena satu aplikasi sering menggunakan banyak domain, CDN, API, dan layanan autentikasi.
Mengubah Halaman Penolakan
Web Proxy MikroTik dapat melakukan pengalihan untuk permintaan HTTP tertentu.
Contoh:
/ip proxy access
add dst-host="*.example.com" action=deny \
redirect-to="portal.sekolah.local/diblokir.html"
Pengalihan hanya cocok untuk trafik HTTP yang dapat diproses oleh proxy. Jangan mengandalkannya untuk HTTPS.
Transparent Proxy HTTP pada MikroTik
Transparent proxy mengalihkan trafik HTTP port 80 ke Web Proxy MikroTik.
/ip firewall nat
add chain=dstnat \
src-address=192.168.10.0/24 \
protocol=tcp \
dst-port=80 \
action=redirect \
to-ports=8080 \
comment="Redirect HTTP ke Web Proxy MikroTik"
Alurnya menjadi:
Client mengakses HTTP port 80
↓
MikroTik menangkap permintaan
↓
Dialihkan ke Web Proxy port 8080
↓
Web Proxy memeriksa access rule
↓
Permintaan diizinkan atau ditolak
Jangan mengalihkan HTTPS port 443 ke port 8080
Konfigurasi berikut tidak boleh digunakan sebagai proxy HTTPS biasa:
dst-port=443 action=redirect to-ports=8080
Hal tersebut akan menyebabkan:
Web Proxy biasa tidak dapat menggantikan server HTTPS tujuan.
Firewall Rule untuk Melindungi Proxy MikroTik
Proxy sebaiknya hanya dapat digunakan oleh jaringan lokal.
1. Mengizinkan akses proxy dari LAN
/ip firewall filter
add chain=input \
src-address=192.168.10.0/24 \
protocol=tcp \
dst-port=8080 \
action=accept \
comment="Izinkan LAN ke Web Proxy"
2. Menolak akses proxy dari WAN
/ip firewall filter
add chain=input \
in-interface=ether1 \
protocol=tcp \
dst-port=8080 \
action=drop \
comment="Tolak akses Web Proxy dari internet"
Jangan membuka proxy ke internet tanpa pembatasan. Open proxy dapat disalahgunakan pihak lain untuk:
-
menyembunyikan sumber serangan;
-
mengirim trafik berbahaya;
-
menggunakan bandwidth;
-
dan menyebabkan alamat IP publik masuk daftar hitam.
Mencatat Aktivitas Web Proxy MikroTik
Untuk mengaktifkan logging:
/system logging
add topics=web-proxy action=memory
Lihat log:
/log print where topics~"web-proxy"
Untuk penyimpanan log jangka panjang, lebih baik kirim log ke syslog server karena memori router terbatas.
Contoh konfigurasi remote syslog:
/system logging action
add name=remote-syslog \
target=remote \
remote=192.168.10.2 \
remote-port=514
/system logging
add topics=web-proxy action=remote-syslog
Ubuntu Server dapat dikonfigurasi sebagai penerima log menggunakan rsyslog atau platform monitoring lainnya.
Bagian III: Proxy Eksternal Menggunakan Ubuntu Server dan Squid
Pada skenario proxy eksternal, Ubuntu Server menjadi proxy server dan MikroTik menjadi router.
CLIENT
|
| Permintaan proxy port 3128
v
UBUNTU SERVER + SQUID
|
| Trafik menuju internet
v
MIKROTIK
|
v
INTERNET
Pembagian tugasnya adalah:
MikroTik
-
routing;
-
NAT;
-
DHCP;
-
firewall;
-
hotspot;
-
manajemen bandwidth;
-
isolasi jaringan;
-
dan pengarahan trafik.
Ubuntu Server
Mengatur IP Statis Ubuntu Server
Contoh interface Ubuntu adalah ens18. Periksa nama interface:
ip address
Edit konfigurasi Netplan:
sudo nano /etc/netplan/01-network.yaml
Contoh konfigurasi:
network:
version: 2
ethernets:
ens18:
dhcp4: false
addresses:
- 192.168.10.2/24
routes:
- to: default
via: 192.168.10.1
nameservers:
addresses:
- 192.168.10.1
- 1.1.1.1
Simpan lalu terapkan:
sudo netplan try
Jika tidak ada masalah:
sudo netplan apply
Uji koneksi:
ping -c 4 192.168.10.1
ping -c 4 8.8.8.8
ping -c 4 ubuntu.com
Menginstal Squid
Perbarui daftar paket:
sudo apt update
Instal Squid:
sudo apt install squid -y
Periksa status:
sudo systemctl status squid
Aktifkan agar berjalan otomatis:
sudo systemctl enable squid
Secara umum Squid menggunakan port 3128 untuk menerima koneksi proxy client.
Mencadangkan Konfigurasi Squid
Sebelum mengubah konfigurasi:
sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup
Buka konfigurasi:
sudo nano /etc/squid/squid.conf
Untuk pembelajaran, konfigurasi dapat disederhanakan. Namun, jangan menghapus konfigurasi asli tanpa membuat cadangan.
Konfigurasi Dasar Squid
Tambahkan atau sesuaikan bagian berikut:
http_port 3128
acl localnet src 192.168.10.0/24
http_access allow localhost
http_access allow localnet
http_access deny all
Penjelasan:
http_port 3128
Menentukan Squid mendengarkan pada port 3128.
acl localnet src 192.168.10.0/24
Membuat ACL bernama localnet yang berisi jaringan client.
http_access allow localhost
Mengizinkan koneksi dari server sendiri.
http_access allow localnet
Mengizinkan jaringan lokal menggunakan proxy.
http_access deny all
Menolak seluruh permintaan lainnya.
Urutan http_access sangat penting karena Squid membaca aturan dari atas ke bawah.
Periksa konfigurasi:
sudo squid -k parse
Jika tidak ada error:
sudo systemctl restart squid
Periksa kembali:
sudo systemctl status squid
Membatasi Squid Hanya pada IP LAN
Agar Squid hanya mendengarkan pada IP internal:
http_port 192.168.10.2:3128
Konfigurasi ini lebih aman daripada mendengarkan pada seluruh interface apabila Ubuntu Server mempunyai lebih dari satu kartu jaringan.
Mengatur Proxy pada Client
Masukkan:
Proxy address : 192.168.10.2
Proxy port : 3128
Untuk browser yang menggunakan pengaturan sistem, konfigurasikan proxy melalui pengaturan Windows.
Menguji dengan curl
Dari Linux atau Windows yang memiliki curl:
curl -x http://192.168.10.2:3128 http://example.com
Untuk menguji koneksi HTTPS melalui metode CONNECT:
curl -x http://192.168.10.2:3128 https://example.com
Pada explicit proxy, Squid dapat meneruskan koneksi HTTPS menggunakan metode CONNECT tanpa harus membuka isi komunikasi terenkripsi.
Mengatur Firewall MikroTik untuk Squid
1. Mengizinkan client menuju Squid
Jika firewall forward menggunakan kebijakan ketat:
/ip firewall filter
add chain=forward \
src-address=192.168.10.0/24 \
dst-address=192.168.10.2 \
protocol=tcp \
dst-port=3128 \
action=accept \
comment="Izinkan client ke Squid"
2. Mengizinkan Ubuntu menuju internet
/ip firewall filter
add chain=forward \
src-address=192.168.10.2 \
out-interface=ether1 \
action=accept \
comment="Izinkan Squid menuju internet"
3. Menolak akses port Squid dari WAN
/ip firewall filter
add chain=forward \
in-interface=ether1 \
dst-address=192.168.10.2 \
protocol=tcp \
dst-port=3128 \
action=drop \
comment="Blokir akses Squid dari WAN"
Pada kondisi normal, NAT port forwarding menuju Squid memang tidak perlu dibuat.
Memaksa Client Menggunakan Squid
Metode yang paling aman adalah menggunakan explicit proxy dan kebijakan perangkat. Namun, administrator dapat menolak koneksi web langsung agar client harus menggunakan Squid.
Konsep
Client diperbolehkan:
Client → Ubuntu Squid port 3128
Client tidak diperbolehkan:
Client → Internet port 80/443 secara langsung
Ubuntu Squid tetap diperbolehkan menuju internet.
Address list untuk client yang wajib memakai proxy
/ip firewall address-list
add list=PROXY-CLIENT address=192.168.10.10-192.168.10.100
Jika RouterOS tidak menerima rentang dalam bentuk tersebut pada konteks tertentu, gunakan subnet atau masukkan alamat secara terpisah.
Contoh menggunakan subnet:
/ip firewall address-list
add list=PROXY-CLIENT address=192.168.10.0/24
Kemudian buat pengecualian untuk Ubuntu Server.
/ip firewall address-list
add list=PROXY-SERVER address=192.168.10.2
Mengizinkan koneksi ke Squid
/ip firewall filter
add chain=forward \
src-address-list=PROXY-CLIENT \
dst-address=192.168.10.2 \
protocol=tcp \
dst-port=3128 \
action=accept \
comment="Client boleh menuju Squid"
Mengizinkan Squid keluar ke internet
/ip firewall filter
add chain=forward \
src-address=192.168.10.2 \
out-interface=ether1 \
protocol=tcp \
dst-port=80,443 \
action=accept \
comment="Squid boleh akses HTTP dan HTTPS"
Menolak client mengakses web secara langsung
/ip firewall filter
add chain=forward \
src-address-list=PROXY-CLIENT \
out-interface=ether1 \
protocol=tcp \
dst-port=80,443 \
action=drop \
comment="Paksa client menggunakan proxy"
Rule allow harus ditempatkan sebelum rule drop.
Perlu dicatat bahwa banyak aplikasi modern tidak kompatibel dengan proxy wajib. Sebelum diterapkan kepada seluruh pengguna, lakukan pengujian pada:
-
browser;
-
aplikasi pembelajaran;
-
layanan konferensi;
-
pembaruan sistem;
-
antivirus;
-
aplikasi pesan;
-
dan aplikasi mobile.
Mengalihkan HTTP ke Squid Secara Transparan
Squid dapat digunakan sebagai intercepting proxy untuk HTTP. Konfigurasi ini tidak ditujukan untuk HTTPS.
Konfigurasi Squid
Tambahkan port intercept:
http_port 3128 intercept
Pastikan ACL jaringan lokal tetap tersedia:
acl localnet src 192.168.10.0/24
http_access allow localnet
http_access deny all
Periksa dan restart:
sudo squid -k parse
sudo systemctl restart squid
NAT MikroTik menuju Squid
Contoh:
/ip firewall nat
add chain=dstnat \
src-address=192.168.10.0/24 \
dst-address=!192.168.10.2 \
protocol=tcp \
dst-port=80 \
action=dst-nat \
to-addresses=192.168.10.2 \
to-ports=3128 \
comment="Intercept HTTP menuju Squid"
Namun, penerapan transparent proxy eksternal memerlukan perhatian terhadap jalur balik paket. Server Squid dan client berada pada subnet yang sama sehingga Squid dapat mengirim jawaban langsung ke client, melewati router. Kondisi ini dapat menghasilkan jalur tidak simetris dan koneksi gagal.
Untuk topologi satu subnet, administrator dapat menambahkan source NAT pada trafik yang diarahkan ke Squid:
/ip firewall nat
add chain=srcnat \
src-address=192.168.10.0/24 \
dst-address=192.168.10.2 \
protocol=tcp \
dst-port=3128 \
action=masquerade \
comment="Pastikan return path intercept Squid melalui MikroTik"
Konsekuensinya, Squid dapat melihat IP MikroTik sebagai sumber koneksi, bukan IP asli client.
Desain yang lebih baik adalah menempatkan proxy pada subnet atau VLAN server tersendiri:
VLAN Client : 192.168.10.0/24
VLAN Server : 192.168.20.0/24
Squid : 192.168.20.2
MikroTik : Router antar-VLAN
Dengan demikian, seluruh komunikasi client dan Squid selalu melewati MikroTik.
Desain Proxy Eksternal yang Direkomendasikan
INTERNET
|
ether1
[MIKROTIK]
/ \
/ \
VLAN 10 CLIENT VLAN 20 SERVER
192.168.10.1/24 192.168.20.1/24
| |
[SWITCH/AP] [UBUNTU SQUID]
| 192.168.20.2
Client Sekolah Port 3128
Keuntungannya:
-
pemisahan client dan server;
-
firewall lebih mudah;
-
pencatatan IP client lebih jelas;
-
routing lebih terkontrol;
-
proxy tidak berada pada broadcast domain yang sama;
-
dan keamanan server lebih baik.
Contoh Firewall untuk Topologi Dua Subnet
Izinkan client menuju Squid
/ip firewall filter
add chain=forward \
src-address=192.168.10.0/24 \
dst-address=192.168.20.2 \
protocol=tcp \
dst-port=3128 \
action=accept \
comment="Client VLAN menuju Squid"
Izinkan Squid menuju internet
/ip firewall filter
add chain=forward \
src-address=192.168.20.2 \
out-interface=ether1 \
protocol=tcp \
dst-port=80,443 \
action=accept \
comment="Squid menuju web"
Tolak akses langsung client
/ip firewall filter
add chain=forward \
src-address=192.168.10.0/24 \
out-interface=ether1 \
protocol=tcp \
dst-port=80,443 \
action=drop \
comment="Client wajib menggunakan proxy"
Batasi akses menuju server proxy
/ip firewall filter
add chain=forward \
src-address=192.168.10.0/24 \
dst-address=192.168.20.2 \
action=drop \
comment="Tolak layanan server lain"
Rule port 3128 harus berada di atas rule penolakan umum.
Filtering Domain pada Squid
Buat berkas daftar domain:
sudo nano /etc/squid/blocked-domains.txt
Contoh isi:
.example.com
.example.org
.social-example.test
Tanda titik di depan domain dapat digunakan untuk mencocokkan domain dan subdomain sesuai pola ACL yang diterapkan.
Tambahkan pada squid.conf:
acl blocked_domains dstdomain "/etc/squid/blocked-domains.txt"
http_access deny blocked_domains
http_access allow localnet
http_access deny all
Urutan yang benar:
-
Definisikan ACL.
-
Tolak domain yang diblokir.
-
Izinkan jaringan lokal.
-
Tolak seluruh akses lain.
Periksa:
sudo squid -k parse
Muat ulang:
sudo systemctl reload squid
Membuat Daftar Domain yang Diizinkan
Buat file:
sudo nano /etc/squid/allowed-domains.txt
Isi contoh:
.kemdikbud.go.id
.belajar.id
.google.com
.googleapis.com
.gstatic.com
Tambahkan:
acl allowed_domains dstdomain "/etc/squid/allowed-domains.txt"
http_access allow allowed_domains
http_access deny all
Whitelist harus diuji dengan teliti karena sebuah layanan web dapat bergantung pada banyak domain lain.
Filtering Berdasarkan Jam
Contoh mengizinkan akses pada Senin sampai Jumat pukul 07.00–16.00:
acl jam_sekolah time MTWHF 07:00-16:00
http_access allow localnet jam_sekolah
http_access deny localnet
http_access deny all
Kode hari Squid:
S = Sunday
M = Monday
T = Tuesday
W = Wednesday
H = Thursday
F = Friday
A = Saturday
Filtering Berdasarkan Alamat IP Client
Contoh komputer guru:
acl guru src 192.168.10.10-192.168.10.30
Contoh komputer siswa:
acl siswa src 192.168.10.100-192.168.10.200
Aturan:
http_access allow guru
http_access deny siswa blocked_domains
http_access allow siswa
http_access deny all
Dengan aturan tersebut:
-
guru diizinkan menggunakan proxy;
-
siswa ditolak ketika mengakses domain yang terdapat dalam daftar blokir;
-
siswa diizinkan mengakses tujuan lainnya.
Membatasi Port Tujuan
Contoh konfigurasi aman:
acl SSL_ports port 443
acl Safe_ports port 80
acl Safe_ports port 443
acl Safe_ports port 21
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access deny all
Tujuannya adalah mencegah Squid digunakan untuk membangun koneksi ke port sembarangan.
Autentikasi Pengguna Squid
Autentikasi memungkinkan setiap pengguna memiliki username dan password.
Instal alat pembuat password:
sudo apt install apache2-utils -y
Buat file password:
sudo htpasswd -c /etc/squid/passwords guru1
Tambahkan pengguna berikutnya tanpa -c:
sudo htpasswd /etc/squid/passwords siswa1
Jangan menggunakan -c ketika menambahkan pengguna berikutnya karena opsi tersebut dapat membuat ulang file.
Cari lokasi helper autentikasi:
dpkg -L squid | grep basic_ncsa_auth
Lokasinya dapat berbeda menurut versi dan arsitektur sistem. Contoh umum:
/usr/lib/squid/basic_ncsa_auth
Tambahkan pada squid.conf:
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwords
auth_param basic realm Proxy Sekolah
auth_param basic credentialsttl 2 hours
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
Periksa:
sudo squid -k parse
sudo systemctl restart squid
Saat browser menggunakan proxy, pengguna akan diminta memasukkan username dan password.
Perlu diketahui bahwa Basic Authentication mengirim kredensial melalui koneksi client ke proxy dalam bentuk yang tidak memberikan perlindungan kuat apabila jaringan lokal tidak dipercaya. Karena itu, gunakan jaringan internal yang aman atau metode autentikasi yang lebih sesuai untuk lingkungan produksi.
Membuat Kelompok Guru dan Siswa
Buat file pengguna guru:
sudo nano /etc/squid/guru.txt
Contoh:
guru1
guru2
administrator
Buat file siswa:
sudo nano /etc/squid/siswa.txt
Contoh:
siswa1
siswa2
siswa3
Konfigurasi ACL:
acl authenticated proxy_auth REQUIRED
acl kelompok_guru proxy_auth "/etc/squid/guru.txt"
acl kelompok_siswa proxy_auth "/etc/squid/siswa.txt"
acl blocked_domains dstdomain "/etc/squid/blocked-domains.txt"
http_access allow kelompok_guru
http_access deny kelompok_siswa blocked_domains
http_access allow kelompok_siswa
http_access deny all
Administrator dapat menerapkan kebijakan berbeda bagi setiap kelompok.
Mengatur Cache Squid
Contoh sederhana:
cache_mem 256 MB
maximum_object_size_in_memory 512 KB
maximum_object_size 64 MB
cache_dir ufs /var/spool/squid 5000 16 256
Penjelasan:
-
cache_mem menentukan jumlah memori yang digunakan untuk objek tertentu;
-
maximum_object_size_in_memory membatasi ukuran objek di memori;
-
maximum_object_size membatasi ukuran objek yang disimpan pada disk;
-
cache_dir menentukan lokasi dan kapasitas cache.
Nilai tersebut harus disesuaikan dengan:
-
kapasitas RAM;
-
kapasitas disk;
-
jumlah client;
-
pola akses;
-
dan beban server.
Setelah mengubah struktur cache:
sudo systemctl stop squid
sudo squid -z
sudo systemctl start squid
Cache tidak selalu mempercepat seluruh situs modern. Banyak respons HTTPS, konten pribadi, streaming, dan aplikasi dinamis tidak dapat atau tidak seharusnya di-cache.
Proxy Khusus Pembaruan Ubuntu
Untuk laboratorium dengan banyak komputer Ubuntu, caching paket dapat menghemat bandwidth karena banyak client mengunduh paket yang sama.
Selain Squid umum, administrator dapat mempertimbangkan caching yang memang dirancang untuk paket Debian dan Ubuntu, seperti apt-cacher-ng.
Contoh instalasi:
sudo apt update
sudo apt install apt-cacher-ng -y
Pada client, buat file:
sudo nano /etc/apt/apt.conf.d/01proxy
Isi:
Acquire::http::Proxy "http://192.168.10.2:3142";
Setelah itu:
sudo apt update
Pendekatan ini lebih terarah daripada mencoba menyimpan seluruh trafik web modern.
Logging dan Monitoring Squid
Lokasi log umum:
/var/log/squid/access.log
/var/log/squid/cache.log
Pantau access log:
sudo tail -f /var/log/squid/access.log
Pantau error:
sudo tail -f /var/log/squid/cache.log
Cari akses dari IP tertentu:
sudo grep "192.168.10.25" /var/log/squid/access.log
Cari domain tertentu:
sudo grep "example.com" /var/log/squid/access.log
Hitung jumlah permintaan:
sudo wc -l /var/log/squid/access.log
Administrator harus membuat kebijakan penyimpanan log yang jelas. Log akses dapat mengandung data aktivitas pengguna sehingga harus:
Firewall Ubuntu Menggunakan UFW
Izinkan SSH dari jaringan administrator:
sudo ufw allow from 192.168.10.0/24 to any port 22 proto tcp
Izinkan Squid dari LAN:
sudo ufw allow from 192.168.10.0/24 to any port 3128 proto tcp
Aktifkan UFW:
sudo ufw enable
Periksa:
sudo ufw status verbose
Jangan membuka port Squid ke seluruh internet:
sudo ufw allow 3128/tcp
Rule tanpa pembatasan alamat sumber dapat membuat proxy dapat diakses dari jaringan yang tidak diinginkan apabila routing dan firewall di luar server juga mengizinkannya.
Pengamanan Server Proxy
1. Gunakan IP statis
Proxy harus mempunyai alamat IP tetap agar konfigurasi client dan firewall tidak berubah.
2. Batasi port 3128
Hanya jaringan internal yang boleh terhubung.
3. Jangan membuat port forwarding dari internet
Squid tidak perlu dipublikasikan ke internet untuk skenario forward proxy sekolah.
4. Perbarui sistem
sudo apt update
sudo apt upgrade
5. Gunakan autentikasi bila diperlukan
Autentikasi membantu mengidentifikasi pengguna, tetapi tidak menggantikan keamanan jaringan.
6. Rotasi log
Pastikan log tidak memenuhi disk.
Periksa:
df -h
du -sh /var/log/squid
7. Cadangkan konfigurasi
sudo cp -a /etc/squid /root/backup-squid
8. Pisahkan server dan client
Gunakan VLAN server apabila jaringan telah mendukung segmentasi.
9. Terapkan firewall berlapis
Gunakan firewall pada MikroTik dan Ubuntu Server.
10. Hindari TLS inspection tanpa kebijakan
Jangan memasang sertifikat internal atau memeriksa komunikasi terenkripsi tanpa dasar administratif, teknis, dan kebijakan privasi yang jelas.
Urutan Firewall MikroTik yang Disarankan
Contoh struktur dasar:
/ip firewall filter
add chain=input connection-state=established,related,untracked \
action=accept comment="Input established related"
add chain=input connection-state=invalid \
action=drop comment="Drop invalid input"
add chain=input protocol=icmp \
action=accept comment="Izinkan ICMP"
add chain=input src-address=192.168.10.0/24 \
action=accept comment="Manajemen dari LAN"
add chain=input in-interface=ether1 \
action=drop comment="Lindungi router dari WAN"
add chain=forward connection-state=established,related,untracked \
action=accept comment="Forward established related"
add chain=forward connection-state=invalid \
action=drop comment="Drop invalid forward"
add chain=forward src-address=192.168.10.0/24 \
dst-address=192.168.10.2 protocol=tcp dst-port=3128 \
action=accept comment="Client menuju Squid"
add chain=forward src-address=192.168.10.2 \
out-interface=ether1 action=accept \
comment="Squid menuju internet"
add chain=forward src-address=192.168.10.0/24 \
out-interface=ether1 protocol=tcp dst-port=80,443 \
action=drop comment="Cegah web langsung"
add chain=forward in-interface=ether1 \
connection-state=new connection-nat-state=!dstnat \
action=drop comment="Tolak koneksi baru WAN"
Konfigurasi harus disesuaikan dengan layanan yang dibutuhkan. Jangan langsung menyalin rule penolakan ke router produksi tanpa memastikan akses penting masih diizinkan.
Pengujian Sistem
Pengujian koneksi Ubuntu
ping -c 4 192.168.10.1
ping -c 4 8.8.8.8
curl http://example.com
Pengujian layanan Squid
sudo systemctl status squid
sudo ss -lntp | grep 3128
Pengujian konfigurasi
sudo squid -k parse
Pengujian dari client
curl -x http://192.168.10.2:3128 http://example.com
Pengujian log
sudo tail -f /var/log/squid/access.log
Pengujian firewall
-
Dengan proxy aktif, buka situs.
-
Hapus pengaturan proxy dari client.
-
Coba membuka situs kembali.
-
Jika direct access diblokir, situs seharusnya tidak dapat diakses.
-
Aktifkan kembali proxy.
-
Pastikan akses kembali normal.
Pemecahan Masalah
1. Client tidak dapat terhubung ke Squid
Periksa:
sudo systemctl status squid
sudo ss -lntp | grep 3128
sudo ufw status
Dari client:
ping 192.168.10.2
Kemudian:
curl -x http://192.168.10.2:3128 http://example.com
2. Squid gagal restart
Periksa sintaks:
sudo squid -k parse
Lihat log:
sudo journalctl -u squid --no-pager -n 100
sudo tail -n 100 /var/log/squid/cache.log
3. Muncul Access Denied
Periksa:
-
alamat IP client;
-
ACL localnet;
-
urutan http_access;
-
daftar domain;
-
dan aturan autentikasi.
Contoh:
acl localnet src 192.168.10.0/24
http_access allow localnet
http_access deny all
4. HTTP berjalan tetapi HTTPS gagal
Pastikan explicit proxy dikonfigurasi untuk HTTP dan HTTPS pada alamat dan port yang sama.
Jangan melakukan redirect port 443 menuju proxy HTTP biasa.
5. Browser bekerja tetapi aplikasi lain gagal
Tidak semua aplikasi mendukung proxy sistem. Beberapa aplikasi:
6. Internet lambat setelah menggunakan proxy
Periksa:
-
penggunaan CPU;
-
RAM;
-
disk;
-
DNS;
-
access log;
-
ukuran cache;
-
kecepatan NIC;
-
dan jumlah koneksi.
Perintah:
top
free -h
df -h
ip -s link
7. IP client tidak terlihat pada transparent proxy
Hal ini dapat terjadi karena source NAT digunakan agar jalur balik melewati MikroTik. Gunakan subnet server terpisah untuk mempertahankan alamat sumber client dengan desain routing yang lebih baik.
Kapan Menggunakan Web Proxy MikroTik?
Web Proxy MikroTik cocok digunakan untuk:
Web Proxy MikroTik kurang cocok untuk:
Kapan Menggunakan Squid Ubuntu Server?
Squid lebih tepat digunakan ketika:
-
jumlah pengguna lebih banyak;
-
diperlukan log terpusat;
-
diperlukan autentikasi;
-
dibutuhkan ACL yang lebih fleksibel;
-
diperlukan kelompok pengguna;
-
server mempunyai penyimpanan lebih besar;
-
proxy harus dipisahkan dari router;
-
dan administrator ingin mengembangkan monitoring lebih lanjut.
Perbandingan Web Proxy MikroTik dan Squid
| Aspek |
MikroTik Web Proxy |
Squid Ubuntu |
| Instalasi |
Sudah tersedia di RouterOS |
Memerlukan Ubuntu Server |
| Pengelolaan |
Sederhana |
Lebih kompleks |
| Beban perangkat |
Membebani router |
Ditangani server khusus |
| ACL |
Dasar |
Lebih fleksibel |
| Autentikasi |
Terbatas |
Lebih lengkap |
| Logging |
Terbatas oleh router |
Lebih mudah disimpan |
| Kapasitas cache |
Bergantung RouterBoard |
Bergantung server |
| Skalabilitas |
Jaringan kecil |
Jaringan menengah-besar |
| Praktikum pemula |
Sangat cocok |
Cocok setelah memahami dasar |
| Jaringan produksi |
Terbatas |
Lebih direkomendasikan |
Rekomendasi Implementasi untuk Sekolah
Arsitektur yang disarankan adalah:
Internet
|
MikroTik
|
+-- VLAN Guru
|
+-- VLAN Siswa
|
+-- VLAN Server
|
Ubuntu Squid
MikroTik menangani:
-
pemisahan VLAN;
-
routing;
-
DHCP;
-
hotspot;
-
firewall;
-
NAT;
-
queue;
-
dan akses antarjaringan.
Squid menangani:
Tambahkan:
Contoh Kebijakan Akses Sekolah
Guru
-
dapat menggunakan internet melalui Squid;
-
akses dicatat;
-
tidak dibatasi oleh daftar siswa;
-
tetap dibatasi terhadap situs berbahaya.
Siswa
-
wajib menggunakan proxy;
-
akses hanya pada jam pembelajaran;
-
domain tertentu dapat diblokir;
-
aktivitas dicatat sesuai kebijakan sekolah;
-
aplikasi yang dibutuhkan pembelajaran dimasukkan ke daftar pengecualian.
Administrator
-
dapat mengelola MikroTik;
-
dapat mengelola Ubuntu Server;
-
dapat membaca log sesuai kewenangan;
-
bertanggung jawab terhadap keamanan data log.
Tamu
-
menggunakan jaringan atau VLAN terpisah;
-
tidak boleh mengakses proxy internal tanpa izin;
-
tidak dapat mengakses jaringan server.
Etika dan Privasi Penggunaan Proxy
Proxy memungkinkan administrator mencatat aktivitas jaringan. Kemampuan tersebut harus digunakan secara bertanggung jawab.
Organisasi sebaiknya:
-
Memberi tahu bahwa akses internet dicatat.
-
Menjelaskan tujuan pencatatan.
-
Membatasi akses ke log.
-
Menentukan masa penyimpanan log.
-
Tidak menggunakan log untuk kepentingan pribadi.
-
Melindungi identitas pengguna.
-
Membuat prosedur ketika terjadi pelanggaran.
-
Menyesuaikan kebijakan dengan aturan yang berlaku.
-
Menghindari pemeriksaan isi komunikasi pribadi tanpa dasar.
-
Menggunakan monitoring hanya untuk keamanan dan operasional.
Proxy bukan alat untuk mengintip pengguna. Proxy adalah alat pengelolaan jaringan yang harus diterapkan dengan prinsip keamanan, transparansi, dan proporsionalitas.
Kesimpulan
Proxy masih relevan di era modern, tetapi bukan lagi sekadar alat untuk mempercepat akses halaman web.
Peran proxy saat ini lebih berfokus pada:
Web Proxy MikroTik cocok digunakan sebagai media pembelajaran dan untuk jaringan kecil. Fitur tersebut membantu siswa memahami bagaimana permintaan HTTP dapat diarahkan, diperiksa, diizinkan, atau ditolak.
Untuk jaringan yang lebih besar, Squid pada Ubuntu Server lebih tepat karena mempunyai kemampuan ACL, logging, autentikasi, pengelompokan pengguna, dan pengelolaan cache yang lebih fleksibel.
Arsitektur terbaik adalah memisahkan fungsi:
MikroTik:
Routing + Firewall + NAT + DHCP + VLAN + Bandwidth
Ubuntu Squid:
Proxy + ACL + Authentication + Logging + Filtering
Administrator juga harus memahami bahwa proxy biasa tidak dapat membaca isi HTTPS. Oleh karena itu, proxy perlu dipadukan dengan firewall, DNS filtering, segmentasi jaringan, endpoint security, dan kebijakan penggunaan internet.
Dengan konfigurasi yang tepat, kombinasi MikroTik dan Ubuntu Server dapat menjadi laboratorium pembelajaran jaringan yang lengkap sekaligus fondasi untuk membangun sistem pengendalian akses internet di sekolah maupun organisasi.
Pertanyaan Evaluasi
-
Apa yang dimaksud dengan proxy server?
-
Mengapa proxy masih relevan?
-
Jelaskan perbedaan firewall dan proxy.
-
Apa perbedaan forward proxy dan reverse proxy?
-
Apa perbedaan explicit proxy dan transparent proxy?
-
Mengapa port HTTPS tidak boleh langsung diarahkan ke Web Proxy HTTP?
-
Apa fungsi access rule pada Web Proxy MikroTik?
-
Apa fungsi Squid pada Ubuntu Server?
-
Mengapa proxy eksternal sebaiknya ditempatkan pada VLAN server?
-
Apa fungsi ACL dalam Squid?
-
Mengapa urutan http_access penting?
-
Apa fungsi http_access deny all?
-
Apa risiko membuka port proxy ke internet?
-
Apa fungsi access log Squid?
-
Jelaskan pembagian tugas antara MikroTik dan Ubuntu Server.
Tugas Praktik
Buatlah sistem proxy dengan ketentuan berikut:
-
MikroTik menjadi gateway internet.
-
Jaringan LAN menggunakan 192.168.10.0/24.
-
Ubuntu Server menggunakan IP 192.168.10.2.
-
Squid menggunakan port 3128.
-
Client menggunakan proxy secara explicit.
-
Hanya jaringan LAN yang boleh menggunakan Squid.
-
Buat daftar minimal tiga domain uji yang diblokir.
-
Aktifkan access log.
-
Buat firewall MikroTik untuk melindungi server.
-
Dokumentasikan topologi, konfigurasi, pengujian, dan hasilnya.
Tugas Pengembangan
Kembangkan praktikum dengan:
Konfigurasi di atas mengacu pada konsep Web Proxy RouterOS, NAT dan firewall MikroTik, serta instalasi dan ACL Squid. Dokumentasi MikroTik menyebut Web Proxy RouterOS menangani HTTP dan HTTP-proxy, sedangkan dokumentasi Ubuntu menjelaskan Squid sebagai layanan filtering dan caching yang dapat membantu optimasi bandwidth dan performa. (MikroTik Help)