Terowong berpecah ialah dasar penghalaan yang dinyatakan sebagai satu set peraturan, dan klien hanyalah perkara yang memasangnya. Pemisahan berlaku di dua tempat: peraturan padanan yang memilih laluan bagi setiap paket, dan pengikatan yang menahan aplikasi pada satu antara muka apa pun kata jadual. Mekanisme mana yang diharapkan klien anda menjelaskan sebahagian besar kejutan yang dilaporkan orang.

Dasar yang boleh anda nyatakan dalam satu baris boleh diuji. Dasar yang digambarkan sebagai pelayaran lebih pantas tidak boleh, dan ia tidak akan memberitahu anda peraturan mana untuk diubah apabila permintaan pergi ke arah yang salah.

Klien memasang peraturan, kernel membuat pilihan

Apabila terowong naik, klien menambah laluan dan selalunya peraturan dasar pada jadual yang sama yang digunakan antara muka lain anda. Setiap paket kemudian mencapai carian yang membandingkan destinasinya dengan setiap awalan calon dan menyimpan padanan paling spesifik, manakala keutamaan menyelesaikan seri antara peraturan yang menunjuk ke jadual berbeza. Tiada apa-apa dalam carian itu tahu bahawa paket itu datang dari tab pelayar dan bukan dari kerja sandaran. Peraturan yang menang ialah yang menetapkan laluan, dan anda boleh membacanya sebelum dan selepas perubahan.

Itulah sebabnya terowong berpecah boleh kelihatan sewenang-wenangnya. Dua destinasi dalam satu aplikasi boleh mengambil laluan berbeza hanya kerana satu awalan lebih sempit daripada yang lain.

Pilihan yang sama wujud pada setiap platform, walaupun namanya berubah. Windows menolak keputusan ke platform penapisnya, Android mendedahkan senarai kebenaran setiap aplikasi melalui perkhidmatan VPNnya, dan macOS melampirkan terowong pada peranti yang masih mematuhi jadual penghalaan. Nota penghalaan Microsoft wajar dibaca untuk kes Windows, dan panduan yang ditulis untuk satu platform jarang berpindah tanpa perubahan ke platform lain.

Pengikatan setiap aplikasi dan awalan destinasi ialah alat yang berbeza

Dasar destinasi bertanya ke mana paket pergi dan merujuk jadual laluan atau peraturan dasar. Dasar setiap aplikasi bertanya program mana yang membuka soket, dan platform menahan program itu pada antara muka terowong walaupun laluan yang lebih spesifik menunjuk ke tempat lain. Yang kedua lebih kuat kerana ia bertahan perubahan jadual, tetapi ia hanya meliputi proses yang platform boleh atributkan. Proses pembantu, pelayar terbenam, atau perkhidmatan yang membuka sambungannya sendiri mungkin tidak mewarisi pengikatan yang anda andaikan.

Tiada satu pun pendekatan bertahan terhadap dasar berasaskan nama tanpa bantuan. Alamat tapak besar berputar antara rangkaian kandungan, jadi memaku nama hos pada beberapa awalan menghasilkan peraturan yang senyap berhenti sepadan. Dasar yang mesti mengikut nama memerlukan komponen sedar penyelesai dan bukannya laluan statik.

DNS dan suis keselamatan mengikut peraturan mereka sendiri

Penyelesaian nama ialah keputusan berasingan daripada penghalaan paket, dan terowong berpecah biasanya mahukan dua penyelesai: milik syarikat untuk nama dalaman, yang setempat untuk segala-galanya. Klien boleh memasang tetapan DNS setiap antara muka, menyerahkan pertanyaan kepada penyelesai perantara, atau membiarkan lalai sistem tidak disentuh. Pelayar dengan penyelesai tersulitnya sendiri memintas ketiga-tiga susunan. Uji carian dan bukannya menganggap penyelesai mengikut laluan.

Suis keselamatan menambah penapis di atas, dan penapis itu tidak selalu membezakan pengecualian yang disengajakan daripada kebocoran tidak sengaja. Sesetengah klien menyekat segala-galanya di luar terowong manakala yang lain membenarkan pengecualian yang diisytiharkan dasar, jadi baca tingkah laku mana yang dilaksanakan oleh klien anda sebelum bergantung pada mana-mana daripadanya.

Periksa pemisahan dari kedua-dua belah

Uji laluan yang disertakan dan laluan yang dikecualikan secara berasingan, dan nilai hasilnya melalui nama antara muka dan bukan alamat awam. Perintah ini menganggap hos Linux dengan peranti terowong sudah naik. Gantikan 203.0.113.10 dengan destinasi yang dihalakan dasar anda ke dalam, dan 198.51.100.25 dengan destinasi yang dihantar ke luar.

ip route get 203.0.113.10
ip route get 198.51.100.25
resolvectl query intranet.example.com
curl -s --interface tun0 https://example.com -o /dev/null -w '%{http_code}\n'

Baca dua jawapan pertama bersama-sama, kerana antara muka yang dinamakan dalam setiap satu menunjukkan sama ada pemisahan meletakkan destinasi itu pada terowong. Pertanyaan penyelesai menunjukkan pelayan mana yang menjawab nama dalaman, dan perintah terakhir membuktikan peranti terowong boleh membawa permintaan. Kegagalan pada baris kedua manakala baris pertama berjaya bermakna dasar melakukan tepat apa yang diperintahkan.

Ulang set ini selepas menyambung semula dan selepas perubahan rangkaian. Pembaharuan pajakan dan pergolakan antara muka ialah tempat pemisahan berhenti sepadan dengan hasrat ia dibina, dan output yang disimpan daripada setiap larian menjadikan hanyutan itu jelas.

Artikel berkaitan