Port sumber klien versus listener server dalam alur VPN
Bandingkan dua nomor port dalam satu terowongan: listener tetap server dan sumber efemeral klien, serta bagaimana terjemahan router berada di antaranya.
Dua angka muncul dalam percakapan yang sama, dan keduanya tidak salah. Log server menunjukkan listener yang menawarkan layanan, laptop menunjukkan soket yang mengirim datagram, dan router di antaranya dapat menulis ulang angka kedua saat keluar. Membandingkan kedua ujung percakapan lebih berguna daripada membandingkan digitnya. Perbandingan di bawah memisahkan listener, soket klien, dan sumber yang diterjemahkan, karena ketiganya menjawab pertanyaan berbeda.
Dua angka yang menggambarkan ujung yang berlawanan
Port terkonfigurasi server adalah tujuan yang didial klien. Port itu ditetapkan kebijakan, muncul di profil, dan harus terbuka di sisi server. Port sumber klien dipilih secara lokal, biasanya dari rentang efemeral, dan ada agar balasan punya tempat mendarat. Port ini dapat berubah pada setiap sambungan ulang, dan tidak ada bagian desain yang bergantung pada kestabilannya.
Router di antaranya dapat menulis ulang sumber itu ke pemetaan 'NAT' miliknya. Karena itu angka yang terlihat di server sering tidak berhubungan dengan angka yang dipilih laptop.
Di mana nomor sumber berubah saat keluar
Ambil contoh IPv4 rekaan: klien di belakang router yang menerjemahkan, server dengan satu listener 'UDP', dan satu datagram yang melintasi keduanya. Tabel menyebut setiap ujung dan apa yang terjadi padanya, alih-alih memutar ulang paket di tiga titik pengamatan.
| 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 |
Tujuan tetap konstan di setiap baris, dan hanya identitas sumber yang berubah. Persyaratan UDP NAT membedakan alamat dan port internal dari pemetaan eksternal, yang persis merupakan selisih antara baris kedua dan ketiga. Router dapat mempertahankan port sumber klien atau memilih yang lain; mempertahankannya bukan hal yang boleh diasumsikan aplikasi.
Baca ketiga ujung dari host itu sendiri
Daftar di bawah berasal dari tiga mesin berbeda dan bersama-sama menunjukkan seluruh percakapan. Jalankan yang pertama di server, yang kedua di klien, dan yang ketiga di mana pun pemetaan itu ada. Satu baris log tidak pernah menunjukkan ketiganya.
ss -lunp 'sport = :1194'
ss -unp | grep 1194
conntrack -L -p udp | grep 1194
Daftar pertama membuktikan server terikat ke port layanan dan menunjukkan proses mana yang memilikinya. Daftar kedua menunjukkan soket lokal klien dan tujuan yang didial. Daftar ketiga menunjukkan pemetaan yang dibuat router, dan hanya di situ sumber yang diterjemahkan muncul. Bacalah dalam urutan itu dan kedua angka berhenti tampak bertentangan.
Apa yang berubah saat sambungan ulang, dan apa yang tidak
Sebagian router mempertahankan port sumber klien bila kosong, sebagian lagi memberikan yang berbeda setiap kali. Kedua perilaku normal, dan aplikasi yang menuntut yang pertama akan rusak pada yang kedua. Perubahan pemetaan setelah sambungan ulang atau perpindahan jaringan bukan kesalahan server: klien membuka soket baru, router memberikan apa yang dimilikinya, dan server melihat sumber baru pada listener yang sama. Yang menjadi kesalahan adalah mengharapkan server menerima lalu lintas yang dialamatkan ke port klien sembarangan.
Klien OpenVPN komunitas memperoleh perilaku ini melalui nobind, yang membiarkan sistem operasi memilih port lokal; port jarak jauh tetap berasal dari profil. Mengikat secara eksplisit adalah pilihan sadar, bukan keharusan protokol. Server terus menawarkan satu ujung sementara klien memilih identitas lokalnya sendiri.
Beri label lapisan secara terpisah dalam catatan
Di dalam terowongan ada percakapan kedua dengan portnya sendiri. Permintaan HTTPS yang dibawa terowongan bertujuan TCP 443, sedangkan koneksi terenkripsi luar memakai UDP 1194, jadi mengubah port sumber luar tidak mengubah apa pun pada layanan dalam.
Bahkan di lapisan luar, protokol tetap penting. UDP 1194 dan TCP 1194 adalah ujung yang berbeda, dan listener 'TCP' tidak akan pernah menerima datagram UDP hanya karena nomornya sama. Saat mendokumentasikan penerapan, beri label listener server, soket klien, dan sumber yang diterjemahkan sebagai tiga hal berbeda, dan tambahkan transport pada masing-masing.
Lalu biarkan kebijakan mengikuti peran. Server membuka transport yang dimaksud pada listener-nya dan tetap mengautentikasi peer; firewall klien mengizinkan balasan atas pertukaran keluarnya sendiri tanpa menerbitkan layanan masuk. Filter tanpa status memerlukan arah balik yang ditulis eksplisit, dan itulah alasan praktis mengapa pembedaan ini penting di luar diagram yang rapi.