Mengatasi IPTables NAT Prerouting Tidak Bekerja Pada Localhost

Posted by

Beberapa waktu lalu saya memiliki kendala disalah satu server klien, kendalanya berkaitan dengan firewall iptables. Di server tersebut terdapat beberapa port forwarding didalamnya. Port forwarding ini biasanya saya gunakan untuk memanipulasi port service yang ada pada sistem, misal port SMTP default 25, saya ingin ubah agar bisa pakai port lain juga, misal 12025, maka contoh asumsi konfigurasi pada iptables seperti berikut

iptables -t nat -A PREROUTING -p tcp --dport 12025 -j DNAT --to 127.0.0.1:25

Dengan menggunakan rule iptables diatas, client yang berada diluar localhost server, bisa terkoneksi ke port 12025 server saya. Namun rule tersebut ada sedikit kendala, dimana jika diakses dari jaringan localhost server, misal di test telnet localhost port 12025, muncul pesan “Connection Refused“.  Usut punya usut, ternyata Chain Prerouting yang ada pada iptables tidak bekerja untuk jaringan localhost. Bagaimana mengatasi hal tersebut?

Untuk menyelesaikan masalah tersebut, kita bisa gunakan Chain OUTPUT bersamaan dengan Chain PREROUTING yang sebelumnya. Cukup jalankan perintah iptables berikut

iptables -t nat -A OUTPUT -p tcp --dport 12025 -j DNAT --to 127.0.0.1:25

Setelah dijalankan iptables tersebut, server saya saat ini sudah bisa koneksi ke port 12025 dari jaringan localhost server itu sendiri.

Cara ini biasa dilakukan jika misal kita memiliki Reverse Proxy, dan Reverse Proxy tersebut masuk juga ke dalam list server backend yang di setup.

Mungkin cukup sekian, semoga bermanfaat.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.