Satu /24 untuk pencetak makmal hilang antara dua panggilan ip route show, dan log klien hanya menyatakan rangkaian telah berubah. Tiada apa-apa yang salah dengan arahan, awalan atau keistimewaan anda. Klien korporat yang memiliki model penghalaan hos menegaskan semula model itu setiap kali orang lain mengeditnya, jadi entri yang anda tambah dibuang sebagai penyusup. Berlawan dengannya dalam jadual yang sama ialah kedudukan yang kalah. Penyelesaiannya ialah berhenti bersaing untuk jadual itu sepenuhnya dan letakkan pengecualian di tempat yang pemantau tidak pernah lihat.

Pemantau menjelaskan laluan yang hilang

Tunjukkan ini sebelum anda mereka semula apa-apa: baca jadual, tambah awalan, tunggu beberapa saat, baca lagi. Jika entri tiada dan anda tidak menaip apa-apa untuk mengeluarkannya, ada ejen yang memerhati. Cari proses yang memiliki tingkah laku itu dan baca jurnalnya sekitar saat laluan hilang, kerana perkhidmatan yang sama biasanya menyelenggara terowong, penapis paket dan konfigurasi resolver. Membunuhnya supaya laluan anda kekal ialah pertukaran yang akan anda sesali pada sambungan semula seterusnya.

ip route show
ip route add 192.168.2.0/24 dev enp0s31f6
sleep 5; ip route show

Awalan dan antara muka di atas ialah pemegang tempat. Menyalin nama antara muka daripada contoh yang berfungsi pada mesin lain ialah sebab paling biasa demonstrasi ini tidak menghasilkan apa-apa sama sekali.

Jadual kedua tidak kelihatan kepada pemantau

Ejen hanya membina semula jadual yang dimilikinya. Beri pengecualian jadualnya sendiri serta peraturan yang menghantar destinasi yang sepadan ke sana, dan jadual utama tidak pernah berubah, jadi ejen tiada apa untuk dibetulkan. Itulah keseluruhan idea: satu ruang nama laluan yang diselenggara orang lain, dan satu yang hanya anda sentuh.

Pertukaran itu ialah penyelenggaraan. Dua objek boleh terpisah, dan kedudukan peraturan dalam senarai sama pentingnya dengan laluan di dalam jadual yang dipilihnya.

Bina pengecualian, kemudian jadikan ia menang

Cipta jadual, pasang laluan dan tambah peraturan yang memilih jadual untuk destinasi itu. Keutamaan menentukan sama ada peraturan anda diperiksa sebelum atau selepas peraturan yang dimasukkan klien, dan peraturan yang disusun lebih lewat tidak pernah dicapai, jadi nombor itu sebahagian daripada reka bentuk, bukan hiasan. Kemudian tanya kernel apa yang sebenarnya akan dilakukannya, yang merupakan soalan berbeza daripada apa yang anda konfigurasikan.

ip rule add to 192.168.2.0/24 table 110 pref 30010
ip route add 192.168.2.0/24 dev enp0s31f6 table 110
ip route get 192.168.2.50

ip route get menyelesaikan laluan yang akan digunakan kernel, termasuk peranti dan alamat sumber. Ia tidak mencetak pengecam jadual, jadi pasangkannya dengan ip rule show apabila anda perlu mengesahkan jadual mana yang menang. Bersama-sama mereka menjawab satu-satunya soalan penting: adakah trafik ke alamat itu keluar di tempat yang anda maksudkan?

Bentuk lain bagi idea yang sama

Corak itu menjadi umum sebaik sahaja anda berhenti berfikir dalam destinasi. Subnet tempatan boleh kekal boleh dicapai sementara terowong mengekalkan laluan lalai. Balasan daripada pelayan SSH yang disambungkan ke LAN boleh keluar melalui antara muka tempat ia tiba dan bukannya hilang ke dalam terowong. Dan peraturan berasaskan antara muka boleh menolak semua yang tiba pada antara muka wayarles ke dalam terowong sementara trafik yang dijana oleh hos sendiri kekal di Ethernet:

ip rule add iif wlan0 table 10
ip route add default dev tun0 table 10

Kes terakhir itu sepadan dengan antara muka masuk dan bukan destinasi, yang merupakan jenis peraturan dan model mental yang berbeza. Trafik yang dimajukan juga memerlukan net.ipv4.ip_forward diaktifkan, dan hujung jauh mesti menghalakan semula julat sumber atau menterjemahkannya; peraturan pada satu mesin tidak pernah mencipta separuh lagi laluan.

Anggap peraturan itu boleh dibuang

Peraturan dan laluan jadual hidup dalam memori. Selepas sambungan semula peranti terowong boleh dinamakan semula, alamat yang diberikan boleh bergerak, dan peraturan yang memegang nilai lama berhenti sepadan secara senyap. Terapkan semula seluruh perubahan daripada satu skrip yang memilikinya, kemudian semak semula ip rule show, nama peranti semasa dan ip route get baharu terhadap destinasi sebenar sebelum mempercayai pengecualian itu.

Dua sempadan kekal walau apa pun penjagaan. Klien masih mengawal peraturan penapisnya sendiri dan konfigurasi resolver, dan pengecualian penghalaan tidak mengatasi kedua-duanya. Jika klien juga memadam peraturan dasar anda, laluan yang disokong ialah dasar terowong terpecah miliknya sendiri atau klien yang membenarkan anda mengurus laluan, seperti OpenConnect; menampal binari vendor untuk menyenyapkan pemantaunya ialah komitmen penyelenggaraan dengan pemeriksaan integriti yang dilampirkan.

Tulis nombor jadual, keutamaan dan destinasi dalam nota di sebelah skrip. Jika tidak, orang seterusnya menemui peraturan yang mengatasi terowong dan tiada cara untuk mengetahui sebabnya.

Artikel berkaitan