Thursday, December 29, 2011

Analogi IP Forwarding & (Source) NAT

December 29, 2011 Ade Sudaryana


Ane gy ngubek" google,, ekh ketemu ama artikel yang menurut ane menarik tentang IP Forwading & NAT yang dapat memudahkan kita dalam pemahamannya. ane juga udah izin ama yang punya artikel buat ngeshare artikel ini.

Asal Usulnya

Pada suatu hari, bertanyalah seorang teman kepada saya: "Gimana cara biar jaringan lokal kantorku bisa ngontak jaringan ip publik di kantor tanpa NAT?" Ya, memang seringkali susah mempelajari mekanisme routing ketika sebelum belajar sudah ngerti bahwa ada IP Privat dan ada IP Publik.
Di sini saya mencoba untuk menjelaskan dengan cara yang sedikit berbeda dengan penjelasan-penjelasan yang sudah ada di internet, yang jumlahnya sudah jutaan halaman itu. Semoga saja dengan cara ini, hubungan awal dan perbedaan antara IP Forwarding dengan Source NAT bisa lebih mudah dimengerti. Tentu saja, tulisan ini ditujukan untuk semua pemula yang ingin belajar tentang topik ini.
Harap diingat bahwa dalam cerita ini saya membuang beberapa detil yang seharusnya juga ada dalam proses routing. Detil itu saya hilangkan untuk mempermudah pemahaman hal-hal mendasar dalam operasi ini. Jangan pernah menerima cerita ini sebagai informasi utuh. Lengkapi dengan cerita/referensi lain yang membahas detilnya lebih dalam!

Suatu Desa dan Seorang Anak

Ilustrasi Kampungnya

Inilah peta kecamatan OtotKwat yang terletak di salah satu distrik di Negeri Kayangan.

Pada Suatu Hari...

Hiduplah keluarga bahagia di Desa Suka Nyapu. Keluarga itu memiliki seorang anak yang masih balita. Mereka menjalani kehidupan seperti biasa, hingga pada suatu hari sang ibu sakit flu. Karena pileknya tak tertahankan dan bapak sedang nun jauh di sana bekerja, maka ibu terpaksa minta tolong pada anaknya untuk membeli obat di toko obat Bu Jamilah yang terletak di Desa Suka Ngelap, walaupun sang anak sebenarnya tidak tahu jalan. Yang diketahui oleh anaknya hanyalah kalau mau keluar dari Desa Suka Nyapu, jalannya ya hanya itu saja.
Ibu berpesan kepada anaknya: "Nak, tolong belikan obat UsirPhileg di toko Bu Jamilah. Naik sepeda saja, nanti kalau sudah ketemu Pak Hasan tanyakan jalan ke Desa Suka Ngelap." Dan berangkatlah sang anak naik sepeda kecilnya. Klutak klutek klutik, akhirnya sang anak bertemu dengan Pak Hasan. Berkatalah sang anak kepada Pak Hasan: "Pak, saya mau ke toko obat Bu Jamilah di Desa Suka Ngelap. Saya lewat mana ya pak?" Dan Pak Hasan pun menjawab: "Belok kanan nak, nanti kamu akan sampai ke Desa Suka Ngelap."
Sesampainya di Desa Suka Ngelap di toko Bu Jamilah, anak itu kemudian membeli obat, dan menuju kembali pulang. Bertanyalah sang anak kepada Bu Jamilah: "Bu, kembali ke Desa Suka Nyapu lewat mana?" Dan dia memperoleh jawaban: "Lewat jalan yang tadi saja Nak, kemudian nanti kalau sudah ketemu Pak Hasan tanyakan saja jalan menuju Desa Suka Nyapu."
Klutak klutek klutik, bertemulah anak itu dengan Pak Hasan lagi. Kembali dia bertanya: "Pak, saya mau ke Desa Suka Nyapu lewat mana ya?" Jawaban yang diperoleh: "Belok kiri nak, nanti kau akan sampai kembali ke desamu." Akhirnya, dengan arahan Pak Hasan, sampailah sang anak ke desanya dengan membawa obat flu untuk ibunya yang sedang sakit.

Pada Hari Yang Lain...

