Kättely valmistuu, wg show raportoi äskettäisestä siirrosta, ja palvelimen tunneliosoite vastaa pingiin. Palvelimen lähiverkossa oleva isäntä ei vastaa. Kolmen ehdon on oltava voimassa yhtä aikaa: asiakkaan on reititettävä lähiverkon etuliite tunneliin, palvelimen on edelleenlähetettävä paketit, ja vastaus tarvitsee paluureitin. Kun yksi kolmesta puuttuu, oire on sama.

AllowedIPs on sekä käyttöoikeusluettelo että reititystaulu

Asiakkaassa luettelo AllowedIPs päättää sekä siitä, mitä kyseiselle vertaiselle saa lähettää, että siitä, mitkä reitit WireGuard asentaa. Vertaismerkintä, joka luettelee vain palvelimen tunneliosoitteen, asentaa yhden isäntäreitin, joten lähiverkon kohteet eivät koskaan päädy tunneliin. Lähiverkon etuliitteen lisääminen on ensimmäinen tarkistettava asia, ja se on myös muutos, joka kopioidun kokoonpanon jälkeen useimmin puuttuu. Oletusreitiksi laajennettu vertainen on eri suunnittelu, ja se siirtää myös asiakkaan internettiliikennettä.

Pidä isäntäreitti ja lähiverkon etuliite erillisinä merkintöinä. Jos toimistossa on kaksi aliverkkoa, molemmat kuuluvat luetteloon, ja puuttuva toinen etuliite aiheuttaa vian, joka näyttää valikoivalta eikä täydelliseltä.

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

Edelleenlähetys ja käännös kuuluvat palvelimelle

Palvelin tarvitsee käytössä olevan IP-edelleenlähetyksen, edelleenlähetyssäännön, joka hyväksyy tunnelista saapuvan liikenteen, ja käännössäännön sen lähiverkkoliittymää kohti. Käännös on se, mikä saa suunnittelun toimimaan koskematta jokaiseen toimiston verkon isäntään. Silloin vastaukset palaavat palvelimelle eikä osoitteeseen, josta lähiverkko ei ole koskaan kuullut. Ilman sitä jokainen isäntä tarvitsee reitin tunnelin aliverkkoon ja sen sallivan palomuurisäännön, mikä on harvoin hyväksyttävää verkossa, jota joku muu hallinnoi.

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

Käsin lisätyt säännöt katoavat uudelleenkäynnistyksessä, joten sido ne liitäntään palvelimen kokoonpanon hook-komennoilla. Sääntöjoukko, joka elää liitäntäänsä pidempään, on tapa, jolla kone päätyy kääntämään liikennettä tunnelille, jota ei enää ole.

Kun lähiverkko muutti eikä sääntö

Reitittimen vaihto, joka numeroi toimiston aliverkon uudelleen, on tämän vian klassinen versio. Tunneli pysyy pystyssä, kättely pysyy tuoreena, eikä mikään palvelimen takana vastaa, koska käännössääntö nimeää edelleen vanhan osoitteen. Asennusskriptit upottavat usein palvelimen lähiverkko-osoitteen POSTROUTING-sääntöön, ja uudelleennumeroinnin jälkeen sitä osoitetta ei ole yhdessäkään liitännässä. Paketit kirjoitetaan silloin uudelleen kohteeseen, joka ei voi vastata.

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

Vertaa kahta tulostetta. Käännöskohde, joka ei näy liitäntäluettelossa, on vika, ja sen korjaaminen on yhden rivin muutos, kun olet nähnyt sen. Sääntö voi elää luodussa unitissa eikä WireGuardin kokoonpanossa, joten lataa se unit uudelleen muokkauksen jälkeen ja varmista, että seuraava käynnistys ei kirjoita muutostasi uudelleen.

Kaksi NATin takana olevaa toimipistettä tarvitsevat kohtaamispaikan

Kun kumpikaan puoli ei hyväksy saapuvia yhteyksiä, käytännön vastaus on pieni isäntä, jolla on julkinen osoite ja kaksi WireGuard-liitäntää. Kukin toimipiste yhdistää ulospäin, keskimmäinen isäntä luettelee kunkin vertaisen lähiverkon omassa AllowedIPs-luettelossaan, ja edelleenlähetys kuljettaa paketteja kahden tunnelin välillä. Kummankaan toimipisteen palomuurissa ei tarvitse muuttaa mitään, minkä vuoksi tämä suunnittelu leviää helposti.

Toimipisteiden välinen reititys säilyttää alkuperäiset lähdeosoitteet ja pitää siten isäntäkohtaisen lokituksen mielekkäänä. Keskimmäisessä isännässä kääntäminen on yksinkertaisempaa, kun kaksi lähiverkkoa menevät päällekkäin, mutta lähdeidentiteetin menettämisen kustannuksella lokeissa. Päätä, mikä ominaisuus on tärkeä, ennen kuin valitset.

Erota kerrokset neljällä tarkistuksella

Tee yksi tarkistus kerrosta kohti sen sijaan, että muuttaisit kolmea asiaa ja toivoisit. Ensimmäinen näyttää kättelyn iän ja laskurit kullekin vertaiselle. Toinen näyttää, reitittääkö asiakas kyseisen kohteen todella tunneliin. Kolmas ja neljäs kertovat, saapuiko pyyntö ja pudottiko jokin käytäntö sen saapumisen jälkeen.

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

Pyyntö, joka saapuu eikä aiheuta vastausta, osoittaa vastauksen reittiin tai lähiverkon isäntään. Pyyntö, joka ei koskaan saavu, osoittaa AllowedIPs tai asiakkaan reittiin. Nämä kaksi lopputulosta tarvitsevat erilaiset korjaukset, ja kaappaus on se, mikä erottaa ne.

Aiheeseen liittyvät artikkelit