VPN Bersarang: Terowong Mana Membawa Sambungan Luar?
Terowong dalam memerlukan laluan luar ke titik akhirnya. Dua klien yang dimulakan dalam urutan salah mencipta konflik laluan, jadi betulkan penyarangan dahulu.
Dua klien VPN yang berjalan serentak tidak menghasilkan terowong bersarang; kedua-duanya menghasilkan dua terowong dan perdebatan tentang penghalaan. Terowong bersarang wujud apabila sambungan klien dalam ke pelayan sendiri dibawa oleh terowong luar, dan itu ialah susunan yang dibina dengan sengaja. Jika betul, pelayan dalam melihat alamat pelayan luar; jika salah, satu klien menyambung semula secara senyap di sekeliling yang lain. Tiga syarat menentukan sama ada penyarangan itu benar atau kebetulan.
Tiga syarat menentukan penyarangan
Yang pertama ialah titik akhir mana memerlukan laluan mana. Namakan alamat pelayan dalam, namakan alamat pelayan luar, dan nyatakan dengan jelas bahawa pelayan dalam hanya boleh dicapai melalui terowong luar. Semua yang lain menyusul daripada ayat itu, termasuk laluan mana berada dalam jadual mana.
Yang kedua ialah sama ada anda boleh melihat laluan pada setiap lapisan. Jika anda tidak boleh bertanya kepada kernel laluan mana yang akan digunakan oleh sesuatu destinasi, anda membuat kesimpulan tentang rantaian daripada IP keluar terakhir, dan itulah bukti yang tidak dapat membezakan penyarangan daripada kebetulan.
Yang ketiga ialah apa yang berlaku apabila terowong luar jatuh. Terowong dalam boleh berhenti bersamanya, menyambung semula melalui rangkaian biasa, atau kekal terhalang sehingga laluan luar kembali, dan ketiga-tiganya ialah dasar yang boleh dipertahankan. Ketiga-tiganya bukan dasar yang sama, dan tingkah laku lalai kebanyakan klien ialah yang kedua. Klien yang menyambung semula titik akhirnya melalui rangkaian fizikal sambil memaparkan sambungan yang sihat ialah cara paling biasa sesuatu rantaian yang diniatkan bertukar secara senyap menjadi dua terowong yang tidak berkaitan.
Syarat pertama: titik akhir mana memerlukan laluan mana
ip route get 203.0.113.10 menjawab soalan itu secara langsung: ia mencetak laluan, alamat sumber, dan antara muka yang akan digunakan oleh kernel untuk destinasi itu sekarang.
Jalankannya untuk pelayan dalam sebelum klien dalam bermula dan sekali lagi selepas itu, kemudian bandingkan. Jika jawapannya berubah daripada antara muka fizikal kepada antara muka terowong luar, penyarangan itu benar pada masa itu. Jika ia tidak berubah, klien dalam sedang bersambung terus, apa pun kata panel. Ulangi untuk alamat pelayan luar, yang masih perlu diselesaikan melalui antara muka fizikal, kerana laluan yang menangkap kedua-dua titik akhir secara rekursif ialah kegagalan yang mengeluarkan mesin daripada rangkaian sepenuhnya.
Syarat kedua: periksa laluan pada setiap lapisan
Pemilihan laluan lebih daripada jadual utama pada klien moden. Peraturan dasar boleh menghantar paket bertanda ke jadual lain, klien boleh mengikat soketnya pada antara muka, dan kontena atau ruang nama mempunyai jadualnya sendiri. ip rule dan ip route show table all ialah cara mengetahui mekanisme mana yang sedang berkuat kuasa.
Klien yang meletakkan SO_MARK pada soketnya sendiri, atau dikonfigurasikan untuk terikat pada peranti tertentu, memintas laluan lalai yang anda sangka telah diatur. Itu ciri, bukan kecacatan, dan bermakna satu-satunya pemeriksaan yang boleh dipercayai ialah yang berjalan dalam ruang nama yang sama dengan klien. Jika klien berjalan dalam kontena, jalankan pemeriksaan di dalam kontena itu dan bukan pada hos.
Syarat ketiga: apa yang berlaku apabila terowong luar jatuh
Tingkah laku semasa kegagalan menuntut keputusan, bukan nilai lalai. Tuliskan apa yang harus berlaku kepada terowong dalam apabila terowong luar hilang, kemudian buat klien melakukannya.
Pilihannya konkrit. Menghentikan klien dalam apabila laluan luar hilang memberi rantaian yang bersih dan gangguan yang jelas. Membiarkannya menyambung semula secara terus memberi ketersediaan dan secara senyap membuang sifat yang menjadi sebab rantaian itu dibina. Menghalang sehingga laluan luar kembali ialah pilihan paling ketat dan paling menyusahkan untuk dikendalikan, kerana setiap gegaran terowong luar menjadi insiden yang kelihatan.
Uji ketiga-tiganya dengan trafik tidak berbahaya dan kegagalan terowong luar yang disengajakan, kerana membaca konfigurasi tidak akan memberitahu anda yang mana satu anda ada. Matikan terowong luar, perhatikan apa yang dilakukan klien dalam, dan periksa laluan sekali lagi semasa ia mati. Kemudian kembalikan terowong luar dan sahkan rantaian terbentuk semula dan bukan membiarkan klien dalam pada laluan terus yang dipilihnya sementara itu.
Apa yang tidak diberikan oleh rantaian
Lapisan tambahan menambah titik akhir, kunci, dan mod kegagalan; ia tidak menambah sebarang jaminan tanpa nama dan tidak menjadikan pengendali luar tidak dapat melihat bahawa ada terowong. Setiap dakwaan tentang apa yang dilindungi oleh penyarangan mesti menamakan pemerhati yang dilindunginya.
Hasilnya ialah dokumen ringkas, bukan sambungan yang berfungsi: titik akhir mana menggunakan laluan mana, apa yang berlaku semasa kegagalan luar, dan tiga arahan yang menunjukkan keadaan semasa. Dokumentasi strongSwan tentang penghantaran ke hadapan ialah rujukan berguna tentang bagaimana trafik terowong dihantar antara antara muka pada hos Linux. Jalankan semula pemeriksaan selepas setiap kemas kini klien, kerana nilai lalai yang menghasilkan rantaian anda bukanlah kontrak. Terowong bersarang yang tidak dapat anda periksa ialah khabar angin dengan lampu status.