Dve laboratóriá môžu modelovať rovnakú topológiu VPN a zlyhať úplne odlišnými spôsobmi: jedno žije v sieťových menných priestoroch, druhé na vlastných trasách hostiteľa. Verzia s mennými priestormi drží každé rozhranie, trasu a socket v kontexte, ktorý môžete zmazať, kým verzia s hostiteľom štartuje rýchlejšie a zanecháva za sebou stav. Práve tento zvyškový stav robí druhé laboratórium o mesiac ťažko opakovateľným. Porovnajte najprv upratovanie, pretože rozhoduje o tom, či experiment zvládnete dvakrát.

Dva spôsoby, ako postaviť to isté laboratórium, a kedy ktorý vyhráva

V laboratóriu s trasami hostiteľa pridáte tunelové rozhranie a trasy do stroja, na ktorom pracujete, takže experiment zdieľa osud s vaším shellom, správcom balíkov a každým ďalším pripojením. V laboratóriu menných priestorov dostane každá rola vlastný zásobník rozhraní, adries, trás a socketov a zmazanie menného priestoru odstráni všetko. Ani jeden model nie je správnejší, pretože odpovedajú na rôzne otázky. Zvoľte menné priestory, keď je témou smerovanie a preposielanie, a laboratórium s hostiteľom, keď je témou to, ako sa integruje jeden desktopový klient.

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

Miešať oboje je obvyklá chyba: laboratórium menných priestorov testované proti klientovi iba na hostiteľovi nepreukazuje nič o žiadnom z dvoch usporiadaní. Rozhodnite, na ktorú otázku sa pýtate, skôr než vytvoríte prvé spojenie.

Jeden kontext na rolu, spojený zámerne

Vytvorte jeden menný priestor na rolu a presuňte každý koniec každého veth páru do kontextu, ktorý ho vlastní. Prvé štyri príkazy stačia na to, aby ste videli tvar:

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

Dajte laboratóriu rozsahy, ktoré sa s ničím na hostiteľovi neprekrývajú, a pred začiatkom si zapíšte, ktorý menný priestor vlastní ktorú adresu. Fungujúce laboratórium potrebuje dve oddelené cesty: vonkajšiu, aby sa koncový bod VPN dostal k svojmu partnerovi, a spätnú cestu pre chránený zdroj. Modelujte ich ako dve rozhodnutia, pretože laboratórium, ktoré stavia len odchádzajúcu polovicu, prejde testom podania ruky a zlyhá v teste aplikácie.

Rola preposielania je miesto, kde laboratóriá začínajú byť zaujímavé

Jedna rola musí preposielať, čo znamená povoliť preposielanie v tomto mennom priestore a pridať pravidlo, ktoré návrh potrebuje. Stav preposielania je na každý menný priestor, takže nastavenie hostiteľa je pre laboratórium irelevantné a nastavenie laboratória nepresakuje von, ako opisuje dokumentácia k sieťovým menným priestorom. WireGuard dokumentuje, že rozhranie a jeho vonkajší socket môžu žiť v rôznych menných priestoroch, čo je užitočný trik a vynikajúci spôsob, ako sa zmiasť. Nepredpokladajte, že presun rozhrania presunie každú časť spojenia rovnako.

Skontrolujte počítadlo preposielania po testovacom pakete, pretože pravidlo, ktoré nikdy neodpovedalo, a pravidlo, ktoré zahodilo, vyzerajú v smerovacej tabuľke rovnako. Rozdeľujú ich len počítadlá.

Zaznamenajte východiskový stav a potom rozbite jednu trasu

Začnite záznamom toho, čo existuje, s kontextom napísaným pri každom riadku. Prečítajte menné priestory, potom trasu, ktorou by testovací cieľ prešiel v jednom z nich, potom počítadlá na spoji, ktorý ju nesie:

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

Tretí príkaz je ten, ktorý ľudia preskakujú, a práve tam žijú dôkazy: počítadlá zahodených a chýb vám povedia, či paket vôbec dorazil k role preposielania. Zaznamenajte tie isté tri pohľady po zmene a nechajte diff, aby bol dôkazom, nie vaša pamäť. Potom rozbite presne jednu vec, buď zmazaním trasy, alebo pridaním pravidla odmietnutia na ceste preposielania, a potvrďte symptom, ktorý ste predpovedali: dokončené podanie ruky bez odpovede, alebo zlyhanie prekladu mien namiesto vypršania času. Laboratórium, ktoré ukazuje len úspech, naučí veľmi málo.

Upratovanie je to, čo robí ďalší beh opakovateľným

Držte upratovanie obmedzené na zdroje, ktoré ste pomenovali, pretože plošný reset firewallu alebo odstránenie trasy hostiteľa nie je reprodukovateľnosť, je to druhý incident. Uložte topológiu, presné príkazy a pozorovania, ktoré ste očakávali, aby ďalší beh reprodukoval tú istú poruchu namiesto hádania, ktorý kontext držal predchádzajúci stav. Bez tohto záznamu je laboratórium príbeh, nie postup.

Používajte pre laboratórium lokálne vygenerované prihlasovacie údaje a držte produkčné účty mimo zdieľaných príkladov. Potom vymažte každý menný priestor a potvrďte, že pohľad na hostiteľa je nezmenený, čo je celý dôvod výberu tohto modelu. Laboratórium, ktoré nedokážete čisto odstrániť, je zmena hostiteľa s krokmi navyše.

Súvisiace články