NAT, Network Address Translation, adalah salah satu metode untuk mengakali terbatasnya IP address. Kita ketahui, private IP address tidak bisa bebas berselancar di dunia internet, karena IP private tidak bisa diadvertise oleh router ke dunia maya, untuk mengakalinya digunakanlah NAT, dimana satu IP address publik bisa dimanfaatkan sebagai sebuah gateway untuk beberapa mesin/device ber IP address private.
Berikut konfigurasi FreeBSD yang digunakan sebagai gateway NAT, requirement awal, mesin FreeBSD ini memiliki 2 buah network card, yang satu di assign dengan sebuah IP publik, dan yang satu lagi di assign ip private sebagai default gateway dari mesin-mesin yang ada dibawahnya.
misal konfigurasi awal interface-interface nya :
lnc0 (ip public) : 167.205.34.10 netmask 255.255.254.0 default gateway 167.205.34.1 (ISP)
lnc1 (ip private) : 192.168.1.1 netmask 255.255.255.0
Kompile ulang kernel FreeBSD dengan opsi yang mendukung firewall dan nat
[root@pekok]/# cd /usr/src/sys/i386/conf
[root@pekok]/# cp GENERIC NATKERNEL
[root@pekok]/# vim NATKERNEL
tambahkan line berikut dalam file NATKERNEL
#untuk dukungan ipfw
options IPFIREWALL
options IPFIREWALL_VERBOSE
#untuk dukungan ip6fw
options IPV6FIREWALL
options IPV6FIREWALL_VERBOSE
#untuk dukungan NAT
options IPDIVERT
kompile kernel dengan konfigurasi yang baru kita buat
[root@pekok]/# /usr/sbin/config NATKERNEL
[root@pekok]/# cd ../compile/NATKERNEL
[root@pekok]/# make depend
[root@pekok]/# make
[root@pekok]/# make install
edit file /etc/rc.conf agar mesin FreeBSD otomatis meload dukungan firewall dan nat setiap kali di boot ulang
[root@pekok]/# vim /etc/rc.conf
tambahkan baris-baris berikut
##### enable ipfw
firewall_enable=”YES”
firewall_type=”open”
firewall_quiet=”NO”
##### natd
natd_enable=”YES”
natd_interface=”lnc0” *ganti lnc0 dengan nama card interface yang di assign ip public mis : fxp0
natd_flags=”-m”
reboot mesin, kemudian tes apakah servis nat berjalan dengan baik :
[root@pekok]/# ping -S 192.168.1.1 167.205.34.1
PING 167.205.34.1 (167.205.34.1) from 192.168.1.1: 56 data bytes
64 bytes from 167.205.34.1: icmp_seq=0 ttl=64 time=5.452 ms
64 bytes from 167.205.34.1: icmp_seq=1 ttl=64 time=2.559 ms
yep…
Komentar