Kaksi vihreää yhteyskuvaketta näyttävät vertailulta ja ovat yleensä sattumaa. Jos testipyyntö olisi voinut käyttää kumpaa tahansa tunnelia, tulos kuvaa parhaimmillaan toista niistä ja pahimmillaan ei kumpaakaan. Anna jokaiselle havainnolle verkkoyhteyskonteksti, aiottu kohde ja odotus, joka on kirjoitettu ennen testin ajamista. Itse hallitsemallasi Linux-koneella nimetyt verkon nimiavaruudet ovat halvin tapa ostaa tuo erottelu.

Kaksi vihreää valoa ei ole vertailu

Nimiavaruus erottaa reititystaulut, liittymät ja verkkopinon tilan, joten yhden sisällä aloitettu pyyntö ei voi hiljaa lainata toisen tunnelia. Se mitä se ei erota, on suoritin, fyysinen ylälinkki tai isännällä ajettava nimipalvelun taustaprosessi. Juuri tässä viimeisessä aukossa useimmat näistä testeistä epäonnistuvat kenenkään huomaamatta. Haku, joka lähtee nimiavaruudesta ja kysyy isännän ratkaisijalta, palauttaa vastauksen, jolla ei ole mitään yhteyttä testattavaan tunneliin.

Tämä menettely olettaa kaksi jo valmisteltua ja hyväksyttyä testinimiavaruutta, joissa on toimiva ulkoinen yhteys ja tuetut asiakkaat. Se ei luo mitään, ei rekisteröi mitään eikä korvaa mitään kokoonpanoa. Erilliset virtuaalikoneet ovat edelleen rehellinen valinta, kun asiakas tarvitsee täyden työpöytäistunnon tai kieltäytyy ajamasta sen ulkopuolella.

Kiinnitä odotus ennen ensimmäistä ajoa

Päätä kontekstikohtaisesti, miltä onnistuminen näyttää: ratkaisija, palvelun nimi, odotettu osoite ja käyttäytyminen, jota vaaditaan tunnelin pudotessa. Pidä nuo suunnitellut arvot omassa sarakkeessaan, sillä tietue, joka sekoittaa suunnitelman ja havainnon, on aikaleimalla varustettua fiktiota. Alla oleva tarkistuslista on se muoto, jonka tietue tarvitsee, ja jokaisen rivin on oltava täytettävissä ennen ensimmäistä yhteyttä.

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

Ratkaisijan johdotus ansaitsee oman rivinsä siinä tietueessa, koska se on kenttä, joka todennäköisimmin valehtelee. Nimiavaruuteen sidotut tiedostot, kuten /etc/netns/vpn-a/resolv.conf näkyvät tavallisilla poluillaan, kun komento ajetaan nimiavaruuden sisällä, kuten iproute2:n nimiavaruuksia koskeva viite kuvaa, mutta nimipalvelun vaihdon kokoonpano ja mikä tahansa käynnistämä paikallinen ratkaisija voivat silti vetää haun takaisin isännälle.

Yksi tunneli kerrallaan, toinen irrotettuna

Yhdistä A sen nykyisen omistajan kautta B:n pysyessä alas, ja tarkastele sitten käytäntöä, reittejä ja valittua polkua hallintayhteyden kontekstista. Kolme alla olevista komennoista lukee tilaa; vain viimeinen ottaa yhteyttä nimipalveluun, eikä mikään niistä lähetä sovelluksen pyyntöä.

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

Reittihaku vastaa hypoteettiseen kysymykseen kohteesta, joten se ei voi osoittaa, että palvelu hyväksyy liikennettä. Pidä nämä kaksi todistelajia eri sarakkeissa, sillä terve reitti torjutun yhteyden rinnalla on todellinen ja tavallinen tulos. Lähetä sitten yksi vaaraton valtuutettu pyyntö oikealla sovelluksella, käynnistettynä A:n kontekstissa sen tavallisena käyttäjänä ilman erioikeuksia, sertifikaatin vahvistus ja sovelluksen todennus ehjinä, ja kirjaa tulos yhdessä sen lähdeosoitteen kanssa, jonka palvelu näki. Irrota A sen omistajan kautta ja toista koko perustaso B:lle, merkitse jokainen tekemäsi kokoonpanomuutos, muuten kaksi perustasoa lakkaavat olemasta vertailukelpoisia.

Molemmat ylhäällä, sitten yksi alas kerrallaan

Vakaa tila on helppo osa. Kun molemmat tunnelit on yhdistetty, toista kunkin kontekstin haku ja sovelluspyyntö, katkaise sitten toinen tunneli ja tarkista toinen. Yhdistä uudelleen käänteisessä järjestyksessä, kun itse yhdistämisjärjestys on kysymys.

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

Kaappaus ratkaisee väitteet, joita sovelluksen tulos ei voi ratkaista: se näyttää, lähtikö pyyntö odottamastasi liittymästä vai jostain aivan muusta. Kirjaa jokaisesta siirtymästä omistajan toimenpide, aikaleima, reittitulos, nimitulos ja sovelluksen tulos. Tarkista sitten turvallisen sulkeutumisen vaatimus kyseisen nimiavaruuden sisällä, sillä eristäminen ei ole hätäkatkaisin. Nimiavaruus pitää kaksi tunnelia erillään; se ei estä kumpaakaan kuljettamasta liikennettä, kun sen profiili sanoo, että liikenteen on pysähdyttävä.

Mitä tämä tietue voi ja mitä ei voi väittää

Läpäisy todistaa nuo havainnot tälle järjestelylle, tällä isännällä, sinä hetkenä. Se ei kerro mitään kahdesta asiakkaasta, jotka jakavat yhden työpöydän reititystaulun, eikä läpimenosta, kun molemmat tunnelit kantavat kuormaa. Ne ovat erillisiä kysymyksiä erillisine testeineen, ja vertailu on vain niin hyvä kuin kullekin riville liitetty konteksti.

Pidä epäonnistumiset tietueessa onnistumisten rinnalla, merkittynä siitä, mikä tunneli oli silloin ylhäällä. Siisti sivu, joka kätkee tilan mittaushetkellä, on huonompi kuin ruma, joka näyttää sen. Tietueen myöhemmin uudelleenkäytettäväksi tekee konteksti, ei pistemäärä.

Kaksi tunnelia yhdellä koneella voidaan vertailla rehellisesti, mutta vain niin monessa kontekstissa kuin todella hallitsit. Kaikki sen yli on toive, jonka vieressä on vihreä kuvake.

Aiheeseen liittyvät artikkelit