Dve zelené ikony pripojenia vyzerajú ako porovnanie a zvyčajne sú náhoda. Ak testovacia požiadavka mohla použiť ktorýkoľvek z dvoch tunelov, výsledok v najlepšom prípade opisuje jeden z nich a v najhoršom ani jeden. Každému pozorovaniu dajte sieťový kontext, zamýšľaný cieľ a očakávanie zapísané pred spustením testu. Na samostatne spravovanom počítači s Linuxom sú pomenované sieťové menné priestory najlacnejší spôsob, ako toto oddelenie kúpiť.

Dve zelené kontrolky nie sú porovnanie

Menný priestor oddeľuje smerovacie tabuľky, rozhrania a stav sieťového zásobníka, takže požiadavka spustená v jednom nemôže potichu požičať tunel iného. Čo neoddeľuje, je procesor, fyzické pripojenie nahor alebo služba prekladu mien bežiaca na hostiteľovi. Práve v tejto poslednej medzere zlyháva väčšina týchto testov bez toho, aby si to niekto všimol. Dopyt, ktorý opustí menný priestor a spýta sa prekladača na hostiteľovi, vráti odpoveď bez akéhokoľvek vzťahu k testovanému tunelu.

Tento postup predpokladá dva už pripravené a schválené testovacie menné priestory s funkčným vonkajším pripojením a podporovanými klientmi. Nič nevytvára, nič nezapisuje a nenahrádza žiadnu konfiguráciu. Samostatné virtuálne počítače zostávajú poctivou voľbou, keď klient potrebuje plnú reláciu pracovnej plochy alebo odmieta bežať mimo nej.

Upevnite očakávanie pred prvým spustením

Pre každý kontext určte, ako vyzerá úspech: prekladač, názov služby, očakávaná adresa a správanie vyžadované pri páde tunela. Držte tieto plánované hodnoty vo vlastnom stĺpci, pretože záznam, ktorý mieša plán a pozorovanie, je fikcia s časovou pečiatkou. Kontrolný zoznam nižšie je tvar, ktorý záznam potrebuje, a každý riadok musí byť vyplniteľný pred prvým pripojením.

TunnelOwnerClient interface inside the namespaceProof commandRequired on disconnect
vpn-athe identity that owns profile A, recorded by nameits own tun device, never the host'sip -n vpn-a -4 route get 10.55.10.20traffic stops; no host-side fallback
vpn-ba separate owner, even when both run on one boxits own tun device in its own namespaceip -n vpn-b -4 route get 10.55.20.20verified separately, never inferred from A

Zapojenie prekladača si v tom zázname zaslúži vlastný riadok, pretože je to pole, ktoré najpravdepodobnejšie klame. Súbory viazané na menný priestor, ako napríklad /etc/netns/vpn-a/resolv.conf sa objavujú na svojich obvyklých cestách, keď sa príkaz spúšťa vnútri menného priestoru, ako to opisuje referencia iproute2 o menných priestoroch, ale konfigurácia prepínania mennej služby a akýkoľvek miestny prekladač, ktorý spustí, môžu dopyt stále stiahnuť späť na hostiteľa.

Vždy jeden tunel, druhý odpojený

Pripojte A cez jeho existujúceho vlastníka, kým B zostáva vypnuté, a potom z administratívneho kontextu skontrolujte politiku, trasy a zvolenú cestu. Tri z nižšie uvedených príkazov čítajú stav; iba posledný kontaktuje mennú službu a žiadny z nich neposiela požiadavku aplikácie.

sudo ip -n vpn-a -4 rule show
sudo ip -n vpn-a -4 route show table all
sudo ip -n vpn-a -4 route get 10.55.10.20
sudo ip netns exec vpn-a getent ahostsv4 svc-a.lab.internal

Dopyt na trasu odpovedá na hypotetickú otázku o cieli, takže nemôže ukázať, že služba prijíma prevádzku. Držte tieto dva druhy dôkazov v oddelených stĺpcoch, pretože zdravá trasa vedľa odmietnutého spojenia je skutočný a častý výsledok. Potom pošlite jednu neškodnú povolenú požiadavku skutočnou aplikáciou, spustenou v kontexte A ako jej bežný neprivilegovaný používateľ s neporušeným overovaním certifikátov a autentifikáciou aplikácie, a zaznamenajte výsledok spolu so zdrojovou adresou, ktorú služba videla. Odpojte A cez jeho vlastníka a zopakujte celú základnú líniu pre B, pričom poznačte každú zmenu konfigurácie, ktorú urobíte, inak obe základné línie prestanú byť porovnateľné.

Obe hore, potom po jednom dole

Ustálený stav je tá ľahká časť. S oboma pripojenými tunelmi zopakujte dopyt a požiadavku aplikácie pre každý kontext, potom prerušte jeden tunel a skontrolujte druhý. Pripojte sa znova v opačnom poradí, keď je otázkou samotné poradie pripájania.

sudo ip netns exec vpn-a tcpdump -ni any port 443 -c 5
sudo ip netns exec vpn-b getent ahostsv4 svc-b.lab.internal
sudo ip -n vpn-b -4 route get 10.55.20.20

Zachytenie vyrieši spory, ktoré výsledok aplikácie vyriešiť nemôže: ukáže, či požiadavka vyšla cez rozhranie, ktoré ste očakávali, alebo cez niečo úplne iné. Pre každý prechod zaznamenajte akciu vlastníka, časovú pečiatku, výsledok trasy, výsledok mena a výsledok aplikácie. Potom v postihnutom mennom priestore skontrolujte požiadavku na bezpečné uzavretie, pretože izolácia nie je vypínač. Menný priestor drží dva tunely oddelene; nebráni žiadnemu z nich niesť prevádzku, keď jeho profil hovorí, že prevádzka sa musí zastaviť.

Čo tento záznam môže a čo nemôže tvrdiť

Úspech dokazuje tieto pozorovania pre toto usporiadanie, na tomto hostiteľovi, v tom čase. Nehovorí nič o dvoch klientoch, ktorí zdieľajú jednu smerovaciu tabuľku pracovnej plochy, ani o priepustnosti, kým oba tunely nesú záťaž. To sú oddelené otázky s oddelenými testami a porovnanie je len také dobré, aký dobrý je kontext pripojený ku každému riadku.

Držte zlyhania v zázname vedľa úspechov, označené tým, ktorý tunel bol vtedy hore. Čistá stránka, ktorá skrýva stav v okamihu merania, je horšia ako škaredá, ktorá ho ukazuje. Záznam robí znovu použiteľným kontext, nie skóre.

Dva tunely na jednom počítači sa dajú porovnať poctivo, ale iba v toľkých kontextoch, koľko ste ich skutočne ovládali. Čokoľvek navyše je želanie so zelenou ikonou vedľa.

Súvisiace články