Dvi laboratorijos gali modeliuoti tą pačią VPN topologiją ir sugesti visiškai skirtingais būdais: viena gyvena tinklo vardų erdvėse, kita – pagrindinio kompiuterio pačiuose maršrutuose. Vardų erdvės versija laiko kiekvieną sąsają, maršrutą ir lizdą kontekste, kurį galite ištrinti, o pagrindinio kompiuterio versija paleidžiama greičiau ir palieka būseną. Būtent ši likusi būsena yra priežastis, kodėl antrą laboratoriją po mėnesio sunku pakartoti. Pirmiausia palyginkite valymą, nes jis nusprendžia, ar galite eksperimentą atlikti du kartus.

Du būdai sukurti tą pačią laboratoriją ir kada kuris laimi

Pagrindinio kompiuterio maršrutų laboratorijoje pridedate tunelio sąsają ir maršrutus į mašiną, kurioje dirbate, todėl eksperimentas dalijasi likimu su jūsų shell, paketų tvarkykle ir kiekvienu kitu ryšiu. Vardų erdvės laboratorijoje kiekvienas vaidmuo gauna savo sąsajų, adresų, maršrutų ir lizdų krūvą, o ištrynus vardų erdvę visa tai pašalinama. Nė vienas modelis nėra teisingesnis, nes jie atsako į skirtingus klausimus. Rinkitės vardų erdves, kai tema yra maršrutizavimas ir perdavimas, o pagrindinio kompiuterio laboratoriją, kai tema yra tai, kaip integruojasi vienas darbalaukio klientas.

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

Abiejų maišymas yra įprasta klaida: vardų erdvės laboratorija, išbandyta tik prieš pagrindinio kompiuterio klientą nieko neįrodo apie nė vieną iš dviejų išdėstymų. Nuspręskite, kokį klausimą užduodate, prieš kurdami pirmąją sąsają.

Vienas kontekstas vienam vaidmeniui, sąmoningai sujungtas

Sukurkite po vieną vardų erdvę kiekvienam vaidmeniui ir perkelkite kiekvieną kiekvienos veth poros galą į kontekstą, kuris jį turi. Pirmųjų keturių komandų pakanka formai pamatyti:

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

Duokite laboratorijai diapazonus, kurie nesutampa su niekuo pagrindiniame kompiuteryje, ir prieš pradėdami užsirašykite, kuri vardų erdvė turi kurį adresą. Veikianti laboratorija turi turėti du atskirus kelius: išorinį, kad VPN galinis taškas pasiektų savo porininką, ir grįžimo kelią saugomam ištekliui. Modeliuokite juos kaip du sprendimus, nes laboratorija, kuri stato tik išeinančią pusę, praeina rankos paspaudimo testą ir nepraeina programos testo.

Persiuntimo vaidmuo yra vieta, kur laboratorijos tampa įdomios

Vienas vaidmuo turi persiųsti, o tai reiškia įjungti persiuntimą toje vardų erdvėje ir pridėti taisyklę, kurios reikia dizainui. Persiuntimo būsena yra kiekvienai vardų erdvei atskira, todėl pagrindinio kompiuterio nustatymas laboratorijai nesvarbus, o laboratorijos nustatymas neprateka į išorę, kaip aprašo tinklo vardų erdvių dokumentacija. WireGuard dokumentuoja, kad sąsaja ir jos išorinis lizdas gali gyventi skirtingose vardų erdvėse, o tai naudingas triukas ir puikus būdas suklaidinti save. Nelaikykite, kad sąsajos perkėlimas perkelia kiekvieną ryšio dalį vienodai.

Patikrinkite persiuntimo skaitiklį po bandomojo paketo, nes taisyklė, kuri niekada nesutapo, ir taisyklė, kuri numetė, maršrutų lentelėje atrodo vienodai. Tik skaitikliai jas skiria.

Užrašykite pradinę būseną, tada sulaužykite vieną maršrutą

Pradėkite nuo to, kas egzistuoja, įrašymo, šalia kiekvienos eilutės užrašydami kontekstą. Perskaitykite vardų erdves, tada maršrutą, kuriuo bandomasis tikslas eitų vienoje iš jų, tada skaitiklius sąsajoje, kuri jį neša:

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

Trečioji komanda yra ta, kurią žmonės praleidžia, ir būtent ten gyvena įrodymai: numestųjų ir klaidų skaitikliai pasako, ar paketas apskritai pasiekė persiuntimo vaidmenį. Užrašykite tuos pačius tris vaizdus po pakeitimo ir leiskite diff būti įrodymu, o ne jūsų atmintimi. Tada sulaužykite tiksliai vieną dalyką – arba ištrindami maršrutą, arba pridėdami atmetimo taisyklę persiuntimo kelyje – ir patvirtinkite numatytą simptomą: užbaigtas rankos paspaudimas be atsakymo arba vardo sprendimo gedimas vietoj laiko limito. Laboratorija, kuri demonstruoja tik sėkmę, išmoko labai mažai.

Valymas yra tai, kas padaro kitą paleidimą pakartojamą

Laikykite valymą tik tuose ištekliuose, kuriuos įvardijote, nes bendras ugniasienės atstatymas ar pagrindinio kompiuterio maršruto pašalinimas nėra pakartojamumas, tai antras incidentas. Išsaugokite topologiją, tikslias komandas ir stebėjimus, kurių tikėjotės, kad kitas paleidimas atkurtų tą patį gedimą, o ne spėliotų, kuriame kontekste buvo ankstesnė būsena. Be šio įrašo laboratorija yra istorija, o ne procedūra.

Naudokite vietoje sugeneruotus prisijungimo duomenis laboratorijai ir laikykite produkcijos paskyras atokiau nuo bendrų pavyzdžių. Tada ištrinkite kiekvieną vardų erdvę ir patvirtinkite, kad pagrindinio kompiuterio vaizdas nepakito, o tai yra visa priežastis pasirinkti šį modelį. Laboratorija, kurios negalite švariai pašalinti, yra pagrindinio kompiuterio pakeitimas su papildomais žingsniais.

Susiję straipsniai