Twee laboratoriums kan dieselfde VPN-topologie modelleer en op heeltemal verskillende maniere misluk: die een leef in netwerknaamruimtes, die ander op die gasheer se eie roetes. Die naamruimte-weergawe hou elke koppelvlak, roete en socket in ’n konteks wat jy kan verwyder, terwyl die gasheer-weergawe vinniger begin en toestand agterlaat. Daardie oorblywende toestand is die rede waarom die tweede laboratorium ’n maand later moeilik herhaalbaar is. Vergelyk eers die opruiming, want dit bepaal of jy die eksperiment twee keer kan laat loop.

Twee maniere om dieselfde laboratorium te bou, en wanneer elkeen wen

In ’n gasheerroete-laboratorium voeg jy ’n tonnelkoppelvlak en roetes by die masjien waarop jy werk, sodat die eksperiment die lot deel met jou shell, jou pakketbestuurder en elke ander verbinding. In ’n naamruimte-laboratorium kry elke rol sy eie stapel koppelvlakke, adresse, roetes en sockets, en die verwydering van die naamruimte verwyder dit alles. Nie een model is meer korrek nie, want hulle beantwoord verskillende vrae. Kies naamruimtes wanneer die onderwerp roetering en aanstuur is, en ’n gasheer-laboratorium wanneer die onderwerp is hoe een lessenaankliënt integreer.

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

Om die twee te meng is die gewone fout: ’n naamruimte-laboratorium wat teen ’n suiwer gasheerkliënt getoets word bewys niks oor een van die twee reëlings nie. Besluit watter vraag jy vra voordat jy die eerste skakel skep.

Een konteks per rol, doelbewus verbind

Skep een naamruimte per rol en skuif elke punt van elke veth-paar in die konteks wat dit besit. Die eerste vier opdragte is genoeg om die vorm te sien:

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

Gee die laboratorium bereike wat niks op die gasheer oorvleuel nie, en skryf voor die begin neer watter naamruimte watter adres besit. ’n Werkende laboratorium het twee afsonderlike paaie nodig: ’n buitenste een sodat die VPN-eindpunt sy eweknie kan bereik, en ’n terugpad vir die hulpbron wat beskerm word. Modelleer hulle as twee besluite, want ’n laboratorium wat net die uitgaande helfte bou, slaag ’n handdruk-toets en faal ’n toepassingstoets.

Die aanstuurrol is waar laboratoriums interessant word

Een rol moet aanstuur, wat beteken om aanstuur binne daardie naamruimte te aktiveer en die reël by te voeg wat die ontwerp nodig het. Aanstuurtoestand is per naamruimte, so die gasheer-instelling is irrelevant vir die laboratorium en die laboratorium-instelling lek nie na buite nie, soos die dokumentasie oor netwerknaamruimtes beskryf. WireGuard dokumenteer dat ’n koppelvlak en sy buitenste socket in verskillende naamruimtes kan leef, wat ’n nuttige truuk en ’n uitstekende manier is om jouself te verwar. Moenie aanneem dat die skuif van ’n koppelvlak elke deel van die verbinding identies skuif nie.

Kontroleer die aansturteller ná ’n toetspakket, want ’n reël wat nooit gepas het nie en ’n reël wat laat val het, lyk identies in die roetetabel. Net die tellers skei hulle.

Teken ’n basislyn op en breek dan een roete

Begin deur op te teken wat bestaan, met die konteks langs elke reël. Lees die naamruimtes, dan die roete wat ’n toetsbestemming binne een van hulle sou neem, dan die tellers op die skakel wat dit dra:

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

Die derde opdrag is die een wat mense oorslaan, en dit is waar die bewyse sit: die tellers vir laat val en foute vertel jou of ’n pakket die aanstuurrol überhaupt bereik het. Teken dieselfde drie aansigte ná ’n verandering op, en laat die diff die bewys wees eerder as jou geheue daarvan. Breek dan presies een ding, hetsy deur ’n roete te verwyder of deur ’n weieringsreël op die aanstuurpad by te voeg, en bevestig die simptoom wat jy voorspel het: ’n voltooide handdruk sonder antwoord, of ’n oplossingsfout in plaas van ’n tydsverloop. ’n Laboratorium wat net sukses demonstreer, leer baie min.

Opruiming is wat die volgende lopie herhaalbaar maak

Hou opruiming beperk tot die hulpbronne wat jy genoem het, want ’n algemene firewall-herstel of die verwydering van ’n gasheerroete is nie herhaalbaarheid nie, dit is ’n tweede voorval. Stoor die topologie, die presiese opdragte en die waarnemings wat jy verwag het, sodat die volgende lopie dieselfde fout herproduseer in plaas daarvan om te raai watter konteks die vorige toestand gehou het. Sonder daardie rekord is die laboratorium ’n verhaal eerder as ’n prosedure.

Gebruik plaaslik gegenereerde geloofsbriewe vir die laboratorium, en hou produksie-rekeninge uit gedeelde voorbeelde. Verwyder dan elke naamruimte en bevestig dat die gasheer-aansig onveranderd is, wat die hele rede is om hierdie model te kies. ’n Laboratorium wat jy nie skoon kan verwyder nie, is ’n gasheer-verandering met ekstra stappe.

Verwante artikels