Satu /24 untuk printer laboratorium hilang di antara dua panggilan ip route show, dan log klien hanya mengatakan bahwa jaringan berubah. Tidak ada yang salah dengan perintah, prefiks, atau hak istimewa Anda. Klien korporat yang memiliki model perutean host menegaskan kembali model itu setiap kali orang lain mengeditnya, sehingga entri yang Anda tambahkan dihapus sebagai penyusup. Melawannya di tabel yang sama adalah posisi yang kalah. Solusinya adalah berhenti bersaing untuk tabel itu sepenuhnya dan menempatkan pengecualian di tempat yang tidak pernah dilihat pemantau.

Pemantau menjelaskan rute yang hilang

Tunjukkan ini sebelum Anda mendesain ulang apa pun: baca tabel, tambahkan prefiks, tunggu beberapa detik, baca lagi. Jika entri tidak ada dan Anda tidak mengetik apa pun untuk menghapusnya, ada agen yang mengawasi. Temukan proses yang memiliki perilaku itu dan baca jurnalnya di sekitar saat rute menghilang, karena layanan yang sama biasanya memelihara terowongan, filter paket, dan konfigurasi resolver. Membunuhnya agar rute Anda bertahan adalah pertukaran yang akan Anda sesali pada koneksi ulang berikutnya.

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

Prefiks dan antarmuka di atas adalah placeholder. Menyalin nama antarmuka dari contoh yang berfungsi di mesin lain adalah alasan paling umum demonstrasi ini tidak menghasilkan apa pun.

Tabel kedua tidak terlihat oleh pemantau

Agen hanya membangun ulang tabel yang dimilikinya. Beri pengecualian tabelnya sendiri plus aturan yang mengirim tujuan yang cocok ke sana, dan tabel utama tidak pernah berubah, sehingga tidak ada yang perlu dikoreksi agen. Itulah seluruh idenya: satu ruang nama rute yang dipelihara orang lain, dan satu yang hanya Anda sentuh.

Pertukarannya adalah pemeliharaan. Dua objek bisa menjauh, dan posisi aturan dalam daftar sama pentingnya dengan rute di dalam tabel yang dipilihnya.

Bangun pengecualian, lalu buat ia menang

Buat tabel, pasang rute, dan tambahkan aturan yang memilih tabel untuk tujuan itu. Prioritas menentukan apakah aturan Anda diperiksa sebelum atau sesudah aturan yang disisipkan klien, dan aturan yang diurutkan belakangan tidak pernah tercapai, jadi angkanya adalah bagian dari desain, bukan hiasan. Lalu tanyakan kepada kernel apa yang sebenarnya akan dilakukannya, yang merupakan pertanyaan berbeda dari 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 rute yang akan digunakan kernel, termasuk perangkat dan alamat sumber. Perintah ini tidak mencetak pengenal tabel, jadi pasangkan dengan ip rule show saat Anda perlu memastikan tabel mana yang menang. Bersama-sama keduanya menjawab satu-satunya pertanyaan penting: apakah lalu lintas ke alamat itu keluar dari tempat yang Anda maksud?

Bentuk lain dari ide yang sama

Polanya menjadi umum begitu Anda berhenti berpikir dalam tujuan. Subnet lokal dapat tetap terjangkau sementara terowongan mempertahankan rute default. Balasan dari server SSH yang terhubung ke LAN dapat keluar melalui antarmuka tempat balasan itu datang alih-alih menghilang ke terowongan. Dan aturan berbasis antarmuka dapat mendorong semua yang datang pada antarmuka nirkabel ke terowongan sementara lalu lintas yang dihasilkan host sendiri tetap di Ethernet:

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

Kasus terakhir itu cocok dengan antarmuka masuk, bukan tujuan, yang merupakan jenis aturan dan model mental berbeda. Lalu lintas yang diteruskan juga memerlukan net.ipv4.ip_forward aktif, dan ujung jauh harus merutekan ulang rentang sumber atau menerjemahkannya; aturan di satu mesin tidak pernah menciptakan separuh jalur lainnya.

Perlakukan aturan sebagai sekali pakai

Aturan dan rute tabel hidup di memori. Setelah koneksi ulang, perangkat terowongan dapat berganti nama, alamat yang ditetapkan dapat berpindah, dan aturan yang menyimpan nilai lama diam-diam berhenti cocok. Terapkan kembali seluruh perubahan dari satu skrip yang memilikinya, lalu periksa ulang ip rule show, nama perangkat saat ini, dan ip route get baru terhadap tujuan nyata sebelum memercayai pengecualian itu.

Dua batas bertahan seberapa pun hati-hatinya. Klien masih mengendalikan aturan filternya sendiri dan konfigurasi resolver, dan pengecualian perutean tidak menggantikan keduanya. Jika klien juga menghapus aturan kebijakan Anda, jalur yang didukung adalah kebijakan terowongan terpisah miliknya sendiri atau klien yang mengizinkan Anda mengelola rute, seperti OpenConnect; menambal biner vendor untuk membungkam pemantaunya adalah komitmen pemeliharaan dengan pemeriksaan integritas yang menyertainya.

Tulis nomor tabel, prioritas, dan tujuan dalam catatan di samping skrip. Jika tidak, orang berikutnya menemukan aturan yang mengalahkan terowongan dan tidak punya cara untuk mengetahui alasannya.

Artikel terkait