Dua nombor muncul dalam perbualan yang sama, dan kedua-duanya tidak salah. Log pelayan menunjukkan pendengar yang menawarkan perkhidmatan, komputer riba menunjukkan soket yang menghantar datagram, dan penghala di antaranya boleh menulis semula yang kedua semasa keluar. Membandingkan kedua-dua hujung perbualan lebih berguna daripada membandingkan digitnya. Perbandingan di bawah memisahkan pendengar, soket klien dan sumber terjemahan, kerana ketiganya menjawab soalan yang berbeza.

Dua nombor yang menerangkan hujung yang bertentangan

Port pelayan yang dikonfigurasikan ialah destinasi yang didail oleh klien. Ia ditetapkan oleh dasar, muncul dalam profil dan mesti dibuka di sebelah pelayan. Port sumber klien dipilih secara setempat, biasanya daripada julat efemeral, dan wujud supaya balasan mempunyai tempat mendarat. Ia boleh berubah pada setiap sambungan semula, dan tiada apa dalam reka bentuk bergantung pada kestabilannya.

Penghala di antaranya boleh menulis semula sumber itu ke dalam pemetaan 'NAT'-nya sendiri. Itulah sebabnya nombor yang diperhatikan di pelayan selalunya tiada kaitan dengan nombor yang dipilih komputer riba.

Di mana nombor sumber berubah semasa keluar

Ambil contoh IPv4 rekaan: klien di belakang penghala yang menterjemah, pelayan dengan satu pendengar 'UDP', dan satu datagram yang melintasi kedua-duanya. Jadual menamakan setiap hujung dan apa yang berlaku kepadanya, bukannya memainkan semula paket pada tiga titik pemerhatian.

EndpointWhat stays fixedWhat changes on reconnectWho owns it
Server listenerThe service port and the address the profile namesNothing; the listener does not follow the clientThe server operator
Client socketThe destination it dialsThe local source port, chosen per socketThe client, or its operating system
Translated sourceUsually the public address of the routerThe port, and sometimes the address after a network switchThe NAT device or the upstream carrier

Destinasi adalah tetap dalam setiap baris, dan hanya identiti sumber berubah. Keperluan UDP NAT membezakan alamat dan port dalaman daripada pemetaan luaran, yang merupakan tepat jurang antara baris kedua dan ketiga. Penghala boleh mengekalkan port sumber klien atau memilih yang lain; pengekalan bukan sesuatu yang harus diandaikan oleh aplikasi.

Baca ketiga-tiga hujung daripada hos itu sendiri

Senarai di bawah datang daripada tiga mesin berbeza dan bersama-sama menunjukkan seluruh perbualan. Jalankan yang pertama di pelayan, yang kedua di klien dan yang ketiga di mana-mana pemetaan itu wujud. Satu baris log tidak pernah menunjukkan ketiga-tiganya.

ss -lunp 'sport = :1194'
ss -unp | grep 1194
conntrack -L -p udp | grep 1194

Senarai pertama membuktikan pelayan terikat pada port perkhidmatan dan menunjukkan proses mana yang memilikinya. Senarai kedua menunjukkan soket setempat klien dan destinasi yang didailnya. Senarai ketiga menunjukkan pemetaan yang dicipta oleh penghala, dan itulah satu-satunya tempat sumber terjemahan muncul. Bacalah mengikut urutan itu dan kedua-dua nombor berhenti kelihatan bercanggah.

Apa yang berubah semasa sambungan semula, dan apa yang tidak

Sesetengah penghala mengekalkan port sumber klien apabila ia bebas, dan sesetengahnya memperuntukkan yang berbeza setiap kali. Kedua-dua tingkah laku adalah normal, dan aplikasi yang menuntut yang pertama akan rosak pada yang kedua. Perubahan pemetaan selepas sambungan semula atau pertukaran rangkaian bukan kerosakan pelayan: klien membuka soket baharu, penghala memperuntukkan apa yang ada, dan pelayan melihat sumber baharu pada pendengar yang sama. Yang menjadi kerosakan ialah mengharapkan pelayan menerima trafik yang dialamatkan ke port klien sewenang-wenangnya.

Klien OpenVPN komuniti memperoleh tingkah laku ini melalui nobind, yang membenarkan sistem pengendalian memilih port setempat; port jauh masih datang daripada profil. Mengikat secara eksplisit ialah pilihan sedar, bukan keperluan protokol. Pelayan terus menawarkan satu hujung manakala klien memilih identiti setempat mereka sendiri.

Label lapisan secara berasingan dalam rekod

Di dalam terowong terdapat perbualan kedua dengan portnya sendiri. Permintaan HTTPS yang dibawa terowong mempunyai destinasi TCP 443, manakala sambungan penyulitan luar menggunakan UDP 1194, jadi menukar port sumber luar tidak mengubah apa-apa pada perkhidmatan dalaman.

Walaupun pada lapisan luar, protokol tetap penting. UDP 1194 dan TCP 1194 ialah hujung yang berbeza, dan pendengar 'TCP' tidak akan pernah menerima datagram UDP semata-mata kerana nombornya sepadan. Semasa mendokumenkan penggunaan, labelkan pendengar pelayan, soket klien dan sumber terjemahan sebagai tiga perkara berbeza, dan tambahkan pengangkutan pada setiap satu.

Kemudian biarkan dasar mengikut peranan. Pelayan membuka pengangkutan yang dimaksudkan pada pendengarnya dan masih mengesahkan rakan; tembok api klien membenarkan balasan kepada pertukaran keluarnya sendiri tanpa menerbitkan perkhidmatan masuk. Penapis tanpa keadaan memerlukan arah balik ditulis secara eksplisit, dan itulah sebab praktikal mengapa perbezaan ini penting di luar rajah yang kemas.

Artikel berkaitan