Rokas sasveicināšanās pabeidzas, wg show ziņo par nesenu pārsūtīšanu, un servera tuneļa adrese atbild uz ping. Servera LAN tīklā esošais resursdators neatbild. Trim nosacījumiem jāizpildās vienlaikus: klientam jāmaršrutē LAN prefikss tunelī, serverim jāpārsūta paketes, un atbildei vajag ceļu atpakaļ. Ja trūkst kāda no trim, simptoms ir tāds pats.

AllowedIPs ir gan piekļuves saraksts, gan maršrutēšanas tabula

Klientā saraksts AllowedIPs nosaka gan to, ko drīkst sūtīt šim partnerim, gan to, kādus maršrutus WireGuard instalē. Partnera ieraksts, kurā uzskaitīta tikai servera tuneļa adrese, instalē vienu resursdatora maršrutu, tāpēc LAN galamērķi nekad neiekļūst tunelī. LAN prefiksa pievienošana ir pirmā lieta, kas jāpārbauda, un tā ir arī izmaiņa, kas visbiežāk trūkst pēc nokopētas konfigurācijas. Partneris, kas paplašināts līdz noklusējuma maršrutam, ir cits dizains, un tas pārvietos arī klienta interneta trafiku.

Turiet resursdatora maršrutu un LAN prefiksu kā atsevišķus ierakstus. Ja birojā ir divi apakštīkli, abi pieder sarakstam, un trūkstošais otrais prefikss rada kļūmi, kas izskatās selektīva, nevis pilnīga.

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

Pārsūtīšana un tulkošana pieder serverim

Serverim vajag iespējotu IP pārsūtīšanu, pārsūtīšanas noteikumu, kas pieņem no tuneļa nākošo trafiku, un tulkošanas noteikumu pret tā LAN saskarni. Tieši tulkošana ļauj dizainam darboties, neaiztiekot katru biroja tīkla resursdatoru. Tad atbildes atgriežas serverī, nevis adresē, par kuru LAN nekad nav dzirdējis. Bez tās katram resursdatoram vajag maršrutu uz tuneļa apakštīklu un ugunsmūra noteikumu, kas to atļauj, un tas reti ir pieņemami tīklā, ko pārvalda kāds cits.

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

Ar roku pievienotie noteikumi pazūd pārstartēšanas laikā, tāpēc piesaistiet tos saskarnei ar servera konfigurācijas hook komandām. Noteikumu kopums, kas pārdzīvo savu saskarni, ir veids, kā iekārta galu galā tulko trafiku tunelim, kas vairs neeksistē.

Kad LAN pārcēlās, bet noteikums ne

Maršrutētāja nomaiņa, kas pārnumurē biroja apakštīklu, ir klasiskā šīs kļūmes versija. Tunelis paliek ieslēgts, rokas sasveicināšanās paliek svaiga, un nekas aiz servera neatbild, jo tulkošanas noteikums joprojām nosauc veco adresi. Instalēšanas skripti bieži iekļauj servera LAN adresi POSTROUTING noteikumā, un pēc pārnumurēšanas šī adrese neeksistē nevienā saskarnē. Tad paketes tiek pārrakstītas uz galamērķi, kas nevar atbildēt.

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

Salīdziniet abas izejas. Tulkošanas mērķis, kas neparādās saskarņu sarakstā, ir kļūda, un tās labošana ir vienas rindas izmaiņa, tiklīdz to esat redzējis. Noteikums var dzīvot ģenerētā unit, nevis WireGuard konfigurācijā, tāpēc pēc rediģēšanas pārlādējiet šo unit un pārliecinieties, ka nākamā palaišana nepārraksta jūsu izmaiņu.

Divām vietām aiz NAT vajag satikšanās vietu

Kad neviena puse nepieņem ienākošos savienojumus, praktiskā atbilde ir mazs resursdators ar publisku adresi un divām WireGuard saskarnēm. Katra vieta savienojas uz āru, vidējais resursdators katra partnera LAN savā AllowedIPs, citiem vārdiem, savā sarakstā, iekļauj, un pārsūtīšana pārvieto paketes starp abiem tuneļiem. Nekas nevienas vietas ugunsmūrī nav jāmaina, tāpēc šis dizains viegli izplatās.

Maršrutēšana starp vietām saglabā sākotnējās avota adreses un tādējādi saglabā jēgpilnu reģistrēšanu katram resursdatoram. Tulkošana vidējā resursdatorā ir vienkāršāka, kad divi LAN pārklājas, bet uz avota identitātes zaudēšanas rēķina žurnālos. Izlemiet, kura īpašība ir svarīga, pirms izvēlaties.

Atdaliet slāņus ar četrām pārbaudēm

Veiciet vienu pārbaudi katram slānim, nevis mainiet trīs lietas un ceriet. Pirmā parāda rokas sasveicināšanās vecumu un skaitītājus katram partnerim. Otrā parāda, vai klients tiešām maršrutē šo galamērķi tunelī. Trešā un ceturtā pasaka, vai pieprasījums ieradās un vai kāda politika to izmeta pēc ierašanās.

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

Pieprasījums, kas ierodas un neizraisa atbildi, norāda uz atbildes ceļu vai LAN resursdatoru. Pieprasījums, kas nekad neierodas, norāda uz AllowedIPs vai klienta maršrutu. Šiem diviem iznākumiem vajadzīgi atšķirīgi labojumi, un tieši ieraksts tos atšķir.

Saistītie raksti