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 :)
No comments:
Post a Comment