Две лаборатории можат да ја моделираат истата VPN топологија и да не успеат на сосема различни начини: едната живее во мрежни именски простори, другата на сопствените рути на домаќинот. Верзијата со именски простори ја чува секоја интерфејса, рута и сокет во контекст што можете да го избришете, додека верзијата со домаќин стартува побрзо и остава состојба зад себе. Токму таа преостаната состојба е причината зошто втората лабораторија е тешка за повторување еден месец подоцна. Прво споредете го чистењето, бидејќи тоа одлучува дали можете да го извршите експериментот двапати.

Два начина да се изгради истата лабораторија и кога кој победува

Во лабораторија со рути на домаќинот додавате тунелска интерфејса и рути на машината на која работите, така што експериментот ја дели судбината со вашата shell, вашиот менаџер на пакети и секоја друга врска. Во лабораторија со именски простори секоја улога добива свој сопствен стек од интерфејси, адреси, рути и сокети, а бришењето на именскиот простор го отстранува сето тоа. Ниту еден модел не е поправен, бидејќи тие одговараат на различни прашања. Изберете именски простори кога темата е рутирање и проследување, и лабораторија со домаќин кога темата е како се интегрира еден десктоп клиент.

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

Мешањето на двете е вообичаената грешка: лабораторија со именски простори тестирана само против клиент на домаќинот не докажува ништо за ниту еден од двата распореди. Одлучете кое прашање го поставувате пред да ја создадете првата врска.

Еден контекст по улога, намерно поврзани

Создадете еден именски простор по улога и преместете го секој крај од секој veth пар во контекстот што го поседува. Првите четири команди се доволни за да се види формата:

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

Дајте ѝ на лабораторијата опсези што не се преклопуваат со ништо на домаќинот, и запишете пред почетокот кој именски простор поседува која адреса. Работната лабораторија бара два одделни патеки: надворешна за VPN крајната точка да стигне до својот пар, и повратна патека за заштитениот ресурс. Моделирајте ги како две одлуки, бидејќи лабораторија што ја гради само излезната половина поминува тест за ракување и паѓа на тест за апликација.

Улогата за проследување е местото каде лабораториите стануваат интересни

Една улога мора да проследува, што значи да се овозможи проследување во тој именски простор и да се додаде правилото што му е потребно на дизајнот. Состојбата на проследување е по именски простор, па поставката на домаќинот е неважна за лабораторијата и поставката на лабораторијата не истекува надвор, како што опишува документацијата за мрежни именски простори. WireGuard документира дека интерфејсата и нејзиниот надворешен сокет можат да живеат во различни именски простори, што е корисен трик и одличен начин да се збуниш себеси. Не претпоставувајте дека преместувањето на интерфејса преместува секој дел од врската на ист начин.

Проверете го бројачот за проследување по тест пакет, бидејќи правило што никогаш не се совпаднало и правило што го отфрлило изгледаат идентично во табелата со рути. Само бројачите ги раздвојуваат.

Запишете основна линија, потоа скршете една рута

Започнете со запишување на она што постои, со контекстот запишан до секоја линија. Прочитајте ги именските простори, потоа рутата што тест дестинацијата би ја поминала во еден од нив, потоа бројачите на врската што ја носи:

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

Третата команда е онаа што луѓето ја прескокнуваат, и токму таму живеат доказите: бројачите за отфрлени и грешки ви кажуваат дали пакетот воопшто стигнал до улогата за проследување. Запишете ги истите три погледи по промена, и дозволете diff да биде доказот наместо вашето сеќавање. Потоа скршете точно едно нешто, или со бришење на рута или со додавање на правило за одбивање на патеката за проследување, и потврдете го симптомот што го предвидовте: завршено ракување без одговор или неуспех при резолуција на име наместо истекување на времето. Лабораторија што прикажува само успех учи многу малку.

Чистењето е она што го прави следното извршување повторливо

Држете го чистењето ограничено на ресурсите што ги именувавте, бидејќи целосно ресетирање на огнениот ѕид или отстранување на рута на домаќинот не е повторливост, тоа е втор инцидент. Зачувајте ја топологијата, точните команди и набљудувањата што ги очекувавте, за следното извршување да го репродуцира истиот дефект наместо да погодува во кој контекст била претходната состојба. Без тој запис лабораторијата е приказна, а не процедура.

Користете локално генерирани пристапни податоци за лабораторијата и држете ги продукциските сметки подалеку од споделени примери. Потоа избришете го секој именски простор и потврдете дека погледот на домаќинот е непроменет, што е целата причина да се избере овој модел. Лабораторија што не можете чисто да ја отстраните е промена на домаќинот со дополнителни чекори.

Поврзани статии