Testi VPN-i marsruutimist nimeruumides hosti marsruute puutumata
Kolm simuleeritud rolli, kolm isoleeritud konteksti ja üks veth lingi kohta. Võrdle nimeruumi laborit hosti marsruutide laboriga enne hosti puutumist.
Kaks laborit võivad modelleerida sama VPN-i topoloogiat ja ebaõnnestuda täiesti erineval viisil: üks elab võrgu nimeruumides, teine hosti enda marsruutidel. Nimeruumi versioon hoiab iga liidest, marsruuti ja soklit kontekstis, mille saad kustutada, samas kui hosti versioon käivitub kiiremini ja jätab oleku maha. Just see järelejäänud olek teeb teise labori kuu aega hiljem raskesti korratavaks. Võrdle esimesena puhastamist, sest see otsustab, kas saad katse kaks korda läbi viia.
Kaks viisi sama labori ehitamiseks ja millal kumb võidab
Hosti marsruutide laboris lisad sa tunneliliidese ja marsruudid masinale, millel töötad, nii et katse jagab saatust sinu shelli, paketihalduri ja iga teise ühendusega. Nimeruumi laboris saab iga roll oma liideste, aadresside, marsruutide ja sokkide virna ning nimeruumi kustutamine eemaldab kõik selle. Kumbki mudel ei ole õigem, sest need vastavad erinevatele küsimustele. Vali nimeruumid, kui teemaks on marsruutimine ja edastamine, ning hosti labor, kui teemaks on see, kuidas üks töölauaklient integreerub.
| Aspect | Namespace lab | Host-route lab |
|---|---|---|
| Isolation | Full stack per role | Shares the host stack |
| Cleanup | Delete named namespaces | Manual route and rule removal |
| Realism | Strong for routing | Needed for GUI clients |
Kahe segamine on tavaline viga: nimeruumi labor, mida testitakse ainult hosti kliendi vastu ei tõesta kummagi korralduse kohta midagi. Otsusta, millist küsimust küsid, enne kui lood esimese lingi.
Üks kontekst rolli kohta, sihilikult ühendatud
Loo iga rolli jaoks üks nimeruum ja liiguta iga veth-paari mõlemad otsad konteksti, mis seda omab. Esimesest neljast käsust piisab, et kuju näha:
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 clientAnna laborile vahemikud, mis ei kattu mitte millegagi hostis, ja pane enne alustamist kirja, milline nimeruum omab millist aadressi. Töötav labor vajab kahte eraldi teed: välist teed, et VPN-i lõpp-punkt jõuaks oma paariliseni, ja tagasiteed kaitstava ressursi jaoks. Modelleeri neid kahe otsusena, sest labor, mis ehitab ainult väljuva poole, läbib käepigistuse testi ja ebaõnnestub rakenduse testis.
Edastamise roll on koht, kus laborid muutuvad huvitavaks
Üks roll peab edastama, mis tähendab edastamise lubamist selle nimeruumi sees ja reegli lisamist, mida disain vajab. Edastamise olek on nimeruumi kaupa, seega hosti seade on labori jaoks ebaoluline ja labori seade ei leki välja, nagu kirjeldab võrgu nimeruumide dokumentatsioon. WireGuard dokumenteerib, et liides ja selle väline sokkel võivad elada erinevates nimeruumides, mis on kasulik nipp ja suurepärane viis end segadusse ajada. Ära eelda, et liidese liigutamine liigutab iga ühenduse osa ühtemoodi.
Kontrolli edastamise loendurit pärast testpaketti, sest reegel, mis kunagi ei sobitunud, ja reegel, mis paketi kõrvale heitis, näevad marsruuditabelis ühesugused välja. Ainult loendurid eristavad neid.
Salvesta baasjoon, seejärel murra üks marsruut
Alusta sellest, mis olemas on, kirjutades konteksti iga rea kõrvale. Loe nimeruumid, seejärel marsruut, mille testi sihtkoht ühe sees võtaks, seejärel loendurid lingil, mis seda kannab:
ip netns list
ip -n client route get 10.0.0.5
ip -n gateway -s link show veth-gKolmas käsk on see, mille inimesed vahele jätavad, ja just seal elab tõestus: kõrvaleheidetud ja vigade loendurid ütlevad, kas pakett üldse edastamise rollini jõudis. Salvesta samad kolm vaadet pärast muudatust ja lase diffil olla tõestuseks, mitte sinu mälul. Seejärel murra täpselt üks asi, kas kustutades marsruudi või lisades edastamise teele keeldumisreegli, ja kinnita sümptom, mille ennustasid: lõpetatud käepigistus ilma vastuseta või nime lahendamise tõrge ajalõpu asemel. Labor, mis näitab ainult edu, õpetab väga vähe.
Puhastamine on see, mis teeb järgmise käivituse korratavaks
Hoia puhastamine nende ressursside piires, mille nimetasid, sest üldine tulemüüri lähtestamine või hosti marsruudi eemaldamine ei ole korratavus, vaid teine intsident. Salvesta topoloogia, täpsed käsud ja ootused, mida ootasid, et järgmine käivitus taasesitaks sama tõrke, mitte ei arvaks, millises kontekstis eelmine olek oli. Ilma selle kirjeta on labor lugu, mitte protseduur.
Kasuta labori jaoks kohapeal loodud mandaate ja hoia tootmiskontod jagatud näidetest eemal. Seejärel kustuta iga nimeruum ja kinnita, et hosti vaade on muutumatu, mis on kogu selle mudeli valimise põhjus. Labor, mida ei saa puhtalt eemaldada, on hosti muudatus lisasammudega.