AllowedIPs adalah daftar perutean, bukan aturan firewall
Ia memilih peer untuk lalu lintas keluar dan memvalidasi sumber masuk. Ini bukan daftar akses, dan mematikan pengelolaan rute tidak memperbaiki tunnel terpisah.
Kebanyakan orang membaca AllowedIPs sebagai daftar izin, kumpulan alamat yang boleh terhubung ke sebuah peer, mirip aturan firewall yang ditulis untuk sebuah tunnel. Bukan itu. Kolom ini adalah tabel perutean yang bekerja di kedua arah: ia memilih peer untuk paket keluar dan memvalidasi sumber paket masuk. Membacanya sebagai daftar akses menghasilkan konfigurasi yang merutekan lalu lintas yang tidak diminta siapa pun.
Satu kolom, dua pembaca: pilihan keluar dan pemeriksaan sumber
Di klien, prefiks menentukan tujuan mana yang pergi ke peer itu dan mana yang tetap di jaringan biasa. Karena itu entri untuk 0.0.0.0/0 menangkap setiap tujuan IPv4, dan itulah sebabnya mengimpor profil tunnel penuh mengirim peramban biasa melalui mesin jarak jauh. Entri sempit melakukan sebaliknya: merutekan hanya jaringan yang Anda daftar dan membiarkan sisanya di tempatnya. Bagian perutean kriptokunci dalam dokumentasi WireGuard menyebut kedua tugas di satu tempat: pemilihan peer keluar dan validasi sumber masuk.
Di server, kolom yang sama menjelaskan alamat sumber mana yang boleh dipakai setiap peer. Ini pemeriksaan kriptografis, bukan penyaring paket: paket yang sumber dalamnya tidak cocok dengan daftar peer dibuang di dalam WireGuard sebelum firewall host mana pun melihatnya. Kedua tugas berbagi satu daftar, dan justru karena itu daftar yang disalin dari tempat lain berperilaku salah di tempat yang tidak Anda pertimbangkan.
Blok klien adalah tempat sebagian besar kebingungan ini dimulai. Tunnel terpisah menyebut jaringan jarak jauh, dan tunnel penuh adalah kolom yang sama dengan prefiks bawaan:
[Peer]
# split tunnel: only these networks
AllowedIPs = 10.77.0.0/24, 192.168.30.0/24
[Peer]
# full tunnel: everything, both families
AllowedIPs = 0.0.0.0/0, ::/0
Kedua bentuk lengkap dengan sendirinya, dan keduanya alternatif, bukan langkah. Yang pertama hanya mengirim dua jaringan itu melalui tunnel; yang kedua mengirim setiap tujuan, dengan entri ::/0 menambahkan IPv6 ke bawaan IPv4. Mana pun yang Anda pilih, prefiks itu adalah seluruh keputusan perutean untuk peer tersebut begitu wg-quick mulai memasang rute.
Hub memerlukan daftar yang berbeda
Hub mendaftar alamat tunnel setiap klien sebagai prefiks host, ditambah jaringan apa pun yang benar-benar berada di belakang klien itu. Menyalin daftar lebar seorang klien ke setiap peer hub memberi tahu hub bahwa banyak peer boleh memakai alamat yang sama sebagai sumber, dan itu bukan rencana pengalamatan. Kolom Endpoint milik lapisan yang sama sekali lain: ia menyebut alamat dan port luar peer, tidak pernah tujuan di dalam tunnel.
[Peer]
# laptop: tunnel address 10.77.0.2, office LAN behind it
AllowedIPs = 10.77.0.2/32, 192.168.30.0/24
Prefiks host membawa alamat tunnel dan prefiks jaringan membawa apa yang ada di belakang klien, dan keduanya diperlukan. Tanpa prefiks host hub tidak dapat mengembalikan lalu lintas klien itu sendiri, dan tanpa prefiks jaringan LAN di belakangnya tetap tak terjangkau; peer yang tidak punya apa pun di belakangnya hanya mendapat prefiks host.
Melewati pemasangan rute meninggalkan celah
wg-quick, pembantu yang menaikkan antarmuka dari berkas konfigurasi, memasang alamat antarmuka dan rute sebagai bagian dari tugas itu. Menetapkan Table = off memberi tahu pembantu untuk melewati pekerjaan rute, yang tidak memasang pengganti dan tidak membuat jaringan privat terjangkau. Ketika rute otomatis sudah mengerjakan tugasnya, menyebut prefiks yang Anda butuhkan adalah konfigurasi yang lebih jelas. Mematikan pengelolaan rute dan membiarkan penggantinya tidak tertulis bukanlah desain, melainkan kelalaian.
Alat dasar wg berperilaku berbeda: ia mengonfigurasi antarmuka dan tidak pernah menyentuh rute, jadi penyiapan yang dibangun langsung di atasnya memerlukan perintah rute sendiri. Instruksi yang ditulis untuk satu alat bisa tampak salah ketika diikuti dengan alat lain. Ping yang berhasil juga bukti lemah, karena ia menguji satu jalur, bukan setiap jalur aplikasi yang Anda butuhkan.
DNS dan IPv6 diputuskan secara terpisah
Periksa alamat server DNS yang diumumkan tunnel, dan pastikan ada rute ke alamat itu melalui prefiks yang Anda pilih. Pengaturan resolver tidak membuat resolver terjangkau, dan menyempitkan tunnel dapat diam-diam menghapus rute yang dahulu mencapainya. Periksa juga IPv6 secara terpisah, karena pemisahan IPv4 yang benar tidak mengatakan apa pun tentang rute bawaan IPv6 yang masih menunjuk ke tautan fisik. Tiga keputusan terpisah dapat berubah sekaligus saat Anda menyunting satu blok peer.
Lalu buka satu sumber daya privat dan satu situs web biasa dari konfigurasi awal yang dikenal. Jika sumber daya menjawab dan peramban masih keluar melalui koneksi lokal, pemisahan itu melakukan apa yang Anda minta. Jika peramban rusak pada saat yang sama, tunnel mengambil rute bawaan dan daftar prefiks adalah tempat untuk melihat.