Две лабораторије могу моделирати исту 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 буде доказ, а не ваше сећање. Затим сломите тачно једну ствар, било брисањем руте или додавањем правила одбијања на путу прослеђивања, и потврдите симптом који сте предвидели: завршено руковање без одговора или неуспех разрешавања имена уместо истека времена. Лабораторија која приказује само успех учи веома мало.

Чишћење је оно што чини следеће покретање поновљивим

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

Користите локално генерисане приступне податке за лабораторију и држите продукционе налоге даље од дељених примера. Затим избришите сваки именски простор и потврдите да је приказ домаћина непромењен, што је цео разлог за избор овог модела. Лабораторија коју не можете чисто уклонити је промена домаћина са додатним корацима.

Повезани чланци