Rankos paspaudimas baigiasi, wg show praneša apie neseniai įvykusį perdavimą, o serverio tunelio adresas atsako į ping. Serverio LAN tinkle esantis mazgas neatsako. Trys sąlygos turi galioti vienu metu: klientas turi maršrutizuoti LAN prefiksą į tunelį, serveris turi persiųsti paketus, o atsakymui reikia kelio atgal. Kai vienos iš trijų trūksta, simptomas yra toks pat.

AllowedIPs yra ir prieigos sąrašas, ir maršrutizavimo lentelė

Kliente sąrašas AllowedIPs nusprendžia ir tai, ką galima siųsti tam peer, ir tai, kokius maršrutus įdiegia WireGuard. Peer įrašas, kuriame nurodytas tik serverio tunelio adresas, įdiegia vieną mazgo maršrutą, todėl LAN paskirties vietos niekada nepatenka į tunelį. LAN prefikso pridėjimas yra pirmas dalykas, kurį reikia patikrinti, ir tai taip pat pakeitimas, kurio dažniausiai trūksta nusikopijavus konfigūraciją. Peer, išplėstas iki numatytojo maršruto, yra kitas dizainas, ir jis taip pat perkels kliento interneto srautą.

Laikykite mazgo maršrutą ir LAN prefiksą atskirais įrašais. Jei biure yra du potinkliai, abu priklauso sąrašui, o trūkstamas antrasis prefiksas sukelia gedimą, kuris atrodo selektyvus, o ne visiškas.

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

Persiuntimas ir vertimas priklauso serveriui

Serveriui reikia įjungto IP persiuntimo, persiuntimo taisyklės, kuri priima iš tunelio ateinantį srautą, ir vertimo taisyklės link jo LAN sąsajos. Būtent vertimas leidžia dizainui veikti neliečiant kiekvieno biuro tinklo mazgo. Tada atsakymai grįžta į serverį, o ne į adresą, apie kurį LAN niekada negirdėjo. Be to, kiekvienam mazgui reikia maršruto į tunelio potinklį ir ugniasienės taisyklės, kuri jį leidžia, o tai retai priimtina tinkle, kurį administruoja kas nors kitas.

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

Rankiniu būdu pridėtos taisyklės dingsta paleidus iš naujo, todėl susiekite jas su sąsaja serverio konfigūracijos hook komandomis. Taisyklių rinkinys, kuris gyvena ilgiau nei jo sąsaja, yra būdas, kuriuo mašina galiausiai ima versti srautą tuneliui, kurio nebėra.

Kai LAN persikėlė, o taisyklė ne

Maršrutizatoriaus pakeitimas, kuris pernumeruoja biuro potinklį, yra klasikinė šio gedimo versija. Tunelis lieka įjungtas, rankos paspaudimas lieka šviežias, ir niekas už serverio neatsako, nes vertimo taisyklė vis dar nurodo seną adresą. Diegimo scenarijai dažnai įterpia serverio LAN adresą į POSTROUTING taisyklę, o po pernumeravimo to adreso nėra nė vienoje sąsajoje. Tada paketai perrašomi į paskirties vietą, kuri negali atsakyti.

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

Palyginkite abu išėjimus. Vertimo tikslas, kuris nepasireiškia sąsajų sąraše, yra klaida, o ją ištaisyti yra vienos eilutės pakeitimas, kai ją pamatysite. Taisyklė gali gyventi sugeneruotame unit, o ne WireGuard konfigūracijoje, todėl po redagavimo iš naujo įkelkite tą unit ir patvirtinkite, kad kitas paleidimas neperrašys jūsų pakeitimo.

Dvi vietos už NAT turi kur susitikti

Kai nė viena pusė nepriima įeinančių ryšių, praktinis atsakymas yra mažas mazgas su viešu adresu ir dviem WireGuard sąsajomis. Kiekviena vieta jungiasi į išorę, vidurinis mazgas kiekvieno peer LAN į savo AllowedIPs, savo sąrašą, įtraukia, o persiuntimas perneša paketus tarp dviejų tunelių. Niekas nė vienos vietos ugniasienėje neturi keistis, todėl šis dizainas lengvai plinta.

Maršrutizavimas tarp vietų išsaugo pirminius šaltinio adresus ir todėl išlaiko prasmingą registravimą pagal mazgą. Vertimas viduriniame mazge yra paprastesnis, kai du LAN persidengia, bet už šaltinio tapatybės praradimą žurnaluose. Nuspręskite, kuri savybė svarbi, prieš rinkdamiesi.

Atskirkite sluoksnius keturiais patikrinimais

Atlikite vieną patikrinimą kiekvienam sluoksniui, o ne keiskite tris dalykus ir tikėkitės. Pirmasis rodo rankos paspaudimo amžių ir skaitiklius kiekvienam peer. Antrasis rodo, ar klientas iš tikrųjų maršrutizuoja tą paskirties vietą į tunelį. Trečiasis ir ketvirtasis pasako, ar užklausa atvyko ir ar kokia nors politika ją atmetė po atvykimo.

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

Užklausa, kuri atvyksta ir nesukelia atsakymo, nurodo atsakymo kelią arba LAN mazgą. Užklausa, kuri niekada neatvyksta, nurodo AllowedIPs arba kliento maršrutą. Šie du rezultatai reikalauja skirtingų pataisymų, ir būtent įrašymas juos atskiria.

Susiję straipsniai