Tiga desain memecahkan masalah laboratorium yang sama: LAN kecil harus keluar melalui rekan WireGuard sementara gateway itu sendiri mempertahankan uplink biasanya. Jalan pintas yang menggoda adalah memindahkan rute default router ke dalam terowongan, tetapi itu merusak jalur manajemen kotak itu sendiri dan semua yang diteruskannya. Opsi yang menarik adalah perutean berbasis kebijakan yang dibatasi pada satu antarmuka dan satu prefiks. Pilih di antara keduanya dengan menjawab tiga pertanyaan tentang mesin yang benar-benar Anda miliki.

Putuskan di mana jalur keluar berada

Pertanyaan pertama: apakah host ini meneruskan untuk hal lain? Gateway laboratorium khusus dapat hidup dengan kebijakan penerusan yang membuang secara default. Router dengan tugas produksi tidak bisa, dan melapisi kumpulan aturan pesaing di atas firewall terkelola adalah cara gangguan dijadwalkan. Kedua: bisakah Anda memiliki dua objek kebijakan dan urutannya lintas reboot? Ketiga: apakah rekan yang Anda miliki mengizinkan alamat sumber terowongan Anda dan menawarkan jalan keluar internet? Rekan yang hanya mengekspos jaringan privat adalah produk lain, dan tidak ada perubahan perutean lokal yang memperbaikinya. Jika ada jawaban tidak, letakkan jalur keluar di ruang nama atau di mesin virtual sekali pakai.

Ruang nama atau VM memakan memori dan memberi Anda radius ledakan yang bersih. Perutean berbasis kebijakan memakan dua aturan dan menyisakan satu kotak untuk di-debug.

Pilih jalur keluar yang mengizinkan sumber Anda

Sebagian besar kegagalan di laboratorium ini terjadi sebelum satu pun aturan firewall ada. Operator jalur keluar harus menerima alamat sumber yang dibawa paket Anda setelah terjemahan, yang dalam desain ini adalah alamat terowongan dan bukan prefiks LAN. Itulah sebabnya penyamaran termasuk dalam desain sejak awal, bukan sebagai tambahan belakangan.

Konfirmasikan tiga hal dengan operator: rekan mengizinkan alamat terowongan Anda, ia meneruskan IPv4 alih-alih berakhir pada dirinya sendiri, dan ia menerapkan NAT keluar. Tanpa yang pertama, paket Anda tiba lalu lenyap. Tanpa yang ketiga, paket keluar dengan sumber privat dan mati pada lompatan berikutnya. Lalu periksa bahwa wg-quick tidak memasang rute default-nya sendiri, yang dicegah oleh Table = off; pengaturan itu menekan pembuatan rute, bukan pemeriksaan AllowedIPs milik rekan atau penanganan DNS-nya.

Dua objek kebijakan melakukan pengarahan

Pengarahan membutuhkan tabel dan aturan. Tabel memuat dua rute: prefiks LAN keluar dari antarmuka LAN dan rute default keluar dari terowongan. Aturan mengirim lalu lintas yang tiba di antarmuka LAN dan membawa prefiks itu ke dalam tabel. Gunakan pemilih iif bersama pencocokan sumber, karena paket WireGuard milik gateway berasal secara lokal dan tidak pernah cocok dengan antarmuka masuk.

Penjaga datang sebelum pencarian, bukan sesudahnya. Urutan itulah keseluruhan sifat keamanan desain ini.

Penjaga adalah aturan kedua pada pemilih yang sama yang putusannya unreachable. Beri ia prioritas numerik lebih tinggi agar pencarian tetap menang selama terowongan hidup. Ketika rute terowongan hilang, pencarian mengembalikan kosong dan penjaga menghentikan pencarian alih-alih membiarkannya jatuh ke rute default WAN di tabel utama.

ip rule add from 192.168.50.0/24 iif lan0 lookup 51861 pref 1000
ip rule add from 192.168.50.0/24 iif lan0 unreachable pref 1001
ip route add table 51861 default dev wg0

Tutup celah fallback sebelum membukanya

Pasang penjaga lebih dulu dan pencarian sesudahnya. Melakukannya terbalik menyisakan jendela beberapa detik di mana lalu lintas klien uji dapat mencapai uplink.

Filter melengkapi gambaran. Di kait forward terima arah LAN ke terowongan untuk prefiks uji dan arah balik yang sudah terbentuk, lalu jatuhkan sisanya; NAT untuk prefiks itu ke antarmuka terowongan masuk ke postrouting. Membiarkan policy drop pada rantai forward itulah yang mengubah rute yang hilang menjadi keheningan alih-alih kebocoran. Penyaringan jalur balik memerlukan mode longgar pada antarmuka terowongan, karena sumber publik yang tiba setelah didekapsulasi memiliki rute balik terbaiknya di sisi WAN. Linux mengambil nilai tertinggi antara all dan per antarmuka, jadi menyetel antarmuka terowongan bukan sama dengan melemahkan validasi di mana-mana.

Buktikan dengan kasus kegagalan

Tanyakan kepada kernel pertanyaan yang tepat dengan menyebut alamat sumber klien dan antarmuka tempat ia tiba. Pencarian tanpa keduanya menjawab pertanyaan lain dan akan tampak benar dalam kedua kasus. Lalu lihat penghitung firewall, status transfer rekan, dan layanan klien itu sendiri.

Uji penghapusan dengan benar. Hentikan terowongan sambil membiarkan aturan dan filter di tempatnya: klien seharusnya tersendat dan lalu lintas gateway sendiri seharusnya tetap berjalan. Lalu hentikan rekan tanpa menyentuh antarmuka lokal, dan itulah kasus yang menangkap desain yang hanya mengandalkan keberadaan rute. Terakhir, reboot dan periksa ulang urutan aturan, karena kait pembongkaran yang menghapus penjaga mengembalikan seluruh desain ke tabel utama. Catat nomor tabel, prioritas, dan nama antarmuka pada tiket perubahan, karena orang berikutnya yang menambah aturan adalah orang yang akan merusak ini.

Artikel terkait