Apabila laluan split tunnel bertindih: prefiks mana yang menang
Padanan prefiks terpanjang, metrik dan peraturan dasar menentukan tunnel mana yang melayani destinasi bertindih. Semak alamat sumber dan nama yang telah diselesaikan dahulu.
Dua profil split tunnel, dua prefiks persendirian dan satu hos yang kedua-duanya tuntut. Gejalanya jarang kegagalan bersih: sesuatu perkhidmatan berfungsi pada hari Isnin, tamat masa selepas klien kedua menyambung semula, dan berfungsi semula selepas but semula. Urutan anda menyambungkan klien tidak menentukan hasilnya, begitu juga urutan baris dalam antara muka klien. Jalankan semakan ini mengikut urutan, dan berhenti pada semakan pertama yang tidak menepati, kerana yang kemudian hanya bermakna apabila yang terdahulu benar.
1. Catat destinasi dan sumber
Mulakan dengan alamat tepat yang dituju oleh permintaan yang gagal, bukan nama hos dan bukan nama aplikasi. Selesaikan nama itu sekali, catat setiap jawapan dan pilih jawapan yang benar-benar digunakan oleh aliran yang gagal. Kemudian catat alamat tempatan aliran yang sama, kerana alamat sumber boleh mengubah peraturan dasar mana yang sepadan dan seterusnya jadual mana yang dirujuk.
Permintaan ke salah satu daripada beberapa rekod A boleh gagal sementara alamat saudaranya berjaya, yang kelihatan seperti tunnel tidak stabil tetapi sebenarnya dua laluan berbeza. Jika destinasi ialah nama dengan beberapa jawapan, uji setiap jawapan secara berasingan sebelum mengubah apa-apa.
2. Tanya kernel laluan mana yang dipilihnya
Jangan baca jadual laluan dan membuat kesimpulan tentang jawapannya. Tanya soalan yang sama seperti yang ditanya oleh tindanan, dengan alamat sumber yang sama: ip route get 10.20.4.10 from 10.8.0.2 pada Linux, atau Find-NetRoute -RemoteIPAddress 10.20.4.10 dalam PowerShell. Outputnya menamakan laluan yang benar-benar akan digunakan, dan itu selalunya bukan yang anda jangkakan semasa membaca jadual.
Antara laluan yang sepadan, biasanya prefiks yang lebih khusus menang: /24 mengalahkan /16 untuk alamat yang berada dalam kedua-duanya. Antara padanan yang sama panjang, metrik yang lebih rendah menang, dan laluan yang dipasang pada pautan yang mati dilangkau. Dua tunnel yang menolak /24 yang sama dengan metrik yang sama ialah kes lain: kernel menyimpan kedua-dua laluan dan memilih antaranya, jadi hasilnya boleh bergilir-gilir dan bukannya mengikut urutan klien disambungkan. Inilah keadaan yang menghasilkan corak Isnin-berfungsi-Selasa-gagal, dan menyambung semula dalam urutan lain tidak mengubahnya.
3. Semak sama ada peraturan dasar mengubah hala carian
Sebelum jadual laluan dirujuk, kernel menelusuri peraturan dasarnya. Sesuatu peraturan boleh menghantar trafik daripada sumber, pengguna atau tanda tembok api tertentu ke jadual yang sama sekali berbeza, jadi prefiks pemenang dalam jadual utama mungkin tidak pernah dirujuk untuk aliran itu. ip rule show menyenaraikannya mengikut urutan penilaian, dan ip route show table 100 menunjukkan apa yang sebenarnya terkandung dalam jadual yang dipilih.
Di sini terletak dua perangkap. Peraturan yang menghala ke jadual kosong menghasilkan carian yang jatuh ke peraturan seterusnya, jadi peraturan itu kelihatan tidak melakukan apa-apa. Yang kedua ialah nombor keutamaan itu sendiri: peraturan dibaca mengikut urutan menaik, dan nilai terbina dalam ialah 0 local, 32766 main dan 32767 default. Peraturan bernombor di bawah 32767 dirujuk sebelum peraturan lalai yang menangkap segala-galanya. Peraturan bernombor di atas 32767 terletak di belakangnya dan hanya dicapai apabila tiada jadual terdahulu menjawab, yang dihalang oleh laluan lalai biasa dalam main, jadi dalam amalan ia tidak pernah dicapai dan diam-diam tidak melakukan apa-apa sementara ia kelihatan terpasang. Jika klien menulis peraturan dan laluan, semak kedua-duanya, dan semak semula selepas sambung semula, kerana profil yang ditulis semula boleh menambah peraturan kedua dengan keutamaan berbeza.
4. Pisahkan seri laluan daripada pelan alamat berganda
Kadangkala prefiks sama sekali bukan masalahnya. Dua tapak yang kedua-duanya menggunakan 192.168.1.0/24 bermakna alamat yang sama mengenal pasti dua hos berbeza, dan tiada laluan boleh membezakannya. Laluan hos ke salah satu daripada dua jawapan hanya berfungsi sehingga tapak lain menjawab nama yang sama, dan kemudian pengecualian itu diam-diam menjadi punca masalah.
Petunjuknya ialah alamat destinasi adalah sama pada kedua-dua laluan dan hanya pemilik yang dimaksudkan berbeza. Itu keputusan pelan alamat, bukan pelarasan penghalaan: nombor semula satu pihak, letakkan satu pihak di belakang gateway yang menterjemah, atau capai tapak kedua melalui proksi yang menyelesaikan namanya sendiri. Menurunkan laluan lalai atau menimbun pengecualian hos hanya memindahkan pertembungan itu.
5. Sahkan bahawa penyelesai bersetuju dengan laluan
Nama yang diselesaikan ke alamat persendirian yang salah menghasilkan semua gejala konflik penghalaan dan tidak satu pun puncanya. Bandingkan jawapan yang diterima hos dengan alamat yang benar-benar digunakan destinasi, dan semak penyelesai mana yang menjawab. Jika tunnel menolak penyelesai, klien sepatutnya memasangnya untuk aliran yang menggunakan tunnel; jika tidak, hos terus bertanya kepada penyelesai tempatan, yang mungkin menjawab daripada domain carian atau rekod dalam cache.
Tanya penyelesai secara langsung dan catat pelayan yang menjawab. Jawapan dalam cache dengan TTL pendek juga boleh menjelaskan mengapa permintaan pertama selepas sambung semula berkelakuan berbeza daripada yang kelima.
6. Sambung semula, periksa keadaan yang digunakan, kemudian uji kedua-dua aliran
Selepas pembetulan, sambung semula dan periksa apa yang sebenarnya dipasang oleh klien dan bukannya mempercayai editor profil. Baca semula peraturan, jadual dan jawapan ip route get yang terhasil. Klien kedua boleh memasang semula laluannya sendiri semasa menyambung dan mencipta semula konflik, sebab itulah semakan keadaan mesti berlaku selepas klien terakhir menyambung, bukan sebelum itu.
Uji dua aliran, bukan satu: permintaan yang dahulunya gagal, dan sumber yang sepatutnya menggunakan tunnel yang lain. Memindahkan semua trafik persendirian ke satu sambungan akan membuat ujian pertama lulus sambil merosakkan yang kedua, dan hanya ujian berpasangan yang menangkapnya. Catat setiap pengecualian yang anda kekalkan, bersama destinasi dan sebabnya, supaya orang seterusnya dapat membezakan laluan hos yang disengajakan daripada yang tertinggal.