Port sumber klien berbanding pendengar pelayan dalam aliran VPN
Bandingkan dua nombor port dalam satu terowong: pendengar tetap pelayan dan sumber efemeral klien, serta bagaimana terjemahan penghala berada di antaranya.
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.
| Endpoint | What stays fixed | What changes on reconnect | Who owns it |
|---|---|---|---|
| Server listener | The service port and the address the profile names | Nothing; the listener does not follow the client | The server operator |
| Client socket | The destination it dials | The local source port, chosen per socket | The client, or its operating system |
| Translated source | Usually the public address of the router | The port, and sometimes the address after a network switch | The 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.