Antarmuka menyala, konfigurasi peer terlihat benar, dan tidak ada handshake yang pernah selesai. Menambahkan rute default melalui terowongan adalah langkah yang sering menyebabkannya: tabel rute yang sama kini menentukan ke mana paket terenkripsi milik terowongan harus pergi, dan jawaban yang dihasilkannya kembali ke dalam terowongan. Tidak ada yang dapat membawa paket luar yang akan membawa paket dalam, sehingga koneksi berhenti sebelum dimulai. Perbaikannya kecil, tetapi memiliki urutan, dan verifikasi lebih penting daripada penyuntingan.

Pastikan loop sebelum mengubah rute

Baca alamat endpoint peer saat ini lalu tanyakan kepada tumpukan perutean ke mana paket ke alamat itu akan pergi. Jika jawabannya menyebut antarmuka terowongan, loop terkonfirmasi dan tidak perlu diagnostik lebih lanjut. Simpan kedua keluaran di catatan perubahan sebelum menyentuh apa pun, karena perbandingan setelah perbaikan adalah dua perintah yang sama. Loop tidak halus setelah terlihat; kesulitannya adalah antarmuka terlihat sehat saat itu terjadi.

sudo wg show wg1 endpoints
ip route get 198.51.100.20
ip rule show

Sertakan aturan kebijakan dalam tangkapan itu. Rute default yang terlihat benar di tabel utama masih bisa kalah dari aturan yang memilih tabel berbeda untuk lalu lintas bertanda atau tanpa tanda, dan loop akan muncul lagi dengan tabel rute yang tampak baik.

Baca jalur endpoint, bukan jalur terowongan

Jalur endpoint adalah rute yang diambil datagram terenkripsi ke alamat publik peer, dan rute itu harus tetap di luar terowongan selama terowongan ada. Jalur terowongan adalah semua yang boleh dibawa peer. Kedua jalur itu berbagi satu tabel rute, dan itulah tepatnya mengapa satu entri penangkap semua dapat meruntuhkan keduanya ke dalam satu sama lain. Memisahkan lalu lintas terowongan dari transportasi terowongan itu sendiri adalah seluruh masalah desain, dan setiap alat yang didukung menyelesaikannya di suatu tempat sedikit berbeda.

Periksa kedua keluarga alamat secara terpisah jika antarmuka membawa keduanya. Pengecualian IPv4 yang berfungsi tidak menjelaskan apakah endpoint IPv6 masih dapat dijangkau, dan konfigurasi campuran dapat tampak berfungsi sampai alamat IPv6 peer dipilih.

Pulihkan jalur endpoint dengan satu perubahan yang koheren

Ada dua pendekatan yang didukung, dan mencampurnya adalah cara penyiapan yang berfungsi menjadi tidak dapat diprediksi. Yang pertama adalah membiarkan alat yang memiliki antarmuka menangani seluruh terowongan: wg-quick memiliki penanganan khusus untuk rentang peer default yang memasang tabel terpisah, aturan kebijakan, dan tanda soket, yang menjaga paket luar tetap di luar terowongan. Biarkan mekanisme itu utuh alih-alih mereproduksi separuhnya dengan tangan. Penyiapan yang mencampur default yang ditambahkan manual dengan manajer yang sudah memasang tanda dan aturan cenderung gagal setelah menyambung ulang, ketika manajer menulis ulang keadaan yang diasumsikan langkah manual.

Yang kedua adalah desain manual di mana endpoint mendapat rute host eksplisit melalui gateway fisik. Tambahkan rute itu sebelum rute default, ganti alih-alih menambahkan agar entri lama tidak bisa menang, dan pastikan pencarian sesudahnya.

sudo ip route replace 198.51.100.20/32 via 192.0.2.1 dev eth0
ip route get 198.51.100.20
sudo ip route add default dev wg1

Verifikasi, lalu simpan jalan kembali

Stempel waktu handshake yang maju adalah bukti pertama, dan itu lebih kuat daripada antarmuka yang sekadar ada. Ikuti dengan uji aplikasi melalui terowongan, lalu turunkan antarmuka dengan sengaja dan pastikan host kembali ke keadaan yang dapat digunakan alih-alih menyimpan rute default yang menunjuk ke tempat kosong. Langkah terakhir itu yang dilewatkan orang, dan itulah yang menentukan apakah reboot akan meninggalkan mesin tanpa koneksi.

sudo wg show wg1 latest-handshakes
sudo wg-quick down wg1
ip route show default
ip route get 198.51.100.20

Sebelum semua ini, simpan keadaan perutean saat ini dan pastikan ada jalur masuk yang tidak bergantung pada terowongan: konsol, alamat manajemen out-of-band, atau kolega di lokasi. Mesin jarak jauh yang kehilangan rute default-nya tidak dapat dipulihkan melalui koneksi yang baru saja hilang, dan langkah runbook paling aman adalah langkah yang diambil sebelum perintah pertama.

Artikel terkait