"Ibu, aku ingin mandi, tapi sabunnya habis.. hiks.. hiks.." Sang ibu pun berkata kepada anaknya: "Ya beli dong nak, di Desa Suka Mandi pasti ada yang jual sabun." Tanpa basa-basi, sang anak langsung berangkat menuju Desa Suka Mandi. Dia tak merasa perlu bertanya kepada ibunya, karena toh jalan keluar dari desanya ya hanya itu, dan nanti dia bisa bertanya kepada Pak Hasan.
Sesampainya di tempat Pak Hasan, dia bertanya: "Pak, ke Desa Suka Mandi lewat mana ya?" Dan Pak Hasan pun menjawab: "Bapak tidak tahu, Nak, jadi kamu lurus saja dan nanti tanyakan ke Pak Amir." Berangkatlah dia mengikuti petunjuk Pak Hasan. Tak lama kemudian, sampailah dia ke tempat Pak Amir. Lagi-lagi dia menanyakan pertanyaan yang sebelumnya telah dia tanyakan ke Pak Hasan.Tapi di luar dugaan, Pak Amir berkata: "Jangan ke sana, Nak, pulanglah. Di sana sedang ada kerusuhan!" Tanpa patah semangat, sang anak terus-menerus mendesak agar boleh meneruskan perjalanan ke Desa Suka Mandi. Karena ternyata Pak Amir tak bergeming, maka pulanglah sang anak dengan kecewa. Dasar balita ndak tau jalan, ketika bertemu Pak Hasan, bertanya lagi dia tentang jalan pulangnya. Berkat petunjuk Pak Hasan, akhirnya dia sampai ke desanya dan kembali ke rumah.
Selang beberapa hari, kembali sang anak melanjutkan usahanya menuju Desa Suka Mandi. Dengan melalui jalan yang sama seperti beberapa hari sebelumnya, sampailah anak itu ke tempat Pak Amir. Karena keadaan sudah aman, berkatalah Pak Amir kepada anak itu: "Jalan terus saja nak, nanti bertanyalah kepada Pak Badri." Dengan riang gembira, berjalanlah dia sesuai dengan arahan Pak Amir. Sesampainya di tempat Pak Badri, kembali dia menanyakan jalan ke Desa Suka Mandi. Dijawab oleh Pak Badri: "Belok Kanan, ikuti jalan!" Cihuyyy, dia berjalan dan akhirnya sampailah ke toko sabun itu.
Karena mendapati bahwa pembelinya balita, bertanyalah si penjual: "Rumahmu di mana, Nak?" Sang anak menjawab: "Rumah saya ada di Desa Suka Nyapu." Penjualnya kemudian berkata: "Aku tak tahu di mana itu, Nak. Berangkatlah ke Pak Badri, kemudian tanyakan jalan menuju arah pulangmu." Sambil tersenyum, berangkatlah anak itu. Sesampainya di tempat Pak Badri, dia menanyakan jalan yang mana yang menuju ke arah desanya. Dia memberitahukan bahwa desanya adalah Desa Suka Nyapu. Di luar dugaan, Pak Badri menjawab: "Aduh Nak, aku tak tahu ke mana arah pulangmu. Aku cuma tahu jalan ke Desa Suka Mandi, Desa Suka Cuci, Desa Suka Ngepel, dan Desa Suka Setrika. Ke 2 desa yang terakhir melewati Pos Pak Amir. Selebihnya aku tak tahu." Menangislah sang anak, dan karena dia tak bisa pulang, maka dia menjalani sisa hidupnya sampai mati di Pos Pak Badri.
Sayang sekali hidupnya harus berakhir seperti itu. Kejadian itu tidak perlu terjadi andaikata sebelumnya Pak Amir berkata: "Nak, sepulangmu nanti katakan kepada Pak Badri bahwa kau berasal dari Pos Pak Amir," karena Pak Badri memang tahu ke mana jalan yang harus ditempuh kalau anak itu akan kembali menuju Pos Pak Amir, tapi selebihnya tidak. Setelah sampai di tempat Pak Amir, anak itu bisa diteruskan menuju tujuan yang sesungguhnya, yaitu rumahnya di Desa Suka Nyapu.

Computer Network Version of Previous Story

Dalam dunia jaringan, padanannya kira-kira begini:
  • Anak balita yang berjalan-jalan adalah IP Packet.
  • Pak Hasan, Pak Amir, dan Pak Badri pada perangkat jaringan berperan sebagai ROUTER.
  • Desa-desa di kecamatan OtotKwat pada jaringan merupakan suatu Network Segment.
  • Warna biru menunjukkan proses routing. Tentu saja, pada proses ini IP Forwarding aktif.
  • Warna hijau menunjukkan kondisi di mana router tidak melakukan IP Forwarding. Dalam dunia Linux, kondisi ini berlaku ketika /proc/sys/net/ipv4/ip_forward bernilai 0.
  • Warna merah merupakan ilustrasi peristiwa timeout.
  • Warna oranye merupakan ilustrasi peristiwa destination unreachable.
  • Warna hijau aneh merupakan ilustrasi peristiwa source NAT.

Skema Jaringan

Pada skema di bawah ini, kotak kuning adalah internet, sedangkan warna hijau (atau biru? terserah) muda adalah jaringan suatu gedung.

Cara Kerja

