Set nftables yang diberi DNS ke WireGuard: cara kerja penyerahan
Jawaban DNS dapat memberi makan set nftables, tetapi set tidak merutekan apa pun. Ikuti empat penyerahan dan tiga masa hidup yang menentukan apakah pengarahan berhasil.
Nama diselesaikan menjadi alamat, dan alamat itu bisa masuk ke set firewall yang kemudian memengaruhi perutean, sehingga pengarahan berbasis nama menjadi mungkin tanpa proxy. Jebakannya, empat komponen harus menyerahkan dengan benar: resolver, set, pengklasifikasi yang menandai alur baru, dan peer yang membawanya. Setiap penyerahan gagal dengan cara berbeda dan masing-masing menyimpan waktunya sendiri.
Perlakukan desain sebagai rantai, bukan konfigurasi. Pertanyaan di setiap langkah adalah komponen mana yang memiliki keputusan dan apa yang terjadi bila masukannya tidak ada.
Apa yang bisa dan tidak bisa dilakukan jawaban DNS
dnsmasq dapat menyalin alamat dari jawaban ke set nftables, yang merupakan pemberian makan, bukan keputusan perutean. Opsi itu, didokumentasikan di manual dnsmasq, menyebutkan famili, tabel, dan set, dan 4# di depannya hanya memilih record A, jadi tujuan v6 perlu pengaturan sendiri. Set harus sudah ada, karena resolver menambahkan elemen ke sesuatu yang dibuat pemilik firewall. Tidak ada yang memilih antarmuka, tabel, atau peer pada langkah itu.
Klien juga harus memakai resolver itu untuk nama. Aplikasi dengan DNS terenkripsi sendiri, atau jawaban cache dari sebelum kebijakan ada, terhubung tanpa membuat satu pun entri di set.
Set adalah masukan, bukan rute
Elemen dalam set adalah syarat pencocokan. Sesuatu harus melihatnya, memutuskan bahwa paket ini memulai alur baru, dan menerapkan kebijakan yang mengirim alur melalui terowongan. Di Linux itu biasanya berarti jalur keluaran yang mampu merutekan dan bisa memasang tanda, aturan yang mengirim paket bertanda ke tabel khusus, dan rute di tabel itu menuju perangkat WireGuard. Keanggotaan saja tidak memasang satu pun dari itu.
nft add set inet vpn_select office_v4 { type ipv4_addr\; }
ip rule add fwmark 0x40 table 200
ip route add default dev wg0 table 200
wg show wg0 allowed-ips
Peer menerapkan pemeriksaan cakupan kedua yang orang lupakan. WireGuard hanya mengenkripsi paket untuk peer yang alamat diizinkannya mencakup tujuan, jadi rute kebijakan ke antarmuka tidak cukup ketika daftar peer mengecualikan prefiks itu. Jaga daftar itu di bawah kendali pemilik perutean alih-alih mengandalkan pembuatan rute yang kebetulan dilakukan manajer.
Tanda, tabel, dan cakupan peer
Tanda adalah ruang nama bersama, jadi nilai dan masker harus disepakati dengan apa pun yang memakainya. Aturan yang mengirim lalu lintas bertanda ke tabel khusus butuh hasil yang jelas ketika tabel itu tidak punya rute yang cocok, karena pencarian tanpa jawaban bisa berlanjut ke aturan berikutnya dan mengirim paket keluar dari antarmuka fisik. Rute default blackhole di dalam tabel khusus mengubah pelarian sunyi itu menjadi penurunan yang terlihat. Yang masih tidak bisa dilakukan desain adalah menutup saat gagal untuk tujuan yang tidak pernah masuk set.
Paket luar terowongan itu sendiri harus lolos dari pengklasifikasi. Perkakas WireGuard menyediakan tanda soket persis untuk itu, dan memakainya mencegah enkapsulasi dirutekan kembali ke antarmuka yang sedang dibangunnya.
Uji setiap masa hidup secara terpisah
Tiga penyimpanan menua menurut tiga jadwal: cache resolver, elemen set, dan koneksi yang dilacak. Ujilah dalam urutan itu dan lihat apakah masing-masing bergerak saat seharusnya. Perintah di bawah membaca resolver, set, tabel koneksi, dan aturan kebijakan tanpa mengubah apa pun.
dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show
Pencarian segar yang menambah elemen membuktikan pemberian makan bekerja, sedangkan elemen basi yang hidup lebih lama dari jawabannya adalah ketidakcocokan masa hidup yang layak dicatat. Koneksi baru muncul di tabel koneksi dengan tanda yang diharapkan menunjukkan pengklasifikasi berjalan, dan koneksi lama yang mempertahankan tanda aslinya adalah perilaku benar, bukan bug. Daftar aturan menjawab apakah pencarian kebijakan itu ada, yang merupakan pertanyaan berbeda dari apakah ia cocok. Baca keempat keluaran dalam urutan itu dan penyerahan yang gagal akan menyingkap dirinya.
Ketika syaratnya adalah nama tertentu selalu memakai satu jalur, set yang diberi DNS tidak dapat membuktikannya, karena alamat bersama juga membawa nama lain. Proxy atau mekanisme tingkat aplikasi adalah alat untuk jaminan itu.