Handshake selesai, wg show melaporkan pemindahan terkini, dan alamat terowong pelayan menjawab ping. Hos di LAN pelayan tidak. Tiga syarat mesti dipenuhi serentak: klien mesti menghalakan awalan LAN ke dalam terowong, pelayan mesti menghantar paket, dan balasan memerlukan laluan balik. Apabila satu daripada tiga tiada, gejalanya sama.

AllowedIPs ialah senarai akses dan jadual penghalaan sekali gus

Pada klien, senarai AllowedIPs menentukan apa yang boleh dihantar kepada rakan itu dan laluan mana yang dipasang WireGuard. Entri rakan yang hanya menyenaraikan alamat terowong pelayan memasang satu laluan hos, jadi destinasi LAN tidak pernah masuk ke dalam terowong. Menambah awalan LAN ialah perkara pertama yang perlu disahkan, dan ia juga perubahan yang paling kerap tiada selepas konfigurasi disalin. Rakan yang diperluas kepada laluan lalai ialah reka bentuk lain, dan ia juga akan memindahkan trafik internet klien.

Kekalkan laluan hos dan awalan LAN sebagai entri berasingan. Jika pejabat mempunyai dua subnet, kedua-duanya tergolong dalam senarai, dan awalan kedua yang tiada menghasilkan kegagalan yang kelihatan terpilih bukan menyeluruh.

[Peer]
PublicKey = <server public key>
Endpoint = vpn.example.net:51820
AllowedIPs = 10.66.0.1/32, 192.168.50.0/24

Penghantaran dan terjemahan tergolong pada pelayan

Pelayan memerlukan penghantaran IP diaktifkan, peraturan penghantaran yang menerima trafik dari terowong, dan peraturan terjemahan ke arah antara muka LAN-nya. Terjemahan itulah yang membuat reka bentuk ini berfungsi tanpa menyentuh setiap hos di rangkaian pejabat. Balasan kemudian kembali ke pelayan dan bukan ke alamat yang tidak pernah didengar oleh LAN. Tanpanya, setiap hos memerlukan laluan ke subnet terowong dan peraturan tembok api yang membenarkannya, yang jarang diterima di rangkaian yang diurus orang lain.

sysctl -w net.ipv4.ip_forward=1
iptables -A FORWARD -i wg0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Peraturan yang ditambah secara manual hilang semasa but semula, jadi ikatkannya pada antara muka dengan arahan hook dalam konfigurasi pelayan. Set peraturan yang hidup lebih lama daripada antara mukanya ialah cara mesin akhirnya menterjemah trafik untuk terowong yang tidak lagi wujud.

Apabila LAN berpindah dan peraturan tidak

Penggantian penghala yang menomborkan semula subnet pejabat ialah versi klasik kegagalan ini. Terowong kekal aktif, handshake kekal segar, dan tiada apa di belakang pelayan menjawab, kerana peraturan terjemahan masih menamakan alamat lama. Skrip pemasang sering membenamkan alamat LAN pelayan ke dalam peraturan POSTROUTING, dan selepas penomboran semula alamat itu tidak wujud pada mana-mana antara muka. Paket kemudian ditulis semula ke destinasi yang tidak boleh menjawab.

iptables -t nat -n -L POSTROUTING
ip -br addr show

Bandingkan kedua-dua output. Sasaran terjemahan yang tidak muncul dalam senarai antara muka ialah pepijat, dan membaikinya ialah perubahan satu baris setelah anda melihatnya. Peraturan itu mungkin berada dalam unit yang dijana dan bukan dalam konfigurasi WireGuard, jadi muat semula unit itu selepas menyunting dan pastikan but seterusnya tidak menulis semula perubahan anda.

Dua tapak di belakang NAT perlu tempat bertemu

Apabila tiada pihak menerima sambungan masuk, jawapan praktikalnya ialah hos kecil dengan alamat awam dan dua antara muka WireGuard. Setiap tapak bersambung ke luar, hos tengah menyenaraikan LAN setiap rakan dalam AllowedIPs-nya sendiri, dan penghantaran membawa paket antara dua terowong. Tiada apa di tembok api mana-mana tapak perlu diubah, sebab itulah reka bentuk ini mudah tersebar.

Penghalaan antara tapak mengekalkan alamat sumber asal dan oleh itu mengekalkan pengelogan setiap hos yang bermakna. Terjemahan pada hos tengah lebih mudah apabila kedua-dua LAN bertindih, tetapi dengan kos kehilangan identiti sumber dalam log. Tentukan sifat mana yang penting sebelum memilih.

Pisahkan lapisan dengan empat pemeriksaan

Jalankan satu pemeriksaan setiap lapisan dan bukan mengubah tiga perkara lalu berharap. Yang pertama menunjukkan umur handshake dan pembilang bagi setiap rakan. Yang kedua menunjukkan sama ada klien benar-benar menghalakan destinasi itu ke dalam terowong. Yang ketiga dan keempat memberitahu sama ada permintaan tiba dan sama ada sesuatu dasar menggugurkannya selepas tiba.

wg show
ip route get 192.168.50.20
tcpdump -ni wg0 icmp
iptables -vnL FORWARD --line-numbers

Permintaan yang tiba dan tidak mencetuskan balasan menunjuk kepada laluan balasan atau hos LAN. Permintaan yang tidak pernah tiba menunjuk kepada AllowedIPs atau laluan klien. Kedua-dua hasil itu memerlukan pembaikan berbeza, dan tangkapan itulah yang membezakan keduanya.

Artikel berkaitan