NAT adalah pengalihan suatu alamat IP ke alamat yang lain. Dan apabila suatu paket dialihkan dengan NAT pada suatu link, maka pada saat ada paket kembali dari tujuan maka link ini akan mengingat darimana asal dari paket itu, sehingga komunikasi akan berjalan seperti biasa.
Kenapa orang-orang menggunakan NAT ?
- Koneksi Modem ke Internet.
Kebanyakan ISP akan memberikan satu alamat IP pada saat anda melakukan dial up ke internet. Anda dapat mengirim paket ke alamat mana saja yang anda inginkan tetapi balasannya hanya akan diterima oleh satu alamat IP yang anda miliki.Apabila anda ingin menggunakan banyak komputer seperti jaringan dalam rumah anda untuk terhubung dengan internet dengan hanya satu kink ini, maka anda membutuhkan NAT.
Cara ini adalah NAT yang paling umum digunakan sekarang ini, sering disebut sebagai masqurading. - Banyak Server
Terkadang anda ingin mengubah arah paket yang datang ke jaringan anda. Hal ini disebabkan anda hanya memiliki satu alamat IP, tapi anda ingin semua orang dapat mengakses komputer yang berada di belakang komputer yang memiliki alamat IP yang asli. Apabila anda dapat mengubah tujuan dari paket yang masuk, anda dapat melakukan ini.
Tipe NAT seperti ini disebut port-forwarding. - Transparent Proxy
Terkadang anda ingin seakan-akan setiap paket yang melewati komputer anda hanya ditujukan untuk komputer anda sendiri. Hal ini digunakan untuk membuat transparent proxy : Proxy adalah program yang berada di antara jaringan anda dan dunia luar, dan membuat keduanya dapat saling berkomunikasi. Bagian transparannya dikarenakan jaringan anda tidak akan mengetahui bahwa dia menggunakan proxy kecuali proxynya tidak bekerja.
Program squid dapat dikonfiguraasi untuk bekerja seperti ini, dan hal ini disebut redirection atau transparent proxy.
Dua Tipe NAT
NAT terdiri atas dua macam tipe: Source NAT (SNAT) dan Destination NAT (DNAT) Source NAT adalah ketika anda mengubah alamat asal dari paket pertama dengan kata lain anda merubah dari mana koneksi terjadi. Source NAT selalu dilakukan setelah routing, sebelum paket keluar ke jaringan. Masquerading adalah contoh dari SNAT.Destination NAT adalah ketika anda mengubah alamat tujuan dari paket pertama dengan kata lain anda merubah ke mana komunikasi terjadi. Destination NAT selalu dilakukan sebelum routing, ketika paket masuk dari jaringan. Port forwarding, load sharing dan transparent proxy semuanya adalah bentuk dari DNAT.
Menggunakan NAT di Linux
Untuk membuat NAt anda harus membuat aturan NAT yang akan memberitahu kernel koneksi apa yang harus diubah. Untuk ini kita menggunakan tool iptables dan membuatnya untuk mengubah tabel NAT dengan memberikan option "-t nat".Tabel aturan NAT berisi 3 bagian yang disebut "chain", setiap aturan akan diperiksa secara berurutan sampai ada satu yang tepat. Kedua chain disebut PREROUTING (untuk Destination NAT, ketika paket pertama kali masuk), dan POSTROUTING (untuk Source NAT, ketika paket pergi). Yang ketiga, OUTPUT akan diabaikan. Tabel di bawah akan menggambarkannya :
_____ _____ / \ / \ PREROUTING -->[Routing ]----------------->POSTROUTING-----> \D-NAT/ [Decision] \S-NAT/ | ^ | | | | | | | | | | | | --------> Local Process ------Pada setiap node di atas, ketika paket melewati kita melihat koneksi apa yang diasosiasikan dengannya. Apabila hal itu adalah koneksi yang baru, kita melihat chain pada tabel nat yang berperan untuk mengetahui apa yang akan kita lakukan dengan paket tersebut.
Source NAT
Untuk melakukan Source NAT anda harus merubah asal dari koneksi. Hal ini dilakukan di chain POSTROUTING, pas sebelum keluar. Hal ini sangat penting, dikarenakan berarti tools lain yang di dalam router itu (routing, packet filtering) akan melihat paket itu tidak berubah. Hal ini juga berarti opsi '-o' (outgoing interface) juga bisa digunakan.Source dispesifikasikan dengan menggunakan '-j SNAT', dan juga opsi '--to-source' untuk menspesifikasikan sebuah alamat IP, range alamat IP dan port atau range port (hanya untuk protokol UDP dan TCP) yang sifatnya optional.
Mengubah alamat asal ke 1.2.3.4
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4
Mengubah alamat asal ke 1.2.3.4, 1.2.3.5, or 1.2.3.6
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4-1.2.3.6
Mengubah alamat asal ke 1.2.3.4, port 1-1023
# iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to 1.2.3.4:1-1023
Masquerading
Terdapat kasus yang khusus untuk Source NAT yang disebut masquerading, sebaiknya hanya digunakan untuk alamat IP yang dinamik, seperti menggunakan dialup secara standar (untuk alamat IP yang statis, gunakan SNAT si atas). Anda tidak perlu menempatkan alamat asal apabila anda menggunakan masquerading, dikarenakan alamat asal akan memakai alamat dari interface tempat paket itu keluar. Hal ini akan memudahkan apabila ada penggantian alamat IP dari interface tersebut, sehingga keslaahan da[at dihindari.Masquerade semua paket yang keluar dari ppp0
# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Destination NAT
Destination NAT dilakukan pada chain PREROUTING, pas ketika paket masuk, hal ini berarti semua tools di dalam router akan melihat paket akn pergi ke tujuan yang sebenarnya . Hal ini juga berarti bahwa opsi '-i' (incoming interface) bisa digunakan.Destination NAT dispesifikasikan dengan menggunakan '-j DNAT' dan opsi '--to-destination' menspesifikasikan sebuah alamat IP, range alamat IP dan range dari port (hanya untuk protokol UDP dan TCP) yang sifatnya optional.
Merubah alamat tujuan ke 5.6.7.8
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8
Merubah alamat tujuan ke 5.6.7.8, 5.6.7.9, or 5.6.7.10
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to 5.6.7.8-5.6.7.10
Merubah alamat tujuan dari lalu lintas web ke 5.6.7.8 port 8080
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to 5.6.7.8:8080
Redirection
Terdapat kasus khusus dari Destination NAT yang disebut redirection. Redirection adalah pengarahan dari paket yang masuk dari posrt tertentu diarahkan ke port lain, dimana setiap port menandakan aplikasi jaringan yang berbeda.Mengirim dari port 80 lalu lintas web ke squid (transparent) proxyDalam hal ini squid harus dikonfigurasi sehingga dia tahu paket yang masuk adalah transparent proxy.
# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
Contoh Penggunaan NAT Pada MikroTik
Source NATJika ingin menyembunyikan jaringan private LAN kita dengan alamat IP 192.168.2.0/24 dibelakang satu alamat IP 110.137.17.43 yang diberikan oleh ISP, kita dapat menggunakan fitur source NAT dengan action masquerade. Masquerade akan mengubah alamat IP dan port asal (source port) dari paket yang berasal dari jaringan 192.168.2.0/24 ke alamat IP 110.137.17.43 sebelum paket keluar dari router.
Contoh aturan yang dapat kita pakai adalah seperti ini:
/ip firewall nat add chain=srcnat action=masquerade out-interface=public
Seluruh koneksi yang keluar dari jaringan 192.168.2.0/24 akan memiliki satu alamat IP yang sama yaitu 110.137.17.43 dan asal port diatas 1024.
Destination NAT
Jika kita ingin menghubungkan satu alamat IP lokal 192.168.2.30 agar dapat diakses dari jaringan internet melalui IP publik 110.137.17.43, maka kita dapat menggunakan fitur destination NAT.
Pertama tambahkan dulu IP address publik ke interface publik:
/ip address add address=110.137.17.43/32 interface=publik
Lalu buat aturan dengan destination NAT yang memungkinkan server internal dapat diakses:
/ip firewall nat add chain=dstnat dst-address=110.137.17.43 action=dst-nat to-address=192.168.2.30
Kebalikannya buat juga aturan yang memungkinkan server internal dapat berbicara dengan jaringan luar yang akan diterjemahkan ke IP 110.137.17.43:
/ip firewall nat add chain=srcnat src-address=192.168.2.30 action=src-nat to address=110.137.17.43
Nah, dengan begini setiap paket yang menuju jaringan lokal melalui alamat IP publik 110.137.17.43 akan dialihkan ke alamat IP lokal 192.168.2.30. Begitu juga sebaliknya setiap paket yang berasal dari alamat IP lokal 192.168.2.30 akan diganti dengan alamat IP publik 110.137.17.43, jadi IP publik yang akan meneruskan paket dari 192.168.2.30 ke jaringan internet.
Mapping 1:1
Jika kita ingin menghubungkan IP publik dengan subnet 11.11.11.0/24 ke lokal dengan subnet 192.168.2.0/24, kita dapat menggunakan destination NAT dengan action netmap.
Berikut contoh penggunaannya:
/ip firewall nat add chain=dstnat dst-address 11.11.11.0/24 action=netmap to-address=192.168.2.0/24
/ip firewall nat add chain=srcnat dst-address 192.168.2.0/24 action=netmap to address=11.11.11.0/24
Port Mapping
Kita juga dapat mengalihkan permintaan port tertentu ke server internal di dalam jaringan. Atau hal ini sering disebut dengan membuka port:
Berikut caranya:
/ip firewall nat add chain=dstnat protocol=tcp dst-port=80 in-interface=local action=dst-nat to-address=192.168.3.1 to-port=80
Perintah diatas akan mengalihkan semua paket yang menuju port 80 dengan protokol tcp yang masuk melalui interface local ke alamat IP 192.168.3.1 port 80.