Tabel perutean sering dibaca sebagai rusak setiap kali kolom gateway tampak kosong, padahal barisnya biasanya sudah lengkap dengan sendirinya. Bidang via hanya muncul ketika kernel menyerahkan paket ke alamat hop berikutnya; rute yang terpasang pada antarmuka mencapai tujuannya melalui resolusi lapisan tautan atau melalui pasangan titik-ke-titik. Membaca kolom dari kiri ke kanan memberi tahu Anda kasus mana yang sedang terjadi, dan pembacaan itu sebaiknya dilakukan sebelum siapa pun menyunting rute default. Sebagian besar tiket soal gateway yang hilang berakhir pada pembedaan ini.

Baca baris rute kolom demi kolom

Setiap entri dibuka dengan tujuan dan panjang prefiksnya, lalu menambahkan pengubah dalam kosakata tetap: via, dev, proto, scope, src dan metric. Baris seperti 198.51.100.0/24 dev tun0 proto kernel scope link src 198.51.100.2 padat tetapi sepenuhnya terspesifikasi. Tidak ada yang hilang darinya, dan tidak ada alamat perute yang tersirat.

Hilangnya via adalah bagian yang menarik. Tanpa hop berikutnya, kernel menyelesaikan tujuan langsung pada antarmuka yang disebutkan, yang bagi terowongan berarti menyerahkan frame ke perangkat terowongan dan membiarkan enkapsulasi mengambil alih dari sana. proto kernel mencatat bahwa entri dipasang secara otomatis saat alamat diberikan, bukan diketik oleh administrator. scope link menyatakan bahwa tujuan dapat dijangkau pada tautan itu tanpa melewati perute, dan src menyebutkan alamat yang akan diutamakan kernel sebagai sumber bagi lalu lintas yang cocok.

Sekarang baca rute default dengan cara yang sama: default via 192.0.2.254 dev eth0 proto static metric 100. Di sini via hadir karena paket memang memerlukan hop berikutnya, dan hop itu sendiri harus dapat dijangkau di eth0. Kedua baris itu bukan varian satu sama lain; keduanya menjawab pertanyaan berbeda tentang ke mana lalu lintas pergi.

Dua bentuk rute yang saling tertukar

Rute subnet terowongan dan rute default terlihat mirip dalam tangkapan layar dan berperilaku sangat berbeda. Gunakan tabel di bawah sebagai bantuan membaca bidang-bidangnya, lalu pastikan angka sebenarnya pada mesin yang Anda debug alih-alih memercayai contoh dari panduan.

Piece of the lineWhat it settlesWhat it says nothing about
The destination and maskWhich packets are eligible to matchWhere those packets leave the host
via plus its addressWhich next hop receives them, and therefore that a router is involvedWhether that router is reachable or sane
devWhich interface carries the encapsulated or raw packetWhether the interface is up or has a carrier
proto and scopeWho installed the entry and how far the destination is considered to beWhether a firewall later drops the traffic

Yang tidak dapat diberitahukan tabel adalah niat. Rute langsung ke rentang privat melalui terowongan adalah desain terowongan terpisah yang disengaja; bentuk yang sama muncul pada host yang seharusnya mengirim semuanya melalui VPN adalah gejala. Niat hidup dalam konfigurasi yang menghasilkan entri itu, jadi lihat alat yang memasangnya sebelum Anda menyimpulkan kernel melakukan kesalahan.

Demikian pula, gateway yang hilang bukan izin untuk mengarangnya. Jika sebuah rute benar-benar memerlukan hop berikutnya, hop itu harus dapat dijangkau pada antarmuka yang membawanya, dan untuk terowongan titik-ke-titik alamat pasangan bukan objek yang sama dengan alamat lokal. Memperlakukan alamat terowongan lokal sebagai perute Ethernet adalah cara umum menghasilkan rute yang tampak benar dan tidak meneruskan apa pun.

Tanyakan kepada kernel baris mana yang benar-benar akan dipakainya

Membaca tabel tidak sama dengan melakukan pencarian, karena kernel berkonsultasi dengan aturan kebijakan, beberapa tabel, dan entri cache sebelum menjawab. Kata kerja yang melakukan pencarian sebenarnya adalah ip route get, dan ia mencetak rute yang akan diambil paket dengan sifat-sifat tersebut.

ip route get 203.0.113.37 from 198.51.100.2 iif tun0

Ganti dengan tujuan yang benar-benar Anda pedulikan, lalu tambahkan from atau iif ketika lalu lintas dipilih berdasarkan sumber atau diteruskan, karena pencarian lokal biasa dapat memilih jalur berbeda dari klien yang diteruskan. Balasannya menyebutkan antarmuka, alamat sumber yang dipilih, dan hop berikutnya mana pun, yang merupakan informasi yang sama dengan yang akan dipakai paket untuk dirutekan pada saat itu.

Jika jawabannya mengejutkan Anda, cetak aturannya sebelum mengubah apa pun: ip -4 rule show mendaftarnya dalam urutan prioritas, dan klien VPN yang memasang tabelnya sendiri atau aturan untuk paket bertanda tidak akan muncul sama sekali di tabel utama. Mendaftar setiap tabel menutup celah itu.

ip -4 route show table all | grep -E 'tun|default'

Periksa lapisan dasar sebelum mengganti rute default

Paket terowongan itu sendiri harus mencapai titik akhir jarak jauh, dan mereka melakukannya melalui antarmuka fisik menggunakan rute yang ada sebelum VPN menyala. Mengganti seluruh rute default tanpa mematok titik akhir itu mengirim paket terenkapsulasi ke dalam terowongan yang seharusnya mereka bangun, dan koneksinya runtuh. Pastikan dulu jalur ke titik akhir dengan pencarian hanya untuk alamat titik akhir.

Pisahkan tiga hal saat Anda melakukan perubahan: rute titik akhir yang harus tetap di antarmuka fisik, rentang privat yang seharusnya masuk ke terowongan, dan rute default yang memutuskan semua hal lain. Pisahkan ketiganya dalam urutan itu, terapkan satu per satu, dan jalankan ulang pencarian setelah setiap langkah. Ping yang gagal sesudahnya membuktikan sangat sedikit dengan sendirinya, karena izin, perutean balasan, DNS, dan layanan itu sendiri semuanya berada di hilir rute yang benar.

Tuliskan empat nilai yang diberikan baris itu sebelum penyuntingan: tujuan, hop berikutnya atau ketiadaannya, perangkat, dan sumber yang dipilih. Jika perubahan kemudian menggeser salah satunya, Anda tahu keputusan mana yang benar-benar diubah, dan Anda dapat memulihkan satu entri alih-alih menebak seluruh tabel.

Artikel terkait