Kumpulan rakan WireGuard di hab: pemilikan sumber serta dasar
Jauhkan kumpulan rakan dengan alamat sumber yang sempit bagi setiap rakan dan dasar penghantaran, tanpa antara muka terowong berasingan untuk setiap kumpulan.
Hab yang menjalankan WireGuard boleh menjauhkan kumpulan rakan tanpa antara muka atau jadual penghalaan berasingan bagi setiap kumpulan. Dua mekanisme melakukan kerja itu, dan mengelirukan keduanya ialah sebab biasa sesuatu dasar kelihatan betul tetapi tidak melakukan apa-apa. Satu lapisan menentukan siapa boleh menuntut alamat sumber. Lapisan lain menentukan ke mana paket itu dibenarkan pergi.
Dua tugas, dijauhkan
Lapisan terowong menjawab soalan sempit: adakah kunci rakan ini membenarkan alamat sumber dalaman ini. Lapisan penghantaran menjawab soalan yang lebih luas: bolehkah paket ini keluar menuju destinasi itu. Kedua-duanya tidak menjawab soalan satu sama lain, dan kedua-duanya bukan dasar akses yang lengkap secara bersendirian.
Pemisahan itulah sebabnya rakan boleh disahkan, dialamatkan dengan betul, dan masih tidak dapat mencapai hos yang tidak sepatutnya dicapainya. Ia juga menjelaskan sebaliknya: peraturan tembok api yang membenarkan segala-galanya tidak membuktikan apa-apa tentang siapa yang boleh menuntut alamat mana.
Reka kedua-dua lapisan bersama-sama, kemudian uji kedua-duanya. Konfigurasi yang betul pada satu lapisan dan belum diuji pada lapisan lain gagal terbuka atau tertutup bergantung pada nilai lalai.
Berikan setiap rakan hanya alamatnya sendiri
Rakan berbilang hos menggoda anda untuk memberikan seluruh julat kumpulan di sebelah pelayan. Kebenaran itu ialah tuntutan alamat sumber, jadi klien yang terjejas atau salah dikonfigurasi boleh mengemukakan mana-mana alamat dalam julat itu dan terowong akan menerimanya. Peruntukkan /32 bagi setiap rakan untuk alamat dalamannya sendiri. Tetapkan julat kumpulan hanya pada klien, di mana ia menerangkan destinasi mana yang boleh dicapai oleh klien itu dan bukan sumber mana yang boleh digunakannya.
Tembok api kemudian memadankan sumber yang boleh dipercayainya. Peraturan yang ditulis untuk julat kumpulan masih merupakan kumpulan yang berguna, dan ia menjadi bermakna hanya apabila tiada satu rakan pun boleh menuntut alamat milik ahli lain.
Tulis dasar penghantaran yang memisahkan kumpulan
Trafik yang menarik di sini masuk dan keluar melalui antara muka terowong yang sama, jadi ia melintasi laluan penghantaran dan bukan laluan input hos. Peraturan tergolong dalam rantai penghantaran sedia ada mana-mana pengurus tembok api yang memiliki hos itu, dan ia ialah cebisan, bukan set peraturan yang lengkap.
iifname "wg0" oifname "wg0" ip saddr 10.66.10.0/24 ip daddr 10.66.10.0/24 accept iifname "wg0" oifname "wg0" ip saddr 10.66.20.0/24 ip daddr 10.66.20.0/24 accept iifname "wg0" oifname "wg0" drop
Dua peraturan pertama membenarkan trafik dalam setiap kumpulan. Yang terakhir menyekat segala-galanya yang melintasi antara muka itu, dan itulah yang menghasilkan pengasingan antara kumpulan. Tambah peraturan eksplisit untuk keluarga alamat yang lain jika anda memerlukannya, kerana drop yang ditulis untuk IPv4 tidak membenarkan atau menerangkan tingkah laku IPv6.
Susunan menentukan sama ada dasar itu terpakai
Susunan peraturan lebih penting daripada cebisan itu sendiri. Peraturan umum yang menerima sambungan yang sudah terjalin dan diletakkan sebelum catatan ini membiarkan aliran lama antara kumpulan berterusan, jadi pengasingan hanya terpakai pada sambungan baharu. Putuskan hasil mana antara kedua-duanya yang anda mahu sebelum memuat semula.
Keputusan penerimaan juga tidak selalunya muktamad merentas rantai pada cangkuk yang sama. Jika rantai asas lain berjalan kemudian, dasar berkesan ialah gabungannya, jadi periksa pembilang dan bukan fail yang anda sunting. Pembilang ialah bukti termurah yang tersedia. Peraturan tanpa kiraan paket tidak sepadan, dan peraturan yang sepadan sementara rantai kemudian menerima memberitahu anda bahawa drop berada di tempat yang salah.
Uji matriks, bukan bilangan fail
Bina matriks kecil hasil yang dijangka dan periksa setiap sel. Kumpulan A ke kumpulan A sepatutnya berfungsi, kumpulan B ke kumpulan B sepatutnya berfungsi, dan A ke B tidak sepatutnya, dalam kedua-dua arah dan untuk kedua-dua keluarga alamat jika anda menyokongnya.
nft list ruleset wg show wg0 allowed-ips ping -c 2 10.66.10.5 conntrack -L -s 10.66.20.7 2>/dev/null | head
Dua yang pertama menunjukkan apa yang dikonfigurasi. Ping daripada ahli kumpulan yang salah menunjukkan apa yang sebenarnya berlaku. Senarai conntrack menunjukkan sama ada aliran lama masih diterima, dan begitulah perubahan pengasingan gagal berkuat kuasa secara senyap.
Perkhidmatan hos pada hab dan akses ke LAN di belakangnya ialah laluan berasingan dengan dasar berasingan. Catat mana antaranya yang diliputi matriks, kerana ujian yang hanya memeriksa trafik rakan-ke-rakan tidak menyatakan apa-apa tentang mana-mana daripadanya.