Menurut cerita sebelumnya, dari Desa Suka Nyapu sang anak menuju ke Desa Suka Ngelap. Pada versi ini, berarti ada paket dari network 10.1.21.0/24 ke network 222.111.212.248/29. Kalau memperhatikan cerita sebelumnya, tidak ada operasi Source NAT di situ. Kok bisa sampai? Padahal asalnya adalah IP Privat, dan tujuannya adalah IP Publik! Tak masalah. Berapa pun IPnya, asal router punya info tentang itu ya ndak masalah. Yang penting adalah router punya info untuk paket itu untuk kembali. Kasus yang persis sama berlaku untuk cerita kalau ada paket dari 172.16.92.16/28 ke 222.111.212.248/29, atau untuk cerita 10.1.21.0/24 ke 202.212.222.128/28.
Pada cerita sebelumnya pun tergambarkan bahwa paket dari 10.1.21.0/24 ke 9.10.11.0/23 tanpa operasi NAT ya bisa sampai kok. Perkaranya adalah, siapa pun yang dihubungi di 9.10.11.0/23 tidak dapat mengirim jawaban kembali ke 10.1.21.0/24. Kenapa? Karena Pak Badri tidak tahu di mana itu desa 10.1.21.0/24. Kenapa ndak tau? Karena tidak ada dalam routing table-nya. Alasan lain yang sedikit lebih masuk akal: Silakan baca RFC1918 yang menyatakan bahwa 10.0.0.0/8, 172.16.0.0/12, dan 192.168.0.0/16 tidak boleh routeable di internet. Kenapa angkanya itu? Ya suka-suka yang bikin keputusan. Tugas kita adalah menikmati keputusan, bukan ikut memikirkan keputusannya.
Sebentar, bukannya paket ndak bisa nyampe karena IP privat diblok? Pada dasarnya tidak. Ngapain diblok? Tidak diblok pun tetap tidak bisa balik lha ndak ada info route-nya. Kalau mau diblok ya boleh-boleh saja, itung-itung ngurangi traffic yang ndak perlu.
Nah setelah ada operasi S-NAT pada paket yang menuju ke 9.10.11.0/23, maka harusnya paket bisa balik ke tujuan, karena Pak Badri akan melihat bahwa paket itu berasal dari jaringan Pak Amir. Setelah dikembalikan ke Pak Amir, maka Pak Amir bisa mengembalikan paket data tersebut ke jaringan asalnya. Kalau tidak di-NAT bagaimana? Ya sesuai cerita di atas: Tewas.

Kesimpulan

IP Forwarding merupakan peristiwa di mana router meneruskan paket yang diterima pada suatu interface ke interface yang lain sesuai tujuan paket.
Source NAT merupakan peristiwa di mana router mengubah paket, menggantikan SourceAddress paket tersebut menjadi suatu alamat tertentu.
Bisakah IP Forwarding bekerja tanpa S-NAT? BISA. Bisakah S-NAT bekerja tanpa IP Forwarding? Bisa aja sih, tinggal set iptables kalo anda pake Linux, atau perintah NAT lain yang sesuai untuk router anda. Tapi ya ngapain???
Ceritanya kok aneh? Saya tukang jaringan, bukan tukang dongeng he..he..he..

Ucapan Terima Kasih

I'd like to thank to all networking site reached by Google. They provides many information I need to have this story written.

Tanggapan Orang Lain

Beberapa orang yang pernah baca menanyakan beberapa hal pada saya. Pertanyaan itu antara lain:
  1. Pak Badri kok bisa tau jalan ke Desa Suka Setrika? Kan Desa Suka Setrika itu alamat lokal, sedangkan Pak Badri ke Pak Amir kan lewat internet?
    Seperti yang saya sebutkan sebelumnya, ini adalah ilustrasi sederhana tentang proses forwarding dan SNAT. Lagi pula, SECARA TEKNIS, itu bukan hal yang mustahil kan? Apakah itu menyalahi RFC1918? Ya, tentu saja salah. Tapi andai karena sesuatu hal anda mengetikkan perintah `ip route 172.16.92.16 255.255.255.240 [IP Pak Badri]` atau `ip route add 172.16.92.16/28 via [IP Pak Badri]`—router lain perintahnya gimana terserah lah—kan ya tidak apa-apa. Paket tetap akan berjalan, sesuai dengan perintah yang anda masukkan. Jangan tanya tentang BGP, Policy, Firewall dan lain-lain. Lagi-lagi, konteks artikel ini adalah mengilustrasikan proses IP Forwarding dan Source NAT.
  2. Urusan ARP (berbau MAC Address) gimana? Kok ndak disinggung?
    Silakan cari di artikel yang lain. Bayangkan betapa lebih lucunya kalau diilustrasikan begini: "Balita itu berteriak kepada seluruh kampung: Wahai tukang sabun, rumahmu ada di mana?" Urusan ARP silakan cari artikel lain. Pada artikel ini saya sengaja mengabaikan proses itu.

Sumber : Kamas Muhammad