Dva laboratorija lahko modelirata isto topologijo VPN in spodletita na povsem različne načine: eden živi v omrežnih imenskih prostorih, drugi na lastnih poteh gostitelja. Različica z imenskimi prostori hrani vsak vmesnik, pot in vtičnico v kontekstu, ki ga lahko izbrišete, medtem ko se različica z gostiteljem začne hitreje in za seboj pušča stanje. Prav to preostalo stanje je razlog, da je drugi laboratorij mesec pozneje težko ponoviti. Najprej primerjajte čiščenje, ker odloča, ali lahko poskus izvedete dvakrat.

Dva načina gradnje istega laboratorija in kdaj zmaga kateri

V laboratoriju s potmi gostitelja dodate tunelski vmesnik in poti v stroj, na katerem delate, zato si poskus deli usodo z vašo lupino, upraviteljem paketov in vsako drugo povezavo. V laboratoriju imenskih prostorov dobi vsaka vloga svoj sklad vmesnikov, naslovov, poti in vtičnic, brisanje imenskega prostora pa odstrani vse to. Noben model ni pravilnejši, ker odgovarjata na različna vprašanja. Izberite imenske prostore, ko je tema usmerjanje in posredovanje, in laboratorij z gostiteljem, ko je tema, kako se integrira en namizni odjemalec.

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

Mešanje obojega je običajna napaka: laboratorij imenskih prostorov, preizkušen proti odjemalcu samo na gostitelju ne dokazuje ničesar o nobeni od obeh postavitev. Odločite se, katero vprašanje postavljate, preden ustvarite prvo povezavo.

En kontekst na vlogo, povezan namerno

Ustvarite en imenski prostor na vlogo in premaknite vsak konec vsakega para veth v kontekst, ki ga ima v lasti. Prve štiri ukaze zadostujejo, da vidite obliko:

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

Laboratoriju dajte obsege, ki se ne prekrivajo z ničimer na gostitelju, in pred začetkom zapišite, kateri imenski prostor ima kateri naslov. Delujoč laboratorij potrebuje dve ločeni poti: zunanjo, da končna točka VPN doseže svojega partnerja, in povratno pot za zaščiteni vir. Modelirajte ju kot dve odločitvi, ker laboratorij, ki zgradi le odhodno polovico, prestane preizkus rokovanja in spodleti na preizkusu aplikacije.

Vloga posredovanja je kraj, kjer laboratoriji postanejo zanimivi

Ena vloga mora posredovati, kar pomeni omogočiti posredovanje znotraj tega imenskega prostora in dodati pravilo, ki ga zasnova potrebuje. Stanje posredovanja je za vsak imenski prostor, zato je nastavitev gostitelja za laboratorij nepomembna in nastavitev laboratorija ne uhaja navzven, kot opisuje dokumentacija o omrežnih imenskih prostorih. WireGuard dokumentira, da lahko vmesnik in njegova zunanja vtičnica živita v različnih imenskih prostorih, kar je uporabna zvijača in odličen način, da se zmedete. Ne predpostavljajte, da premik vmesnika premakne vsak del povezave enako.

Preverite števec posredovanja po testnem paketu, ker sta pravilo, ki se nikoli ni ujemalo, in pravilo, ki je paket zavrglo, v tabeli poti videti enako. Ločijo ju le števci.

Zabeležite izhodišče in nato zlomite eno pot

Začnite z zapisom tega, kar obstaja, s kontekstom ob vsaki vrstici. Preberite imenske prostore, nato pot, ki bi jo testni cilj prevzel znotraj enega od njih, nato števce na povezavi, ki jo nosi:

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

Tretji ukaz je tisti, ki ga ljudje preskočijo, in prav tam živijo dokazi: števci zavrženih in napak vam povedo, ali je paket sploh dosegel vlogo posredovanja. Zabeležite iste tri poglede po spremembi in pustite, da je diff dokaz, ne vaš spomin. Nato zlomite točno eno stvar, bodisi z brisanjem poti bodisi z dodajanjem pravila zavrnitve na poti posredovanja, in potrdite simptom, ki ste ga predvideli: dokončano rokovanje brez odgovora ali neuspeh razreševanja imena namesto časovnega izteka. Laboratorij, ki prikazuje le uspeh, nauči zelo malo.

Čiščenje je tisto, kar naredi naslednji zagon ponovljiv

Držite čiščenje znotraj virov, ki ste jih poimenovali, ker splošna ponastavitev požarnega zidu ali odstranitev poti gostitelja ni ponovljivost, ampak drugi incident. Shranite topologijo, natančne ukaze in opažanja, ki ste jih pričakovali, da bo naslednji zagon reproduciral isto napako, namesto da bi ugibal, kateri kontekst je imel prejšnje stanje. Brez tega zapisa je laboratorij zgodba, ne postopek.

Za laboratorij uporabite lokalno ustvarjene poverilnice in hranite produkcijske račune stran od skupnih primerov. Nato izbrišite vsak imenski prostor in potrdite, da je pogled gostitelja nespremenjen, kar je ves razlog za izbiro tega modela. Laboratorij, ki ga ne morete čisto odstraniti, je sprememba gostitelja z dodatnimi koraki.

Sorodni članki