Kaksi laboratoriota voi mallintaa saman VPN-topologian ja epäonnistua täysin eri tavoilla: toinen elää verkon nimiavaruuksissa, toinen isäntäkoneen omilla reiteillä. Nimiavaruusversio pitää jokaisen liitännän, reitin ja pistokkeen kontekstissa, jonka voit poistaa, kun taas isäntäversio käynnistyy nopeammin ja jättää tilan jälkeensä. Juuri tämä jäänyt tila tekee toisesta laboratoriosta vaikean toistaa kuukautta myöhemmin. Vertaa ensin siivousta, koska se päättää, voitko suorittaa kokeen kahdesti.

Kaksi tapaa rakentaa sama laboratorio, ja milloin kumpikin voittaa

Isäntäreittilaboratoriossa lisäät tunneliliitännän ja reitit koneeseen, jolla työskentelet, joten koe jakaa kohtalon kuoresi, paketinhallintasi ja kaikkien muiden yhteyksien kanssa. Nimiavaruusalaboratoriossa jokainen rooli saa oman pinonsa liitäntöjä, osoitteita, reittejä ja pistokkeita, ja nimiavaruuden poistaminen poistaa kaiken sen. Kumpikaan malli ei ole oikeampi, koska ne vastaavat eri kysymyksiin. Valitse nimiavaruudet, kun aiheena on reititys ja edelleenlähetys, ja isäntälaboratorio, kun aiheena on, miten yksi työpöytäasiakas integroituu.

AspectNamespace labHost-route lab
IsolationFull stack per roleShares the host stack
CleanupDelete named namespacesManual route and rule removal
RealismStrong for routingNeeded for GUI clients

Kahden sekoittaminen on tavallinen virhe: nimiavaruusalaboratorio, jota testataan vain isännän asiakasta vastaan ei todista mitään kummastakaan järjestelystä. Päätä, mitä kysymystä esität, ennen kuin luot ensimmäisen linkin.

Yksi konteksti roolia kohti, tarkoituksella yhdistetty

Luo yksi nimiavaruus roolia kohti ja siirrä jokaisen veth-parin molemmat päät kontekstiin, joka sen omistaa. Ensimmäiset neljä komentoa riittävät muodon näkemiseen:

ip netns add client
ip netns add gateway
ip link add veth-c type veth peer name veth-g
ip link set veth-c netns client

Anna laboratoriolle alueet, jotka eivät ole missään päällekkäin isännän kanssa, ja kirjoita ennen aloittamista, mikä nimiavaruus omistaa minkä osoitteen. Toimiva laboratorio tarvitsee kaksi erillistä polkua: ulomman, jotta VPN-päätepiste tavoittaa vastinparinsa, ja paluupolun suojattavalle resurssille. Mallinna ne kahtena päätöksenä, koska laboratorio, joka rakentaa vain lähtevän puoliskon, läpäisee kättelytestin ja epäonnistuu sovellustestissä.

Edelleenlähetysrooli on se, missä laboratorioista tulee kiinnostavia

Yhden roolin on edelleenlähetettävä, mikä tarkoittaa edelleenlähetyksen ottamista käyttöön kyseisessä nimiavaruudessa ja säännön lisäämistä, jota suunnittelu vaatii. Edelleenlähetystila on nimiavaruuskohtainen, joten isännän asetus ei liity laboratorioon, eikä laboratorion asetus vuoda ulospäin, kuten verkon nimiavaruuksien dokumentaatio kuvaa. WireGuard dokumentoi, että liitäntä ja sen ulompi pistoke voivat elää eri nimiavaruuksissa, mikä on hyödyllinen temppu ja erinomainen tapa hämmentää itseään. Älä oleta, että liitännän siirtäminen siirtää yhteyden joka osan samalla tavalla.

Tarkista edelleenlähetyslaskuri testipaketin jälkeen, koska sääntö, joka ei koskaan osunut, ja sääntö, joka hylkäsi, näyttävät reititystaulukossa samalta. Vain laskurit erottavat ne.

Tallenna perustaso ja riko sitten yksi reitti

Aloita tallentamalla, mitä on olemassa, kirjoittamalla konteksti jokaisen rivin viereen. Lue nimiavaruudet, sitten reitti, jonka testikohde ottaisi yhden sisällä, sitten laskurit linkillä, joka sen kuljettaa:

ip netns list
ip -n client route get 10.0.0.5
ip -n gateway -s link show veth-g

Kolmas komento on se, jonka ihmiset ohittavat, ja siellä todisteet ovat: hylättyjen ja virheiden laskurit kertovat, pääsikö paketti ylipäätään edelleenlähetysrooliin. Tallenna samat kolme näkymää muutoksen jälkeen ja anna diffin olla todiste eikä muistisi siitä. Riko sitten täsmälleen yksi asia, joko poistamalla reitti tai lisäämällä kieltosääntö edelleenlähetyspolulle, ja vahvista ennakoimasi oire: valmistunut kättely ilman vastausta tai nimen selvityksen epäonnistuminen aikakatkaisun sijaan. Laboratorio, joka osoittaa vain onnistumisen, opettaa hyvin vähän.

Siivous on se, mikä tekee seuraavasta ajosta toistettavan

Pidä siivous nimeämiesi resurssien rajoissa, koska yleinen palomuurin nollaus tai isäntäreitin poistaminen ei ole toistettavuutta, se on toinen tapaus. Tallenna topologia, täsmälliset komennot ja odottamasi havainnot, jotta seuraava ajo toistaa saman vian sen sijaan, että arvaisi, mikä konteksti piti edellistä tilaa. Ilman sitä tietuetta laboratorio on tarina, ei menettely.

Käytä laboratoriolle paikallisesti luotuja tunnistetietoja ja pidä tuotantotilit poissa jaetuista esimerkeistä. Poista sitten jokainen nimiavaruus ja vahvista, että isännän näkymä on muuttumaton, mikä on koko syy valita tämä malli. Laboratorio, jota et voi poistaa puhtaasti, on isäntämuutos ylimääräisillä vaiheilla.

Aiheeseen liittyvät artikkelit