Dua alamat terowong pada satu papan kecil kelihatan seperti kesilapan, dan refleksnya ialah memadam satu. Refleks itu merosakkan perkara yang sepatutnya dikemaskan. Hos yang membawa dua hop menyimpan satu alamat bagi setiap sambungan, dan setiap alamat dipilih oleh laluan yang berbeza. Soalan yang wajar ditanya ialah laluan mana memilih pembawa mana untuk destinasi mana, bukan berapa banyak alamat yang wujud.

Tiga destinasi yang memerlukan pembawa berbeza

Rantaian dua hop ialah tiga kelas destinasi bertindan, dan setiap satu dibawa oleh sambungan yang berbeza. Peer luar mesti dicapai melalui pautan fizikal. Peer dalam mesti dicapai melalui terowong luar. Destinasi aplikasi yang dilindungi mesti dicapai melalui terowong dalam, yang pengangkutannya sendiri dibawa oleh yang luar.

Destination classView that names the carrierCommand that proves itSymptom when the wrong carrier wins
Outer peer, 198.51.100.10the main table, by destinationip route get 198.51.100.10the outer handshake never completes
Inner peer, 203.0.113.7the main table once the outer tunnel is upip route get 203.0.113.7the inner handshake leaves over the physical link
Application destination, 172.30.9.1the table the inner client's traffic is selected intoip route get 172.30.9.1 from 10.8.0.2the exit address looks right and the traffic never crossed the outer hop
Parallel tunnels, one per source groupone policy per group, not the main tableip rule show beside a marked test connectionboth tunnels are up and one steals the other's traffic

Isi baris dengan alamat sebenar pembaca sebelum menyentuh laluan, kerana jadual hanya berguna apabila ia konkrit. Rantaian yang berfungsi memenuhi keempat-empat baris serentak, dan rantaian yang separuh berfungsi biasanya memenuhi salah satunya dengan pembawa yang salah. Membaca baris yang salah sebagai kegagalan itulah yang menjadikan masalah penghalaan sebagai kerja pembetulan sepanjang petang.

Alamat mempunyai peranan, bukan bilangan

Linux membenarkan beberapa alamat pada satu antara muka dan beberapa terowong pada satu hos, jadi bilangan tidak mengatakan apa-apa tentang ketepatan. Yang penting ialah alamat mana milik sambungan mana, dan sama ada laluan bagi peer tertentu memilih sambungan yang anda maksudkan. Tiga paparan menjawabnya dari tiga arah, dan wajar dibaca dalam urutan yang sama setiap kali.

Inventori alamat menunjukkan apa yang wujud dan sambungan mana yang memilikinya. Jadual laluan menjawab soalan pembawa bagi trafik destinasi biasa. Paparan dasar menjawabnya semula bagi trafik yang dipilih mengikut sumber atau tanda, iaitu susunan biasa apabila dua klien berkongsi satu hos.

ip -4 addr show
ip -4 route show table all
ip rule show

Memadam alamat kerana senarai kelihatan panjang boleh membuang sebahagian laluan, dan memadam laluan kerana ia kelihatan berlebihan melakukan perkara yang sama dengan lebih senyap. Kedua-duanya tidak menghasilkan ralat; peer berhenti menjawab pada laluan yang anda maksudkan sambil kekal boleh dicapai melalui laluan lain. Aplikasi yang melaporkan alamat keluar peer dalam tidak membuktikan trafik melintasi terowong luar, kerana akses terus menghasilkan pemerhatian yang sama. Jurang antara pemerhatian dan bukti itulah sebabnya pembawa diperiksa pada lapisan penghalaan.

Urutan pengaktifan mengalahkan tidur tetap

Jika klien dalam bergantung pada alamat atau laluan yang disediakan klien luar, pengaktifan mesti menunggu sumber itu dan bukan kelewatan. Tidur berfungsi sehingga hari terowong luar menjadi perlahan, dan kemudian ia gagal secara berselang-seli dengan cara yang tiada siapa dapat hasilkan semula. Urutan berasaskan kebergantungan menghapuskan tekaan dan tidak memakan apa-apa selain menerangkan kebergantungan sekali. Nama antara muka juga bukan mekanisme urutan.

Kernel memberikan nama seperti tun0 dan tun1 mengikut urutan penciptaan, dan urutan itu boleh berubah antara but semula atau sambungan semula. Ikat konfigurasi kepada identiti yang disediakan alat, atau kepada nama yang anda tetapkan dengan sengaja. Nama yang anda pilih ialah kontrak; nama yang dipilih kernel ialah kebetulan.

Jauhkan pengangkutan setiap klien daripada laluan aplikasi klien lain, dan tepat tentang apa yang sebenarnya dijanjikan oleh pilihan penghalaan OpenVPN 2.6. Mekanisme ubah hala lalai yang didokumenkan mengekalkan klien mampu mencapai peer jauhnya sendiri melalui gerbang yang sudah wujud, yang memotong satu gelung rekursi tertentu. Ia tidak menjadikan satu klien sebagai pembawa klien lain, jadi baki rantaian kekal sebagai reka bentuk anda. Di tempat rantaian memerlukan dasar dan bukan laluan, tulis peraturan sumber atau tanda yang jelas dan ujinya dengan trafik yang sepatutnya dipadankan.

Apa yang berlaku apabila hop luar mati

Sebelum rantaian dianggap lengkap, tentukan apa yang berlaku apabila hop luar hilang. Pengangkutan klien dalam mati bersamanya, dan langkah seterusnya ialah persoalan dasar dan bukan teknikal: gagal, cuba semula, atau sambung semula terus melalui pautan fizikal. Hasil ketiga itulah yang perlu difikirkan. Ia secara senyap menukar reka bentuk dua hop menjadi reka bentuk satu hop pada saat pengguna percaya liputan masih utuh.

Jika dua hop wajib, klien dalam tidak boleh mewujudkan laluan terus apabila yang luar hilang, dan cara mengetahuinya ialah memutuskan hop luar dan memerhati apa yang dilakukan yang dalam. Sandaran yang diluluskan ialah jawapan sah, tetapi ia mesti ditulis, diuji dan dimaklumkan. Sandaran yang tiada siapa mendokumenkan tidak dapat dibezakan daripada kebocoran semasa semakan insiden.

DNS dan keluarga alamat yang lain tergolong dalam keputusan yang sama. Carian yang dijana secara setempat mengikut dasar hos itu sendiri dan bukan dasar klien yang dimajukan, jadi penyelesai yang berfungsi untuk trafik dimajukan mungkin bukan yang digunakan oleh hos itu sendiri.

Terima setiap lapisan mengikut urutan anda membinanya

Uji mengikut urutan rantaian dibina: pertama terowong luar sahaja, kemudian pengangkutan klien dalam melalui terowong luar, kemudian aplikasi melalui terowong dalam. Setiap penerimaan mesti sambungan baharu dan bukan halaman yang sudah terbuka. Kemudian putuskan dan pulihkan setiap lapisan secara berasingan dan perhatikan apa yang dilakukan lapisan seterusnya.

Hasil sandaran ialah pemerhatian paling berharga di sini, dan yang tidak pernah ditunjukkan halaman IP awam. Simpan laluan peer, alamat yang mereka gunakan dan hasil itu di sebelah konfigurasi, kerana laluan bahagia bukan bahagian yang dipersoalkan kemudian.

Artikel berkaitan