Dokumentasi split-tunnel perlukan peraturan DNS di sebelah setiap laluan
Laluan memutuskan mengikut alamat, penyelesai memutuskan mengikut nama. Dokumentasikan kedua-dua pemilih bagi setiap aliran, masing-masing dengan satu ujian, atau nota akan gagal apabila DNS beralih.
Nota split-tunnel yang berkata "trafik pejabat melalui VPN" telah mendokumenkan satu keputusan dan mengisyaratkan tiga lagi. Pada lapisan paket, jadual penghalaan memilih antara muka mengikut alamat destinasi; pada lapisan nama, penyelesai memilih pelayan mengikut pertanyaan, dan kedua-dua pilihan dibuat secara bebas. Itulah sebabnya awalan yang didokumenkan dengan betul masih boleh menghasilkan mesin yang menyelesaikan nama dalaman kepada alamat awam, atau tidak menyelesaikan apa-apa sementara laluan kelihatan sempurna.
Dua pemilih, satu percubaan sambungan
Apabila aplikasi bersambung ke files.corp.example, dua carian berlaku sebelum paket wujud. Penyelesai memutuskan pelayan mana yang menerima pertanyaan, menggunakan domain carian, domain penghalaan setiap pautan atau peraturan profil yang jelas. Jadual penghalaan kemudian memutuskan ke mana alamat yang terhasil pergi, menggunakan padanan awalan terpanjang dengan destinasi.
Tiada apa yang menghubungkan kedua-dua keputusan itu. Zon peribadi boleh menjawab dengan 10.20.4.11 sementara jadual penghalaan menghantar 10.20.0.0/16 ke dalam terowong, dan sambungan berfungsi. Balikkan mana-mana satu dan ia gagal dengan cara yang kelihatan seperti yang lain: dasar DNS betul ditambah laluan hilang memberi nama yang diselesaikan dan tamat masa, manakala laluan betul ditambah penyelesai awam memberi alamat yang dihalakan bersih ke tempat yang salah.
DNS ufuk terbelah menjadikan ini lebih tajam. Nama yang sama boleh mengembalikan alamat peribadi daripada penyelesai dalaman dan alamat awam daripada penyelesai yang menghadap internet, jadi nota yang hanya merekod awalan tidak dapat meramalkan alamat mana yang akan digunakan oleh klien sebenarnya. Tulis laluan penyelesai atau alamat itu adalah tekaan.
Apa yang ditinggalkan oleh nota laluan semata-mata
Rekod laluan semata-mata tidak berguna untuk kegagalan split-tunnel yang paling biasa: nama. Pengguna melaporkan bahawa intranet tidak dimuatkan, terowong aktif dan awalan hadir. Sesiapa yang mengambil tiket itu tiada rekod penyelesai mana yang sepatutnya menjawab, tiada cara membezakan akhiran carian yang salah daripada pelayan yang disekat, dan tiada garis dasar untuk dibandingkan.
Ketinggalan kedua ialah senarai pengecualian. Reka bentuk split-tunnel ditentukan sama banyak oleh apa yang kekal di luar terowong seperti apa yang masuk ke dalamnya, dan julat yang dikecualikan biasanya yang mula pecah dahulu, kerana laluan tempatan yang lebih khusus atau penapis di sebelah klien boleh mengatasi niat tanpa menyentuh profil.
Yang ketiga ialah sisi jauh terowong. Laluan klien hanya meletakkan paket pada wayar; gerbang masih perlu memajukannya dan mempunyai laluan balik. Panduan pemajuan strongSwan mengingatkan bahawa peraturan pemajuan dan tembok api pada gerbang adalah sebahagian daripada ciri, bukan sebahagian daripada paip yang boleh anda anggap ada.
Medan yang menjadikan nota boleh dilaksanakan
Satu baris bagi setiap aliran, dan aliran ialah destinasi tambah nama tambah pemilik. Inilah medan yang bertahan apabila berhadapan dengan insiden sebenar:
| Field | Why it has to be written down |
|---|---|
| Destination prefix and address family | The route is per family; an IPv4 note says nothing about a AAAA answer |
| Selected tunnel or direct path | Names the decision, not the symptom |
| Private namespace and resolver | Which domain, which server, which search suffix |
| Public name path | Confirms public names do not accidentally use the private resolver |
| Where the rule lives | Client profile, server push, OS policy or management tool |
| Owner and review date | Namespaces change owner more often than routes change |
Baris "di mana ia tinggal" ialah baris yang orang lompati. Awalan yang ditolak oleh pelayan, laluan yang ditambah oleh profil klien dan laluan yang ditaip dalam shell berbeza dari segi siapa yang boleh mengubahnya dan sama ada ia bertahan selepas sambungan semula. Tanpa medan itu, jurutera seterusnya tidak dapat memberitahu yang mana antara tiga itu yang dilihatnya.
Satu ujian setiap peraturan, bukan satu setiap terowong
Setiap baris memerlukan dua pemeriksaan tidak berbahaya: satu yang melatih laluan dan satu yang melatih nama. Untuk laluan, minta sesuatu yang mesti melintasi terowong dan sahkan laluan itu bukan kebolehcapaian, contohnya tracert -d 10.20.4.11 di Windows atau ip route get 10.20.4.11 di Linux. Untuk nama, tanya nama peribadi dan rekod pelayan mana yang menjawab, menggunakan resolvectl query files.corp.example atau dig files.corp.example terhadap penyelesai yang dinamakan oleh nota.
Tambah juga jangkaan negatif: apa yang patut berlaku apabila terowong mati. Aplikasi yang dikecualikan pada peranti Android atau iOS dengan sekatan tanpa VPN diaktifkan mungkin tiada sambungan langsung, dan klien desktop boleh membiarkan aplikasi yang sama berfungsi semasa terowong bersambung semula. Merekod jawapan yang dimaksudkan menjadikan "VPN merosakkan aplikasi saya" sebagai pernyataan yang boleh diperiksa.
Simpan rekod bersama konfigurasi
Simpan nota di sebelah profil yang diterangkannya dan versikan ia bersama profil itu. Dokumen dalam wiki yang tiada siapa mengemas kini ialah khabar angin; jadual dalam repositori yang sama dengan laluan yang ditolak dan dasar penyelesai boleh disemak dalam perubahan yang sama.
Apabila sesuatu rosak, bandingkan laluan yang digunakan dan penyelesai berkesan dengan rekod sebelum menambah pengecualian lain. Dua daripada tiga punca biasa — peraturan ruang nama lama dan proses pembantu di luar dasar aplikasi — kelihatan tepat seperti kerosakan VPN dan tidak kelihatan jika nota hanya menyenaraikan awalan.
Sebelum mengisytiharkan nota selesai, sahkan ia menjawab secara bertulis: awalan mana, untuk keluarga alamat mana; ruang nama peribadi mana, dijawab oleh penyelesai mana; nama mana yang sengaja kekal awam; di mana setiap peraturan dikonfigurasikan dan siapa pemiliknya; serta satu arahan yang membuktikan laluan dan satu yang membuktikan nama. Jika mana-mana ini tiada, insiden seterusnya akan didiagnosis dari awal.