Pemecahan IP Muncul sebagai Kerumitan Tersembunyi Utama dalam Pelaksanaan NAT

Pasukan Komuniti BigGo
Pemecahan IP Muncul sebagai Kerumitan Tersembunyi Utama dalam Pelaksanaan NAT

Network Address Translation ( NAT ) telah menjadi asas infrastruktur internet moden, membantu berbilion peranti berkongsi alamat IPv4 yang terhad. Walaupun kebanyakan orang memahami NAT sebagai pemetaan mudah antara alamat IP peribadi dan awam, perbincangan teknikal terkini mendedahkan lapisan kerumitan tersembunyi yang menjadikan pelaksanaan NAT yang kukuh jauh lebih mencabar daripada yang kelihatan.

Perbandingan Ruang Alamat IPv4 vs IPv6

  • IPv4: Alamat 32-bit = 4,294,967,296 jumlah alamat (~4.3 bilion)
  • IPv6: Alamat 128-bit = 340,282,366,920,938,463,463,374,607,431,768,211,456 alamat (~340 undecillion)
  • Nisbah alamat: IPv6 menyediakan kira-kira 79 octillion kali lebih banyak alamat berbanding IPv4

Pemecahan IP Mencipta Cabaran NAT yang Tidak Dijangka

Kerumitan paling ketara dalam sistem NAT datang daripada pengendalian pemecahan IP , terutamanya dengan paket UDP . Apabila datagram UDP melebihi saiz paket maksimum, ia akan dipecah kepada beberapa paket IP . Walau bagaimanapun, hanya paket pertama mengandungi header UDP dengan maklumat port yang diperlukan oleh peranti NAT untuk terjemahan alamat.

Ini mencipta masalah berturut-turut. Peranti NAT mesti mengaitkan paket yang dipecah menggunakan ID pecahan dan menulis semula alamat IP merentasi semua pecahan. Lebih teruk lagi, pecahan boleh tiba tidak mengikut urutan, memaksa sistem NAT untuk menimbal pecahan kemudian sehingga paket pertama dengan header UDP tiba. Keperluan penimbalan ini menambah overhed memori dan kerumitan pemprosesan yang tidak disedari oleh ramai orang.

Masalah pemecahan menjadi sangat menyusahkan dalam rangkaian besar dengan berbilang laluan. Penghala moden menggunakan pengemudian aliran untuk mengedarkan trafik merentasi pautan dengan mencincang butiran sambungan daripada header UDP atau TCP . Tetapi paket yang dipecah merosakkan sistem ini kerana pecahan kemudian tidak mempunyai maklumat header yang diperlukan untuk penghalaan yang konsisten.

Kerutan tunggal ini mungkin bertanggungjawab untuk separuh kerumitan dalam pelaksanaan NAT yang kukuh.

Kesan Dunia Sebenar Melangkaui Rangkaian Rumah

Walaupun ramai mengaitkan NAT terutamanya dengan penghala rumah, teknologi ini meresap ke dalam infrastruktur perusahaan dan awan. Bekas Docker sangat bergantung pada Linux NAT melalui peraturan iptables untuk memetakan port hos kepada perkhidmatan bekas. Setiap kali pembangun menjalankan arahan pemetaan port yang mudah, mereka memanfaatkan teknik manipulasi paket yang sama yang digunakan oleh get laluan NAT gred ISP .

Kerumitan menjadi lebih ketara dalam perkhidmatan NAT awan terurus yang memerlukan ketersediaan tinggi dan replikasi langsung. Sistem ini mesti mengendalikan kes tepi pemecahan sambil mengekalkan konsistensi transaksi merentasi berbilang nod.

Jenis NAT dan Ciri-ciri

Jenis NAT Penerangan Akses Luaran
NAT Asas/Statik Terjemahan IP satu-dengan-satu Pemetaan langsung
Terjemahan Alamat Port (PAT) Pelbagai peranti berkongsi satu IP awam menggunakan port berbeza Pembezaan berasaskan port
NAT Kon Penuh (NAT 1) Mana-mana hos luaran boleh menghantar paket jika mengetahui IP/port awam Masuk tanpa sekatan
NAT Kon Terhad (NAT 2) Hanya hos luaran yang pernah dihubungi sebelum ini boleh menghantar paket balik Masuk terhad IP
NAT Kon Terhad Port (NAT 3) Hos luaran mesti sepadan dengan kedua-dua IP dan port daripada komunikasi keluar Terhad IP+Port
NAT Simetri (NAT 4) Pemetaan berbeza untuk setiap destinasi, merosakkan WebRTC berasaskan STUN Paling ketat

Pendekatan Alternatif dan Pertimbangan Masa Depan

Sesetengah jurutera rangkaian berpendapat bahawa UDP sepatutnya mengendalikan pemecahan di lapisan protokol dan bukannya bergantung pada pemecahan peringkat IP . Ini akan menghapuskan banyak komplikasi NAT dengan memastikan setiap paket merangkumi maklumat header yang diperlukan. Walau bagaimanapun, yang lain menunjukkan bahawa penemuan MTU laluan yang kukuh memberikan cabarannya sendiri, terutamanya dalam rangkaian dengan berbilang laluan yang mempunyai unit penghantaran maksimum yang berbeza.

Rangkaian kewangan menunjukkan satu pendekatan yang berjaya dengan sengaja mengekalkan saiz paket UDP di bawah ambang pemecahan dan menggunakan nombor urutan lapisan aplikasi untuk penjejakan paket. Ini secara berkesan memindahkan pengendalian pemecahan ke lapisan aplikasi di mana ia boleh diurus dengan lebih boleh diramal.

Realiti Migrasi IPv6

Walaupun keupayaan teori IPv6 untuk menghapuskan keperluan NAT melalui ruang alamatnya yang besar, penggunaan masih perlahan. Statistik penggunaan IPv6 global semasa menunjukkan peralihan masih jauh daripada lengkap, bermakna kerumitan NAT akan berterusan untuk tahun-tahun akan datang. Malah rangkaian IPv6 kadangkala menggunakan teknologi seperti NAT seperti Network Prefix Translation ( NPT ) untuk kes penggunaan tertentu.

Kegigihan NAT menyerlahkan bagaimana penyelesaian rangkaian sementara sering menjadi perlengkapan kekal. Pada asalnya dicadangkan sebagai pembaikan jangka pendek untuk keletihan alamat IPv4 pada tahun 1994, NAT telah berkembang menjadi komponen kritikal tetapi kompleks infrastruktur internet yang mesti difahami secara mendalam oleh jurutera untuk dilaksanakan dengan boleh dipercayai.

Rujukan: grokking NAT and packet mangling in linux