VPN-verkkoon johtava reitti kuljettaa kahta osoitetta, jotka on helppo sekoittaa: kohdeprefiksiä, johon paketti yrittää päästä, ja seuraavaa hyppyä, joka siirtää sitä askeleen lähemmäs. LAN-isännässä tämän seuraavan hypyn on oltava reititin, johon todella pääset samalla linkillä. Etäinen VPN-osoite ei ole seuraava hyppy, niin siististi kuin se mielessäsi olevaan kohteeseen sopiikin.

Tämä käsikirja kattaa tavallisen tapauksen: kannettava tietokone osoitteessa 192.168.20.0/24, VPN-yhdyskäytävä, jonka LAN-osoite on 192.168.20.5, ja etäverkko 10.70.0.0/24 kyseisen yhdyskäytävän takana. Kaikki alla olevat komennot olettavat, että olet kannettavalla, ellei toisin sanota.

Kaksi osoitetta, yksi reitti

Aiottu merkintä on 10.70.0.0/24 via 192.168.20.5. Prefiksi kertoo, minne paketti menee; via-osoite kertoo, kuka sen sinne kantaa. Ydin kieltäytyy asentamasta reittiä, jonka yhdyskäytävään se ei pääse nimeämäsi liitännän kautta, ja tämä kieltäytyminen on koko pointti: seuraava hyppy, joka tarvitsee tunnelin ollakseen tavoitettavissa, ei voi olla seuraava hyppy, joka rakentaa tunnelin.

Ensimmäinen tarkistus ei siis ole «toimiiko yhdyskäytävä» vaan «onko yhdyskäytävä tällä linkillä». Kannettavan oma aliverkko, sen ARP- tai naapurimerkintä ja reitillä oleva liitäntä ovat kaikki yhtä mieltä. Osoite, joka on olemassa vain 10.70.0.0/24-aliverkon sisällä, voi olla toisen reitin kohde, mutta ei koskaan ensimmäisen via.

Mihin seuraava hyppy sitouttaa yhdyskäytävän

Reitin asentaminen kannettavaan ratkaisee vain ensimmäisen luovutuksen. Sen jälkeen yhdyskäytävä tarvitsee oman polkunsa: edelleenlähetys päällä, tunnelireitti 10.70.0.0/24-verkkoon ja kaikki käyttöoikeuskäytäntö, joka määrää, kuka saa käyttää sitä. Linuxissa se on net.ipv4.ip_forward=1 ja tunnelireitti; edessä oleva palomuuri tarvitsee säännön, joka sallii edelleenlähetetyn virran.

Paluusuunta on se osa, jonka ihmiset unohtavat. Etäpuolella on oltava reitti takaisin 192.168.20.0/24-verkkoon, tai suunnittelun on muunnettava kannettavan lähde joksikin, jonka etäpuoli tuntee. Toimiva ping yhdyskäytävältä todistaa, että yhdyskäytävä tavoittaa etäverkon; se ei kerro mitään siitä, selviävätkö kannettavan paketit paluumatkasta.

Tarkista haku siitä isännästä, joka lähettää

Kysy ytimeltä, minkä seuraavan hypyn se valitsisi, ja lue vastauksesta liitäntä:

ip route get 10.70.0.10
ip route show 10.70.0.0/24
ip neigh show 192.168.20.5

Jos haku ilmoittaa yhdyskäytävän ja LAN-liitännän, ensimmäinen osuus on määritetty tarkoituksen mukaisesti. Jos se ilmoittaa tunnelilaitteen, jokin aiempi taulukon merkintä on tarkempi ja voittaa. Jos reitti ei asennu lainkaan, ydin kertoo, että yhdyskäytävä ei ole tavoitettavissa, ja se viesti on hyödyllisempi kuin mikään paketin sieppaus.

Toista sitten testi oikeasta paikasta. Yhdyskäytävällä luotu pyyntö käyttää yhdyskäytävän omaa lähdeosoitetta, mikä voi peittää puuttuvan paluureitin tai käytännön, joka sallii vain tietyt lähteet. ip-route-käsikirja erottaa kohteen, yhdyskäytävän ja onlink-ohituksen, ja ohitus kannattaa ymmärtää ennen sen käyttöä.

Älä käytä onlinkia tavoitettavuuden teeskentelemiseen

onlink käskee ytimen ohittaa yhdyskäytävän tavoitettavuustarkistuksen ja lähettää sinne silti. Se ei luo polkua, ei ratkaise ARPia osoitteelle, jota ei ole, eikä saa etäreititintä vastaamaan Ethernet-segmentilläsi. Se on laillinen yhdyskäytäville, jotka vastaavat mutta eivät sijaitse liitetyssä aliverkossa, ja se on ansa, kun sitä käytetään vaientamaan virhe, jota et ole selittänyt.

Jos reitti asentuu vain onlink-asetuksella, seuraava kysymys on, miksi yhdyskäytävä ei ole siellä, missä luulet sen olevan. Väärä VLAN, toinen osoite väärässä liitännässä tai kirjoitusvirhe viimeisessä oktetissa tuottavat kaikki tämän, ja jokainen niistä rikkoo myös paluupolun heti, kun liikenne alkaa virrata.

Pisteestä pisteeseen -tunnelit eivät ole Ethernet

Tunnelilaite ei tee ARPia eikä sillä usein ole mielekästä naapureiden aliverkkoa. Sen reitit näyttävät usein tältä: 10.70.0.0/24 dev tun0, ilman mitään via-määrettä, koska vertaiskone on ainoa toinen päätepiste. LAN-tyylisen via-määreen kopioiminen tuohon taulukkoon tuottaa reitin, jonka ydin voi hylätä tai, pahempaa, sellaisen, joka osoittaa osoitteeseen, johon vertaiskone ei koskaan vastaa.

Pidä kaksi mallia erillään käsikirjassa: LAN-reitillä on tavoitettavissa oleva yhdyskäytävä, tunnelireitillä on liitäntä ja vertaiskone. WireGuard, OpenVPN ja IPsec esittävät kaikki hieman erilaisia muotoja, joten kirjaa muoto, jota todella käytit, sen sijaan että yleistäisit yhdestä isännästä.

Lisää, vahvista, peru

Koko muutos on kolme komentoa ja yksi tarkistus, ja se pitäisi kirjata juuri siinä järjestyksessä:

sudo ip route add 10.70.0.0/24 via 192.168.20.5
ip route get 10.70.0.10
ping -c 3 10.70.0.10
sudo ip route del 10.70.0.0/24 via 192.168.20.5

Vahvista polku, vahvista yksi kohde ja pidä sitten poistorivi valmiina siltä varalta, että muutos tekee isännästä tavoittamattoman tavalla, jota et osannut odottaa. Jos reitin on selvittävä uudelleenkäynnistyksestä, laita se isännän verkkokokoonpanoon eikä komentotulkin profiiliin, ja testaa uudelleenkäynnistys ennen kuin luotat siihen. Reitti, joka on olemassa vain sen lisänneessä komentotulkissa, on reitti, jonka korjaat kahdesti.

Aiheeseen liittyvät artikkelit