Set nftables yang disuap DNS ke WireGuard: cara penyerahan berfungsi
Jawapan DNS boleh menyuap set nftables, tetapi set tidak menghalakan apa-apa. Ikuti empat penyerahan dan tiga jangka hayat yang menentukan sama ada pengarahan berjaya.
Nama diselesaikan kepada alamat, dan alamat itu boleh masuk ke set tembok api yang kemudian mempengaruhi penghalaan, yang menjadikan pengarahan berasaskan nama mungkin tanpa proksi. Perangkapnya ialah empat komponen mesti menyerah dengan betul: penyelesai, set, pengelas yang menanda aliran baharu, dan rakan yang membawanya. Setiap penyerahan gagal secara berbeza dan setiap satu menyimpan masanya sendiri.
Anggap reka bentuk ini sebagai rantaian, bukan konfigurasi. Persoalan pada setiap langkah ialah komponen mana yang memiliki keputusan dan apa yang berlaku apabila inputnya tiada.
Apa yang jawapan DNS boleh dan tidak boleh lakukan
dnsmasq boleh menyalin alamat daripada jawapan ke dalam set nftables, iaitu suapan dan bukan keputusan penghalaan. Pilihan itu, didokumenkan dalam manual dnsmasq, menamakan keluarga, jadual dan set, dan 4# di hadapannya hanya memilih rekod A, jadi destinasi v6 memerlukan susunan sendiri. Set itu mesti sudah wujud, kerana penyelesai menambah elemen kepada sesuatu yang dicipta oleh pemilik tembok api. Tiada apa-apa pada langkah itu memilih antara muka, jadual atau rakan.
Klien juga mesti menggunakan penyelesai itu untuk nama tersebut. Aplikasi dengan DNS tersulit sendiri, atau jawapan cache dari sebelum dasar wujud, bersambung tanpa mencipta sebarang entri dalam set.
Set ialah input, bukan laluan
Elemen dalam set ialah syarat padanan. Sesuatu mesti melihatnya, memutuskan bahawa paket ini memulakan aliran baharu, dan menggunakan dasar yang menghantar aliran melalui terowong. Pada Linux itu biasanya bermaksud laluan keluar yang mampu menghala dan boleh meletakkan tanda, peraturan yang menghantar paket bertanda ke jadual khusus, dan laluan dalam jadual itu menuju peranti WireGuard. Keahlian semata-mata tidak memasang apa-apa daripada 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
Rakan menggunakan pemeriksaan liputan kedua yang orang lupakan. WireGuard menyulitkan paket hanya untuk rakan yang alamat dibenarkannya merangkumi destinasi, jadi laluan dasar ke antara muka tidak memadai apabila senarai rakan mengecualikan awalan itu. Simpan senarai itu di bawah kawalan pemilik penghalaan daripada bergantung pada penciptaan laluan yang mungkin dilakukan pengurus.
Tanda, jadual dan liputan rakan
Tanda ialah ruang nama dikongsi, jadi nilai dan topeng mesti dipersetujui dengan apa sahaja yang menggunakannya. Peraturan yang menghantar trafik bertanda ke jadual khusus memerlukan hasil yang ditentukan apabila jadual itu tiada laluan sepadan, kerana carian tanpa jawapan boleh berterusan ke peraturan seterusnya dan menghantar paket keluar melalui antara muka fizikal. Laluan lalai blackhole di dalam jadual khusus menukar pelarian senyap itu kepada penolakan yang kelihatan. Apa yang reka bentuk masih tidak boleh lakukan ialah menutup apabila gagal bagi destinasi yang tidak pernah masuk ke dalam set.
Paket luar terowong itu sendiri mesti terlepas daripada pengelas. Alat WireGuard menyediakan tanda soket khusus untuk tujuan itu, dan menggunakannya menghalang enkapsulasi daripada dihalakan semula ke antara muka yang sedang dibinanya.
Uji setiap jangka hayat secara berasingan
Tiga storan menua mengikut tiga jadual: cache penyelesai, elemen set dan sambungan yang dijejaki. Uji semuanya mengikut urutan itu dan lihat sama ada setiap satu bergerak apabila sepatutnya. Perintah di bawah membaca penyelesai, set, jadual sambungan dan peraturan dasar tanpa mengubah apa-apa.
dig +short office.example
nft list set inet vpn_select office_v4
conntrack -L -d 10.60.8.15
ip rule show
Carian segar yang menambah elemen membuktikan suapan berfungsi, manakala elemen lama yang hidup lebih lama daripada jawapannya ialah ketidakpadanan jangka hayat yang wajar dicatat. Sambungan baharu muncul dalam jadual sambungan dengan tanda yang dijangka menunjukkan pengelas telah berjalan, dan sambungan lama yang mengekalkan tanda asalnya ialah tingkah laku betul, bukan pepijat. Senarai peraturan menjawab sama ada carian dasar itu wujud, yang merupakan soalan berbeza daripada sama ada ia padan. Baca keempat-empat output mengikut urutan itu dan penyerahan yang gagal akan mendedahkan dirinya.
Apabila keperluannya ialah nama tertentu sentiasa menggunakan satu laluan, set yang disuap DNS tidak dapat membuktikannya, kerana alamat dikongsi juga membawa nama lain. Proksi atau mekanisme peringkat aplikasi ialah alat untuk jaminan itu.