WireGuardin kättely toimii, mutta toimiston aliverkko ei vastaa
WireGuard on käynnissä ja pingaa palvelinta, mutta mikään sen lähiverkossa ei vastaa. Tarkista asiakkaan etuliite, palvelimen edelleenlähetys ja vastauksen reitti.
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.