Tesztelje a VPN-útvonalválasztást névterekben anélkül, hogy hozzányúlna a gazdagép útvonalaihoz
Három szimulált szerep, három elkülönített kontextus és egy veth kapcsolatonként. Hasonlítsa össze a névtér-laboratóriumot a gazdagép-útvonal laboratóriummal, mielőtt hozzányúl a gazdagéphez.
Két laboratórium ugyanazt a VPN-topológiát modellezheti, és teljesen eltérő módon vallhat kudarcot: az egyik hálózati névterekben él, a másik a gazdagép saját útvonalain. A névtér-változat minden interfészt, útvonalat és socketet olyan kontextusban tart, amelyet törölhet, míg a gazdagép-változat gyorsabban indul, és állapotot hagy maga után. Ez a maradék állapot az oka annak, hogy a második laboratóriumot egy hónappal később nehéz megismételni. Először a tisztítást hasonlítsa össze, mert ez dönti el, hogy kétszer lefuttathatja-e a kísérletet.
Két módszer ugyanazon laboratórium felépítésére, és hogy mikor melyik nyer
Egy gazdagép-útvonal laboratóriumban hozzáad egy alagút-interfészt és útvonalakat ahhoz a géphez, amelyen dolgozik, így a kísérlet sorsát a shelljével, a csomagkezelőjével és minden más kapcsolattal osztja meg. Egy névtér-laboratóriumban minden szerep saját vermet kap interfészekből, címekből, útvonalakból és socketekből, és a névtér törlése mindezt eltávolítja. Egyik modell sem pontosabb, mert különböző kérdésekre válaszolnak. Válasszon névtereket, ha a téma az útvonalválasztás és a továbbítás, és gazdagép-laboratóriumot, ha a téma az, hogyan integrálódik egy asztali kliens.
| 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 |
A kettő keverése a szokásos hiba: egy névtér-laboratórium, amelyet csak a gazdagépen futó klienssel szemben tesztelnek semmit sem bizonyít egyik elrendezésről sem. Döntse el, milyen kérdést tesz fel, mielőtt létrehozza az első kapcsolatot.
Egy kontextus szerepenként, szándékosan összekapcsolva
Hozzon létre egy névteret szerepenként, és helyezze minden veth-pár mindkét végét abba a kontextusba, amely birtokolja. Az első négy parancs elég a forma meglátásához:
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 clientAdjon a laboratóriumnak olyan tartományokat, amelyek semmivel sem fednek át a gazdagépen, és indulás előtt írja le, melyik névtér melyik címet birtokolja. Egy működő laboratóriumnak két külön útvonalra van szüksége: egy külsőre, hogy a VPN-végpont elérje a partnerét, és egy visszaútra a védett erőforrás számára. Modellezze őket két döntésként, mert az a laboratórium, amely csak a kimenő felét építi fel, átmegy egy kézfogás-teszten, és elbukik egy alkalmazásteszten.
A továbbítási szerep az, ahol a laboratóriumok érdekessé válnak
Az egyik szerepnek továbbítania kell, ami azt jelenti, hogy engedélyezni kell a továbbítást azon a névtéren belül, és hozzá kell adni a szabályt, amelyre a tervezésnek szüksége van. A továbbítási állapot névtérenként értendő, ezért a gazdagép beállítása irreleváns a laboratórium számára, és a laboratórium beállítása nem szivárog kifelé, ahogy a hálózati névterek dokumentációja leírja. A WireGuard dokumentálja, hogy egy interfész és a külső socketje különböző névterekben élhet, ami hasznos trükk és kiváló módja annak, hogy összezavarja magát. Ne feltételezze, hogy egy interfész áthelyezése a kapcsolat minden részét ugyanúgy helyezi át.
Ellenőrizze a továbbítási számlálót egy tesztcsomag után, mert egy soha nem egyező szabály és egy eldobó szabály azonosnak látszik az útvonaltáblában. Csak a számlálók különböztetik meg őket.
Rögzítsen egy kiindulási állapotot, majd törjön el egy útvonalat
Kezdje annak rögzítésével, ami létezik, a kontextust minden sor mellé írva. Olvassa be a névtereket, majd azt az útvonalat, amelyet egy tesztcél az egyikben bejárna, majd a kapcsolat számlálóit, amely hordozza:
ip netns list
ip -n client route get 10.0.0.5
ip -n gateway -s link show veth-gA harmadik parancs az, amelyet az emberek kihagynak, és ott él a bizonyíték: az eldobott és hibás számlálók megmondják, eljutott-e egyáltalán a csomag a továbbítási szerephez. Rögzítse ugyanazt a három nézetet egy változtatás után, és hagyja, hogy a diff legyen a bizonyíték, ne az emlékezete. Aztán törjön el pontosan egy dolgot, vagy egy útvonal törlésével, vagy egy elutasító szabály hozzáadásával a továbbítási útvonalhoz, és erősítse meg az előrejelzett tünetet: egy befejezett kézfogás válasz nélkül, vagy egy névfeloldási hiba időtúllépés helyett. Az a laboratórium, amely csak a sikert mutatja be, nagyon keveset tanít.
A tisztítás az, ami a következő futást megismételhetővé teszi
Tartsa a tisztítást a megnevezett erőforrásokra korlátozva, mert egy átfogó tűzfal-visszaállítás vagy egy gazdagép-útvonal eltávolítása nem reprodukálhatóság, hanem második incidens. Mentse el a topológiát, a pontos parancsokat és a várt megfigyeléseket, hogy a következő futás ugyanazt a hibát reprodukálja, ahelyett hogy kitalálná, melyik kontextusban volt az előző állapot. E feljegyzés nélkül a laboratórium történet, nem eljárás.
Használjon helyben generált hitelesítő adatokat a laboratóriumhoz, és tartsa távol a termelési fiókokat a megosztott példáktól. Ezután törölje az egyes névtereket, és erősítse meg, hogy a gazdagép nézete változatlan, ami a modell választásának teljes indoka. Egy laboratórium, amelyet nem tud tisztán eltávolítani, gazdagép-módosítás extra lépésekkel.