Konfigurasi Iptables untuk Redirect Paket HTTP ke Proxy di Mesin Lain

Dapatkan update terbaru Linuxku.com di kanal Telegram https://telegram.me/linuxkudotcom.

Saya baru-baru ini mengalami suatu kasus yang cukup membuat saya harus sedikit memutar otak. Gara-garanya seperti ini, seperti yang kalian tahu kalau kita mempunyai sebuah proxy server dan menginginkan agar seluruh client yang browsing ke internet harus melewati proxy server terlebih dahulu adalah dengan mengetikkan perintah berikut ini :

# iptables -t nat -A PREROUTING -j REDIRECT -p tcp –dport 80 –to-ports 3128

Cara diatas itu memang selalu berhasil apabila topologinya adalah seperti ini :

internet—–router+proxy—-client

Nah, bagaimana jika topologinya adalah sebagai berikut ? :

internet—–(eth2)router(eth0)—-(172.16.20.0/24)client
(eth1:192.168.20.1)
|
|
(192.168.20.2)
proxy


Tentunya jika kita masih menggunakan perintah Iptables yang pertama tadi, tidak akan ada efeknya. Karena disitu diperintahkan agar seluruh akses ke port 80 akan dialihkan langsung ke port 3128. Padahal di router tidak ada port 3128, karena port 3128 milik proxy berada di mesin yang lain, yaitu di pc server. Nah, solusinya bagaimana? Caranya adalah sebagai berikut :

# iptables -A FORWARD -m state –state NEW,RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -p tcp -d 192.168.20.2 –dport 3128 -j ACCEPT
# iptables -t nat -A PREROUTING -p tcp -s 172.16.20.0/24 –dport 80 -j DNAT –to 192.168.20.2:3128
# iptables -t nat -A POSTROUTING -p tcp -d 192.168.20.2 –dport 3128 -j MASQUERADE
# iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE

Sekarang coba tes, seluruh aliran data yang menuju port 80 pasti akan dialihkan terlebih dahulu menuju PC Server baru diarahkan kembali ke internet.

Semoga bermanfaat 🙂

Yakin Ngga Mau Diskusi ?

Yuk diskusi cerdas. Gunakan nama asli agar komentar Anda disetujui.