Bayangkan pelayar memuatkan halaman HTTPS sementara klien SSH mencapai pelayan lain dan penyelesai menjawab pertanyaan, semuanya melalui satu sesi OpenVPN. Pada antara muka fizikal anda melihat satu perbualan; di dalam terowong anda melihat tiga. Kedua-dua pandangan betul, dan mengetahui sebabnya ialah perbezaan antara tangkapan yang berguna dan yang mengelirukan. Ikuti satu aliran dalam dari soket ke wayar dan lapisan berhenti menjadi abstrak.

Satu perbualan luar, banyak aliran dalam

Setiap aplikasi membuka soketnya sendiri, dan kernel memberinya tuple lima elemen: alamat sumber, port sumber, alamat destinasi, port destinasi dan protokol. Tuple itu wujud sebelum sebarang terowong terlibat. Penghalaan kemudian memutuskan bahawa semuanya keluar melalui peranti terowong, jadi paket yang diserahkan kepada OpenVPN masih membawa pengepala asal di dalamnya. OpenVPN menyulitkan paket dalam itu dan membalut hasilnya dalam satu perbualan UDP atau TCP luar dengan rakan. Jadi perbualan luarnya satu, manakala aliran di dalamnya sebanyak aplikasi yang dibuka.

Tiada apa yang runtuh. Tuple dalam kekal dari hujung ke hujung, dan itulah sebabnya pihak jauh masih dapat membezakan ketiga-tiga aliran.

Port yang kekal tetap

Yang kekal malar ialah tuple luar: alamat anda, port setempat yang diikat oleh klien, alamat rakan dan port perkhidmatan yang dikonfigurasikan. Tuple inilah yang mesti dibenarkan oleh tembok api atau NAT di laluan, dan inilah yang akan ditunjukkan oleh tangkapan di pautan atas. Ia juga yang berubah selepas sambungan semula atau pertukaran rangkaian, kerana klien mungkin mengikat port setempat yang lain. Satu terowong tidak bermakna satu port sumber tetap selama-lamanya.

Port dalam ialah apa yang penting kepada titik akhir. Aliran HTTPS mengekalkan port destinasi 443 di dalam terowong walaupun pengangkutan luar duduk pada port yang dikonfigurasikan oleh pengendali. Titik akhir aplikasi tidak pernah tahu tentang yang luar.

Apa yang diubah oleh penyahkapsulan di hujung jauh

Pada rakan, lapisan luar ditanggalkan, dan paket dalam ialah apa yang tinggal. Dari situ, penghantaran dan dasar akses digunakan pada destinasi dan protokol dalam. Pelayan web masih menerima sambungan HTTPS, daemon SSH masih menerima SSH, dan penyelesai masih menerima pertanyaan.

Itulah sebabnya peraturan yang membenarkan pengangkutan luar bukan peraturan yang sama dengan membenarkan perkhidmatan dalaman. Yang pertama menerangkan laluan; yang kedua menerangkan kebenaran.

TCP luar bermakna satu aliran, bukan satu sambungan

Apabila pengangkutan luar ialah UDP, nasib setiap aliran dalam adalah bebas: datagram yang hilang menjejaskan satu pemindahan sehingga penghantaran semulanya sendiri. Apabila pengangkutan luar ialah TCP, semua aliran dalam berkongsi satu aliran bait yang boleh dipercayai.

Aliran kongsi itulah bahagian yang orang terlepas pandang. Pemulihan berlaku sekali, untuk semuanya, jadi satu segmen yang hilang melambatkan trafik setiap aplikasi yang dimultipleks di dalamnya. Masih banyak sambungan di titik akhir dan satu sambungan di wayar, dan di wayarlah kesan kepala barisan hidup. Bilangan port yang mendengar tidak memberitahu anda apa-apa tentang ini, dan itulah sebabnya mengira port ialah cara yang lemah untuk menaakul prestasi terowong.

Huraikan persediaan anda sendiri dengan tepat

Namakan trafik dalam yang dipilih dan pengangkutan luar khusus yang membawanya, bukannya mengatakan mesin menghantar semuanya melalui satu port. Perkhidmatan setempat, terowong kedua dan keluarga alamat yang lain semuanya mencipta aliran yang tidak pernah masuk ke perbualan ini. Tangkapan di pautan atas menunjukkan tuple luar; tangkapan di dalam terowong menunjukkan yang dalam.

Ambil kedua-duanya, dan letakkan cap masa bersebelahan. Jika anda perlu membuktikan aplikasi mana yang menghasilkan aliran dalam yang mana, jadual soket pada hos ialah instrumen yang lebih baik, kerana ia memetakan port kepada proses secara langsung. Kemudian catat tuple luar yang anda perhatikan dan saat anda memperhatikannya, kerana tangkapan seterusnya selepas sambungan semula boleh secara sah menunjukkan nombor yang berbeza.

Artikel berkaitan