Эки жашыл туташуу белгиси салыштыруудай көрүнөт жана адатта кокустук. Эгер сыноо сурамы эки туннелдин кайсынысын болсо да колдоно алса, жыйынтык эң жакшы учурда алардын бирин, эң начар учурда эч бирин сүрөттөйт. Ар бир байкоого тармактык контекст, көздөлгөн дарек жана сыноо жүргүзүлө электе жазылган күтүү бериңиз. Өзүңүз башкарган Linux машинасында аттуу тармактык ат мейкиндиктери ошол бөлүнүүнү сатып алуунун эң арзан жолу.

Эки жашыл чырак салыштыруу эмес

Ат мейкиндиги маршруттоо таблицаларын, интерфейстерди жана тармактык стектин абалын бөлөт, ошондуктан биринин ичинде башталган сурам экинчисинин туннелин үнсүз карызга ала албайт. Ал бөлбөгөн нерсе — процессор, физикалык өйдө канал же хостто иштеген ат чечүүчү кызмат. Так ушул акыркы жылчыкта бул сыноолордун көбү эч ким байкабастан ишке ашпайт. Ат мейкиндигинен чыгып, хосттун чечүүчүсүнөн сураган издөө сыноодогу туннелге эч кандай тиешеси жок жооп кайтарат.

Бул жол-жобо мурунтан даярдалган жана бекитилген эки сыноо ат мейкиндигин, иштеген тышкы туташууну жана колдоого алынган кардарларды болжолдойт. Ал эч нерсе түзбөйт, эч нерсени каттабайт жана эч кандай конфигурацияны алмаштырбайт. Кардарга толук иш такта сессиясы керек болгондо же анын сыртында иштөөдөн баш тартканда өзүнчө виртуалдык машиналар ак ниет тандоо бойдон калат.

Биринчи жүргүзүүгө чейин күтүүнү бекемдеңиз

Ар бир контекст үчүн ийгиликтин кандай көрүнөрүн чечиңиз: чечүүчү, кызматтын аты, күтүлгөн дарек жана туннел кулаганда талап кылынган жүрүм-турум. Ошол пландалган баалуулуктарды өз тилкесинде сактаңыз, анткени план менен байкоону аралаштырган жазуу убакыт белгиси бар ойдон чыгарылган нерсе. Төмөнкү текшерүү тизмеси жазууга керектүү форма жана ар бир сап биринчи туташууга чейин толтурулушу керек.

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

Чечүүчүнүн зымдары ошол жазууда өз сабын талап кылат, анткени бул жалган айтууга эң ыктымал талаа. Ат мейкиндигине байланган файлдар, мисалы /etc/netns/vpn-a/resolv.conf буйрук ат мейкиндигинин ичинде аткарылганда адаттагы жолдорунда пайда болот, муну iproute2нин ат мейкиндиктери боюнча маалымдамасы сүрөттөйт, бирок ат кызматын которуу конфигурациясы жана анын ишке киргизген каалаган жергиликтүү чечүүчүсү издөөнү кайра хостко тартышы мүмкүн.

Бир убакта бир туннел, экинчиси өчүк

B төмөндө турганда Aны анын учурдагы ээси аркылуу туташтырыңыз, анан административдик контекстен саясатты, маршруттарды жана тандалган жолду текшериңиз. Төмөнкү буйруктардын үчөө абалды окуйт; акыркысы гана ат кызматы менен байланышат жана алардын эч бири колдонмо сурамын жөнөтпөйт.

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

Маршрут издөө дарек жөнүндө болжолдуу суроого жооп берет, ошондуктан кызматтын трафикти кабыл аларын көрсөтө албайт. Бул эки далил түрүн өзүнчө тилкелерде сактаңыз, анткени четке кагылган туташуунун жанындагы соо маршрут чыныгы жана кеңири таралган жыйынтык. Анан чыныгы колдонмо менен бир зыянсыз уруксат берилген сурам жөнөтүңүз, ал Aнын контекстинде анын кадимки артыкчылыгы жок колдонуучусу катары ишке кирет, сертификатты текшерүү жана колдонмо аутентификациясы бузулбай, жана жыйынтыкты кызмат көргөн булак дареги менен бирге жазыңыз. Aны анын ээси аркылуу ажыратыңыз жана B үчүн бүт базалык сызыкты кайталаңыз, жасаган ар кандай конфигурация өзгөртүүсүн белгилеңиз, болбосо эки базалык сызык салыштырууга жарактуу болбой калат.

Экөө тең өйдө, анан бирден төмөн

Туруктуу абал — жеңил бөлүгү. Эки туннел туташканда ар бир контексттин издөөсүн жана колдонмо сурамын кайталаңыз, анан бир туннелди үзүп, экинчисин текшериңиз. Туташуу тартибинин өзү суроо болгондо тескери тартипте кайра туташыңыз.

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

Тартуу колдонмо жыйынтыгы чече албаган талаштарды чечет: сурам күткөн интерфейсиңизден чыкканын же таптакыр башка нерседен чыкканын көрсөтөт. Ар бир өтүү үчүн ээсинин аракетин, убакыт белгисин, маршрут жыйынтыгын, ат жыйынтыгын жана колдонмо жыйынтыгын жазыңыз. Анан жабыркаган ат мейкиндигинин ичинде коопсуз жабылуу талабын текшериңиз, анткени обочолонуу өчүргүч баскыч эмес. Ат мейкиндиги эки туннелди өзүнчө кармайт; профили трафик токтошу керек десе, ал экөөнүн эч бирине трафик ташууга тоскоол болбойт.

Бул жазуу эмнени ырастай алат жана эмнени албайт

Ийгилик ушул жайгашуу үчүн, ушул хостто, ошол убакта ошол байкоолорду далилдейт. Ал бир иш тактанын маршруттоо таблицасын бөлүшкөн эки кардар жөнүндө эч нерсе айтпайт жана эки туннел жүк көтөрүп тургандагы өткөрүү жөндөмү жөнүндө да эч нерсе айтпайт. Булар өзүнчө сыноолору бар өзүнчө суроолор, ал эми салыштыруу ар бир сапка тиркелген контекст канчалык жакшы болсо, ошончолук жакшы.

Ийгиликсиздиктерди жазууда ийгиликтердин жанында сактаңыз, ошол учурда кайсы туннел күйүп турганын белгилеңиз. Өлчөө учурундагы абалды жашырган таза барак аны көрсөткөн көпкөк барактан жаман. Жазууну кийин кайра колдонууга жарактуу кылган нерсе — контекст, упай эмес.

Бир машинадагы эки туннелди ак ниет менен салыштырууга болот, бирок чындап көзөмөлдөгөн контексттериңиздин санындай гана. Андан ашыгы жанында жашыл белгиси бар кумар гана.

Тектеш макалалар