Setting NAT Pada IPTABLES

Tips berikut ini untuk para newbie seperti saya yang frustasi mencari tutorial di Google tentang cara setting iptables dan NAT. Sebenarnya ada banyak situs web yang membahasa ini, tapi terlalu rinci dan bahasanya kelas dewa yang akhirnya membuat para newbie sakit kepala dan menggoda iman kita untuk meninggalkan Linux selama-lamanya lalu kembali ke Windows.

Apa itu iptables? Iptables adalah firewall sejuta umat yang nyaris ada di setiap distro Linux. Dengan firewall, kita bisa memblok port-port tertentu agar tidak bisa dimanfaatkan peretas (hacker) untuk membobol komputer kita. Tapi di samping itu, firewall juga bisa membuat komputer yang ada di LAN menjadi mampu membuka situs-situs web di internet padahal IP addressnya lokal, melalui server yang mempunyai IP address public. Server bertindak seolah-olah makelar yang mengatasnamakan komputer lokal. Inilah yang disebut NAT (Network Address Translation).

Oke. Tidak usah bertele-tele. Langsung saja ke studi kasus.

Misalkan kita mempunyai 1 komputer server dengan 2 ethernet card bernama eth0 dan eth1. Akses dari internet (luar) masuk ke eth0 sedangkan akses dari LAN masuk ke eth1. Komputer server bisa mengakses situs-situs web di internet melalui eth0 tapi komputer lokal yang terhubung ke eth1 tidak bisa mengakses internet. Sistem operasi CentOS 7.4.

Langkah 1: Backup file /etc/sysconfig/iptables-config

cp /etc/sysconfig/iptables-config /etc/sysconfig/iptables-config.bak

Langkah 2: Beritahu kernel bahwa kita ingin menerapkan IP forwarding.

echo 1 > /proc/sys/net/ipv4/ip_forward

Juga edit file /etc/sysctl.conf lalu ganti dari net.ipv4.ip_forward = 0 menjadi net.ipv4.ip_forward = 1.

sed -i "s/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g" /etc/sysctl.conf

Langkah 3: Beritahu iptables bahwa kita ingin mengizinkan komputer lokal agar bisa mengakses internet. Komputer server menjadi makelar (masquerade).

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT

Jangan lupa ganti eth0 dan eth1 dengan dengan nama ethernet yang sesuai. Di komputer server saya, namanya adalah enp1s0f0 dan enp1s0f1. Bila tidak yakin, ketik perintah ifconfig.

Langkah 4: Pada RedHat dan keturunannya (misalnya CentOS), perintah-perintah pada langkah 3 akan hilang saat komputer server direboot. Agar tidak hilang, maka edit ffile /etc/sysconfig/iptables-config lalu ganti parameter IPTABLES_MODULES_UNLOAD, IPTABLES_SAVE_ON_STOP, dan IPTABLES_SAVE_ON_RESTART dari “no” menjadi “yes”.

Langkah 5: Reload iptables agar setting yang telah dilakukan bisa diterapkan.

systemctl reload iptables

Selesai.
Langkah berikutnya adalah mensetting komputer lokal yang ada di LAN. Default gateway harus mengarah ke IP address eth1 milik komputer server.

Cobalah berikan perintah ini dari komputer lokal yang ada di LAN.

ping 8.8.8.8
ping google.com

Perintah pertama seharusnya bisa. Bila gagal, berarti ada yang salah pada setting NAT.
Bila perintah pertama sukses tapi perintah ke 2 gagal, berarti ada yang salah pada setting DNS. Ini di luar bahasan pada artikel ini.

Web Hosting

Leave a Reply