NAT simetri dan VPN: ukur pemetaan, bukan label
Pemetaan bergantung titik akhir menjejaskan penemuan rakan setara, bukan terowong klien-ke-pelayan biasa. Ukur port itu, kemudian gunakan geganti jika laluan langsung gagal.
Satu urutan bantuan berakhir dengan keputusan “NAT simetri, VPN tidak akan berfungsi di sini”, dan kemudian klien dipasang semula tiga kali tanpa sebab. Label itu mendatangkan mudarat kerana ia menjawab soalan yang tiada siapa tanya. Klien yang bersambung ke luar ke pelayan tetap mencipta pemetaan pada saat ia menghantar paket pertama, dan balasan dibenarkan kembali mengikut peraturan yang dilaksanakan hampir setiap rangkaian. Apa yang sebenarnya dirumitkan oleh pemetaan bergantung titik akhir ialah dua rakan setara cuba mencapai satu sama lain pada masa yang sama, dan itu ujian yang berbeza.
Dua soalan tersembunyi di sebalik satu label
Soalan pertama ialah sama ada hos di sebalik rangkaian ini boleh membuka sesi ke alamat awam dan port yang diketahui. Bagi klien terowong itu kes biasa, dan jawapannya hampir selalu ya. Penghala merekodkan sumber dalaman, memperuntukkan port luaran, dan melepaskan balasan kerana ia tergolong dalam sesi yang bermula dari dalam.
Soalan kedua ialah sama ada dua hos di sebalik rangkaian berbeza boleh menemui laluan dikongsi dan menghantar antara satu sama lain tanpa pelayan di tengah. Itu bergantung pada cara setiap rangkaian memperuntukkan port luaran tersebut, dan hanya di situ tingkah laku pemetaan penting.
Mencampurkan kedua-duanya menghasilkan salah diagnosis klasik: ciri rakan setara gagal, seseorang menjalankan ujian jenis NAT, melihat kategori terburuk, dan menyimpulkan terowong biasa pun tidak boleh berfungsi. Terowong itu tidak pernah menjadi perkara yang gagal.
Pemetaan dan penapisan ialah dua sifat berasingan
Istilah RFC lebih tepat daripada nama yang digunakan vendor, dan ia wajar dibawa ke tiket kerana ia menyelesaikan perdebatan. Pemetaan ialah cara port luaran diperuntukkan. Penapisan ialah paket masuk mana yang dibenarkan lalu. Sesuatu rangkaian boleh ketat pada satu dan longgar pada yang lain, dan gabungan itulah yang perlu dilalui oleh protokol rakan setara.
| Behaviour | What it means | Effect on a direct peer path |
|---|---|---|
| Endpoint-independent mapping | One external port for every destination | Discovery works if the port is advertised |
| Address-dependent mapping | New port per remote address | Works only if both sides probe the same pair |
| Address-and-port-dependent | New port per remote address and port | Usually needs a relay |
Baris ketiga ialah apa yang dimaksudkan oleh kebanyakan penghala pengguna dan pengendali mudah alih dengan simetri. Perhatikan bahawa label itu hanya menerangkan peruntukan. Rangkaian dengan pemetaan itu dan penapisan longgar masih boleh menerima paket masuk ke port yang baru diperuntukkannya, sebab itu tebukan lubang berjaya pada sesetengahnya dan gagal pada yang lain.
Penapisan mempunyai tiga kesnya sendiri dan namanya sendiri bagi setiap satu. Menulis “NAT simetri” dalam tiket sedangkan yang dimaksudkan “penapisan bergantung alamat dan port” menghantar orang seterusnya ke bab yang salah dalam manual. Kedua-duanya berkelakuan berbeza semasa diuji, jadi kesilapan itu bukan akademik.
Ukur pemetaan dan bukannya menamakannya
Anda boleh memerhati port yang diperuntukkan terus dari sisi pelayan mana-mana perkhidmatan UDP yang anda kawal. Mulakan tangkapan pada hos awam, hantar dari klien, dan baca port sumber yang membawa paket itu tiba:
sudo tcpdump -ni eth0 -c 10 'udp port 51820'
sudo wg show wg0 endpoints
sudo conntrack -L -p udp --dport 51820
Baris titik akhir paling berguna antara ketiga-tiganya, kerana WireGuard merekodkan alamat dan port terakhir yang diterimanya daripada setiap rakan setara. Bandingkan port itu dengan port yang disangka klien sedang digunakan. Kedua-duanya akan berbeza setiap kali berlaku sebarang terjemahan, dan soalan pentingnya ialah sama ada nilainya kekal stabil.
Ulangi pemerhatian terhadap port destinasi kedua atau pelayan kedua dan bandingkan lagi. Jika port luaran berubah mengikut destinasi, pemetaan bergantung pada alamat dan port. Jika ia kekal sama, rangkaian memberikan satu pemetaan dan penemuan mempunyai peluang.
Alat berasaskan STUN melaporkan klasifikasi yang sama dalam satu langkah, dan ia boleh digunakan apabila rangkaian membenarkan UDP keluar ke pelayan STUN awam. Apabila ia tidak membenarkan, kaedah tangkapan di atas masih berfungsi dan tidak memerlukan apa-apa selain hos yang sudah anda kawal.
Pilih pembetulan yang sepadan dengan kegagalan
Jika ciri yang gagal itu rakan setara, jawapan yang disokong ialah geganti, perkhidmatan pertemuan yang boleh dicapai oleh kedua-dua rakan setara, atau topologi berbeza. TURN wujud tepat untuk ini, dan produk yang menyertakan geganti sendiri memberitahu anda bahawa ia menjangka sesetengah rangkaian bersifat bermusuhan.
Jika ciri yang gagal ialah terowong biasa, tingkah laku pemetaan bukan masalah anda dan tiada satu pun di atas terpakai. Periksa bahawa klien benar-benar menghantar, pelayan melihat paket, dan balasan kembali. Urutan itu tiga pemerhatian dan ia tidak memerlukan pengetahuan tentang kategori NAT penghala.
Yang tidak berkesan ialah menyelerakkan perubahan port setempat sehingga sesuatu bersambung. Menukar port sumber klien tidak mengubah cara rangkaian memperuntukkan pemetaan. Kejayaan kebetulan pada percubaan kelima ialah positif palsu, dan ia akan dipetik sebagai pembetulan selama berbulan-bulan.
Catat seni bina, bukan keputusan
Nota yang berguna menyatakan protokol mana, ke arah mana sesi bermula, sama ada ada geganti di laluan, dan apa yang diperhatikan pada wayar. “NAT simetri, tidak berfungsi” tidak boleh digunakan, kerana ia serentak salah tentang terowong dan tidak bermaklumat tentang laluan rakan setara.
Sertakan kestabilan port yang diukur dan tingkah laku penapisan jika anda mengujinya. Kedua-dua fakta itu membolehkan orang lain meramal sama ada ciri baharu akan berfungsi pada rangkaian itu tanpa mengulangi seluruh siasatan. Ia juga lebih tahan lama daripada kategori vendor yang bermaksud sesuatu yang sedikit berbeza pada setiap halaman bantuan.
Akhir sekali, simpan istilah RFC 4787 di tangan apabila anda menulisnya. Menggunakan istilah yang tepat hanya berharga satu ayat dan menghalang pembaca seterusnya daripada mengulangi salah diagnosis yang sama, dan itulah seluruh tujuan menulis nota itu.