3.6.1 Katakteristik NAT
IPv4 Private Address
Private Internet Addresses didefinisikan di dalam RFC 1918.
- Class A = 10.0.0.0 – 10.255.255.255
- Class B = 172.16.0.0 – 172.31.255.255
- Class C = 192.168.0.0 – 192.168.255.255
Alamat privat harus ditranslasikan ke alamat publik terlebih dahulu. NAT menyediakan translasi dari alamat privat ke alamat publik.
Apa itu NAT?
NAT memiliki banyak penggunaan, tetapi utamanya digunakan untuk melestarikan alamat publik IPv4. NAT-enabled router dapat dikonfigurasi dengan satu alamat IPv4 publik atau lebih. Alamat-alamat publik tersebut dinamakan NAT pool. Sebuah NAT router beroperasi pada batas luar dari sebuah stub network. Stub network adalah satu jaringan atau lebih dengan sebuah koneksi tunggal yang menghubungkan dengan neighboring network, satu jalur masuk dan satu jalur keluar.
Terminologi NAT
NAT mencakup 4 alamat :
- Inside local address
- Inside global address
- Outside local address
- Outside global address
Ketika menentukan jenis alamat apa yang digunakan, maka penting untuk mengingat bahwa terminologi NAT adalah selalu diaplikasikan dari perspektif perangkat yang alamatnya ditranslasikan:
- Inside address = alamat perangkat yang ditranslasikan oleh NAT.
- Outside address = alamat perangkat tujuan.
NAT juga menggunakan konsep local atau global yang berhubungan dengan :
- Local address = alamat yang berada pada jaringan dalam.
- Global address = alamat yang berada pada jaringan luar.
3.6.2 Tipe NAT
Static NAT
Static NAT menggunakan mapping one-to-one pada alamat lokal dan global. Static NAT secara khusus berguna untuk web server atau perangkat-perangkat yang harus memiliki konsistensi pada alamat yang dapat diakses dari internet.
Contoh :
- 192.168.10.10 ==> 209.165.200.226
- 192.168.10.11 ==> 209.165.200.227
- 192.168.10.12 ==> 209.165.200.228
Dynamic NAT
Dynamic NAT menggunakan sebuah pool alamat publik dan menentukan dengan cara first-come, first-served. Ketika sebuah inside device meminta akses ke jaringan luar, dynamic NAT memberikan sebuah alamat publik yang tersedia dari pool.
Contoh :
- 192.168.10.10 ==> 209.165.200.226
- Available ==> 209.165.200.227
- Available ==> 209.165.200.228
- Available ==> 209.165.200.229
- Available ==> 209.165.200.230
Port Address Translation
Port Address Translation (PAT) juga dikenal dengan NAT overload, memetakan beberapa alamat IP privat ke sebuah atau beberapa alamat IP publik. NAT overload umum digunakan pada jaringan rumah dan enterprise. Beberapa alamat dapat dipetakan menajdi satu atau beberapa alamat, karena masing-masing alamat privat dilacak menggunakan port number.
Ketika sebuah perangkat menginisiasi sebuah session TCP/IP, perangkat tersebut menghasilkan sebuah source port number TCP atau UDP, atau sebuah query ID untuk ICMP untuk mengidentifikasi session secara unik. Ketika sebuah NAT router menerima sebuah packet dari client, NAT router menggunakan source port number untuk mengidentifikasi sebuah translasi NAT yang spesifik secar unik.
PAT memastikan bahwa sebuah perangkat menggunakan sebuah TCP port number yang berbeda untuk masing-masing session dengan sebuah server pada internet. Ketika sebuah respon datang dari server, maka source port number menjadi destination port number untuk router mem-forward packet. PAT juga memvalidasi packet yang datang adalah packet yang sebelumnya di-request.
Next Available Port
PAT menyimpan dan menjaga source port. Jika source port sudah digunakan, PAT menentukan available port number mulai dari awal port group, yaitu 0-511, 512-1023, dan 1024-65535. Ketika tidak ada lagi port yang available dan terdapat alamat eksternal lain di dalam pool, PAT mengarahkan source port ke alamat tersebut.
Proses ini berlanjut sampai tidak tersedia port dan alamat eksternal lagi. Ketika packet kembali dari jaringan luar, jika source port number sebelumnya dimodifikasi oleh NAT-enabled router, destination port number akan dikembalikan ke port number asli.
Perbandingan NAT dan PAT
- NAT
- Mapping one-to-one diantara alamat Inside Local dan Inside Global.
- Hanya menggunakan alamat IPv4 di dalam proses tranlasi.
- Sebuah alamat Inside Global unik dibutuhkan untuk masing-masing host.
- PAT
- Satu Inside Global address dapat dipetakan untuk banyak Inside Local address.
- Menggunakan alamat IPv4 dan source port TCP atau UDP di dalam proses translasi.
- Sebuah Inside Global address unik dapat dibagi untuk banyak host.
PAT mentranslasikan kebanyakan protokol umum yang dibawa oleh IPv4 yang tidak menggunakan TCP atau UDP sebagai sebuah protokol transport layer. ICMPv4 query messages, echo request, dan echo repy memiliki sebuah Query ID. ICMPv4 menggunakan Query ID untuk mengidentifikasi sebuah echo request dan echo reply.
Nilai Query ID akan bertambah sesuai dengan echo request yang terkirim. PAT menggunakan Query ID, bukan menggunakan port number pada Layer 4.
3.6.3 Kelebihan dan Kekurangan NAT
Kelebihan NAT
Dengan menggunakan NAT overload (PAT), internal host dapat berbagi satu IP publik untuk semua komunikasi eksternal. Untuk dapat memastikan koneksi dapat diandalkan, dapat menggunakan multiple pool, backup pool dan load-balancing pool.
NAT menyediakan konsistensi untuk skema pengalamatan jaringan. Pada sebuah jaringan yang tidak menggunakan alamat IP privat dan NAT, mengganti skema pengalamatan dengan IP publik membutuhkan pengalamatan di semua host dalam jaringan.
NAT menyembunyikan IP address pada user dan perangkat lain. Beberapa orang mempertimbangkan fitur keamanan ini. Bagaimanapun juga, kebanyakan pakar setuju bahwa NAT tidak menyediakan keamanan. Sebuah stateful firewall dibutuhkan untuk menyediakan kemanan pada ujung jaringan.
Kekurangan NAT
NAT meningkatkan delay pada saat forwarding karena translasi pada masing-masing alamat IPv4 di dalam packet header membutuhkan waktu. Paket pertama selalu process-switched melalui path paling lambat. Router harus melihat setiap packet untuk menentukan apakah perlu untuk dilakukan translasi.
Delay saat forwarding disebabkan oleh proses NAT menjadi lebih dari sebuah masalah seperti pool pada IP publik untuk ISP yang semakin habis. Banyak ISP yang harus memberikan IP privat ke konsumen, bukannya IP publik.
Router konsumen mentranlasikan packet dari IP privat-nya ke IP privat milik ISP. Sebelum melakukan forwarding packet ke provider lain, ISP akan melakukan NAT lagi. Proses dua kali translasi pada NAT ini disebut dengan Carrier Grade NAT (CGN).
Kekurangan yang lain dari NAT adalah pengalamatan end-to-end hilang. Hal ini disebut dengan prinsip end-to-end. Banyak protokol dan aplikasi bergantung pada pengalamatan end-to-end dari source ke destination. Beberapa aplikasi tidak bekerja dengan NAT. Contohnya, beberapa aplikasi security, seperti digital signature, tidak jalan karena source address berganti ketika mencapai destination.
End-to-end IPv4 traceability juga hilang. Hal tersebut menjadi lebih sulit untuk melakukan trace pada packet yang mengalami banyak perubahan pada alamat packet ketika melalui banyak hops NAT dan membuat troublehsooting lebih menantang.
Menggunakan NAT juga membuat penggunaan protokol tunneling menjadi rumit, seperti IPsec, karena NAT memodifikasi nilai pada header yang menyebabkan integrity check gagal.
Service-service yang membutuhkan inisiasi pada koneksi TCP dari jaringan luar, atau stateless protocol, seperti penggunaan UDP dapat terganggu.
3.6.4 Static NAT
Skenario Static NAT
Konfigurasi Static NAT
- Mapping di antara inside local address dan inside global address.
$ ip nat inside source static 192.168.10.254 109.165.201.5
2. Konfigurasi interface.
$ int s0/1/0
$ ip add 192.168.1.2 255.255.255.252
$ ip nat inside
$ int s0/1/1
$ ip add 209.165.200.1 255.255.255.252
$ ip nat outside
Menganalisa Static NAT
- Client mengirimkan packet menuju web server dengan alamat tujuan 209.165.201.5. Ini adalah Inside Global Address.
- Packet pertama yang diterima oleh R2 yang berasal dari client diperiksa pada NAT table. Destination 209.165.201.5 berada pada NAT table dan ditranslasikan ke 192.168.10.254.
- R2 menggnati inside global address pada 209.165.201.5 dengan inside local address pada 192.168.10.254. Kemudian R2 mem-forward packet ke web server.
- Web server menerima packet dan merespon ke client menggunakan inside local address 192.168.10.254.
- (a) R2 menerima packet dari web server pada NAT inside interface dengan source address pada inside local address pada web server, 192.168.10.254.
(b) R2 memeriksa NAT table untuk translasi inside local address. Alamat ditemukan di dalam tabel NAT. R2 men-translate 192.168.10.254 ke inside global address 209.165.201.5 dan mem-forward packet ke client. - Client menerima packet dan meneruskan conversation. Router NAT melakukan langkah ke-2 sampai dengan ke-4 untuk masing-masing packet.
Verifikasi Static NAT
$ show ip nat translations
$ show ip nat statistics
3.6.5 Dynamic NAT
Skenario Dynamic NAT
Static NAT membuat sebuah mapping permanen ke alamat tunggal, dynamic NAT menggunakan sebuah pool. Pool IP publik (inside global address pool) tersedia ke banyak perangkat pada inside network dengan cara first-come first-served.
Dengan dynamic NAT, sebuah inside address tunggal ditranslasikan ke sebuah single outside address. Jika semua alamat pada pool telah digunakan, sebuah perangkat harus menunggu ketersediaan alamat sebelum dapat mengakses jaringan luar.
Translasi di antara IP publik dan privat sejauh ini adalah yang paling umum digunakan. Bagaimanapun juga, translasi NAT dapat terjadi di antara pasangan IPv4 address.
Konfigurasi Dynamic NAT
$ ip nat pool NAT-POOL1 209.165.200.226 209.165.200.240 netmask 255.255.255.224
$ access-list 1 permit 192.168.0.0 0.0.255.255
$ ip nat inside source list 1 pool NAT-POOL1
$ int s0/1/0
$ ip nat inside
$ int s0/1/1
$ ip nat outside
Mengalisa Dynamic NAT – Inside ke Outside
- PC1 and PC2 mengirimkan request koneksi ke server dengan alamat 209.165.200.254.
- R2 menerima packet pertama dari host 192.168.10.10. Karena packet ini diterima dari interface yang dikonfigurasi sebagai inside NAT interface, R2 memeriksa konfigurasi NAT untuk menentukan jika packet ini harus ditranslasikan. ACL mengizinkan packet ini, jadi R2 akan mengtranslate packet. R2 memeriksa tabel NAT. karena saat ini tidak ada translation entry untuk alamat ini, R2 menentukan bahwa 192.168.10.10 harus ditranslasikan. R2 memilih sebuah global address yang tersedia dari pool dan membuat sebuah translation entry, 209.165.200.226.
Source address asli 102.168.10.10 adalah inside local address dan inside global address adalah 209.165.200.226 di dalam tabel NAT. Untuk PC2, prosesnya sama dengan PC1. PC2 akan menggunakan global address yang tersedia, yaitu 209.165.200.227. - R2 mengganti inside local address pada PC1, 192.168.10.10, dengan inside global addess 209.165.200.226 dan mem-forward packet. Proses yang sama juga terjadi ketika packet datang dari PC2.
Menganalisa Dynamic NAT – Outside ke Inside
- Server menerima packet dari PC1 dan merespon menggunakan alamat 209.165.200.226. Ketika server menerima packet kedua, server merespon PC2 menggunakan 209.165.200.227.
- (a) ketika R2 menerima packet dengan destination 209.165.200.226, R2 melakukan lookup pada tabel NAT. Dengan mapping yang ada pada tabel NAT, R2 mentranslasikan kembali ke inside local address 192.168.10.10 dan mem-forward packet ke PC1.
(b) ketika R2 menerima packet dengan destination 209.165.200.227, R2 melakukan lookup pada tabel NAT. Dengan mapping yang ada pad tabel NAT, R2 mentranslasikan kembali ke inside local address 192.168.10.11 dan mem-forward packet ke PC2. - PC1 dan PC2 menerima packet dan melanjutkan conversation. Router melakukan langkah ke-2 sampai dengan ke-5 untuk masing-masing packet.
Verifikasi Dynamic NAT
$ sh ip nat translations
$ sh ip nat translations verbose
$ clear ip nat translations *
$ sh ip nat statistics
$ sh run | inc NAT
3.6.6 PAT
Skenario PAT
Ada dua cara mengkonfigurasi PAT, tergantung bagaimana ISP mengalokasikan alamat publik IPv4. ISP mengalokasikan satu atau beberapa alamat publik pada sebuah organisasi untuk terhubung ke ISP.
Konfigurasi PAT untuk Menggunakan Satu Alamat IPv4
$ ip nat inside source list 1 interface serial 0/1/1 overload
$ access-list 1 permit 192.168.0.0 0.0.255.255
$ int s0/1/0
$ ip nat inside
$ int s0/1/1
$ ip nat outside
Konfigurasi PAT untuk Menggunakan Sebuah Address Pool
$ ip nat pool NAT-POOL2 209.165.200.226 209.165.200.240 netmask 255.255.255.224
$ access-list 1 permit 192.168.0.0 0.0.255.255
$ ip nat inside source list 1 pool NAT-POOL2 overload
$ int s0/1/0
$ ip nat inside
$ int s0/1/1
$ ip nat outside
Menganalisa PAT – PC ke Server
- Masing-masing PC1 dan PC2 mengirimkan packet Svr1 dan Svr2. Pc1 memiliki source address 192.168.10.10 dan menggunakan TCP source port 1444. PC2 memiliki source address 192.168.10.11 dan kebetulan menggunakan TCP source port yang sama yaitu 1444.
- Packet dari PC1 sampai pada R2 terlebih dahulu. Menggunakan PAT, R2 memodifikasi source addess ke 209.165.200.225 (inside global address). Tidak ada perangkat yang menggunakan port 1444 di dalam tabel NAT, jadi NAT menggunakan port tersebut untuk PC1. Kemudian packet diteruskan ke Svr1.
- Kemudian, packet dari PC2 sampai pada R2. PAT dikonfigurasi untuk menggunakan sebuah inside global address, yaitu 209.165.200.225. Mirip dengan proses pada PC1, PAT mengganti source IP address pada PC2 dengan alamat 209.165.200.225. PC2 memiliki source address yang sama dengan entry yang sudah ada, yaitu PC1. PAT menaikkan source port number sampai memiliki nilai yang unik pada tabel. Pada contoh ini, source port di dalam tabel NAT untuk PC2 adalah 1445.
Menganalisa PAT – Server ke PC
- Server menggunakan source port dari packet yang diterima sebagai destination port, dan source address sebagai destination address untuk trafik kembali. Server terlihat seakan-akan berkomunikasi dengan host yang sama pada 209.165.200.225.
- Saat packet tiba, R2 menempatkan entry yg unik di dalam tabel NAT menggunakan destination address dan destination port pada masing-masing packet. Pada kasus packet dari Svr1, destination address 209.165.200.225 memiliki entry lebih dari satu tetapi hanya satu dengan desination port 1444. Menggunakan entry ini, R2 mengganti destination address dari packet ke 192.168.10.10 dengan tidak mengganti desination port. Kemudian packet di-forward ke PC1.
- Ketika packet dari Svr2 sampai, R2 melakukan translasi yang mirip. Desination address 209.165.200.225 dimasukan entry. Bagaimanapun juga, menggunakan desination port 1445, R2 mampu mengidentifikasi secara unik pada entry. Desitination address diganti ke 192.168.10.11. Pada kasus ini, destination port harus diganti lagi ke nilai asli yaitu 1444, dimana disimpan pada tabel NAT. Kemudian packet di-forward ke PC2.
Verifikasi PAT
$ sh ip nat translations
$ sh ip nat statistics
3.6.7 NAT64
NAT untuk IPv6
Karena banyak network menggunakan baik IPv4 dan IPv6, maka harus ada cara untuk menggunakan IPv6 dengan NAT. IPv6 dikembangkan dengan tujuan membuat NAT yang mentranslasi IP publik dan privat tidak lagi dibutuhkan. Bagaimanapun juga, IPv6 memiliki space untuk private address-nya sendiri, Unique Local Addresses (ULAs). IPv6 menyediakan protokol translasi di antara IPv4 dan IPv6 yang disebut dengat NAT64.
NAT64
NAT untuk IPv6 kebanyakan digunakan dalam konteks yang berbeda dari NAT untuk IPv4. Variasi NAT untukIPv6 digunakan untuk menyediakan akses yang transparan di antara network IPv6-only dan IPv6-only. IETF mengembangkan beberapa teknik translasi untuk mengakomodiasi sebuah variasi pada skenario IPv4-ke-IPv6, termasuk dual-stack, tunneling, dan translation.
Dual-stack digunakan ketika perangkat-perangkat menjalankan protokol IPv4 dan IPv6. Tunneling untuk IPv6 adalah proses enkapsulasi sebuah packet IPv6 di dalam sebuah packet IPv4. Hal ini memungkinkan packet IPv6 untuk dikirimkan melalui sebuah jaringan IPv4. NAT untuk IPv6 harusnya tidak digunakan sebagai strategi jangka panjang, tetapi sebuah sebuah mekanisme sementara untuk membantu proses migrasi dari IPv4 ke IPv6.