Вгнезден VPN: кој тунел ја носи надворешната врска?
Внатрешниот тунел му треба надворешна патека до својата крајна точка. Два клиенти стартувани во погрешен редослед создаваат конфликт на рути, затоа прво поправи го вгнездувањето.
Два VPN клиенти што работат истовремено не создаваат вгнезден тунел; создаваат два тунели и расправија за рутирањето. Вгнезден тунел постои кога врската на внатрешниот клиент со сопствениот сервер самата е носена од надворешниот тунел, а тоа е распоред што се гради намерно. Ако успее, внатрешниот сервер ја гледа адресата на надворешниот сервер; ако не успее, еден клиент тивко се поврзува повторно околу другиот. За тоа дали вгнездувањето е вистинско или случајно одлучуваат три услови.
За вгнездувањето одлучуваат три услови
Првиот е која крајна точка и треба која патека. Именувај ја адресата на внатрешниот сервер, именувај ја адресата на надворешниот сервер и изречно наведи дека внатрешниот сервер е достапен само преку надворешниот тунел. Сѐ друго следи од таа реченица, вклучително кои рути припаѓаат на која табела.
Вториот е дали ја гледаш патеката на секој слој. Ако не можеш да го прашаш јадрото која рута би ја користела одредена дестинација, заклучуваш синџир од завршна излезна IP адреса, а тоа е токму доказот што не може да го разликува вгнездувањето од случајност.
Третиот е што се случува кога паѓа надворешниот тунел. Внатрешниот тунел може да застане со него, повторно да се поврзе преку обичната мрежа или да остане блокиран додека не се врати надворешната патека, и сите три се одбраниви политики. Не се иста политика, а стандардното однесување на повеќето клиенти е второто. Клиент што ја поврзува повторно својата крајна точка преку физичката мрежа додека покажува здрава врска е најчестиот начин на кој наменетиот синџир тивко станува два неповрзани тунели.
Услов еден: која крајна точка и треба која патека
ip route get 203.0.113.10 директно одговара на тоа прашање: ја печати рутата, изворната адреса и интерфејсот што јадрото сега би го користело за таа дестинација.
Изврши го за внатрешниот сервер пред внатрешниот клиент да стартува и повторно потоа, па спореди. Ако одговорот се промени од физичкиот интерфејс на интерфејсот на надворешниот тунел, вгнездувањето е вистинско во тој момент. Ако не се промени, внатрешниот клиент се поврзува директно, што и да кажува панелот. Повтори за адресата на надворешниот сервер, која сѐ уште мора да се реши преку физичкиот интерфејс, зашто рута што рекурзивно ги фаќа двете крајни точки е дефектот што машината целосно ја вади од мрежата.
Услов два: прегледај ја патеката на секој слој
Изборот на рута на современ клиент е повеќе од главната табела. Правилата на политиката можат да праќаат означени пакети во друга табела, клиентот може својот сокет да го врзе за интерфејс, а контејнер или именски простор има свои табели. ip rule и ip route show table all се начинот да откриеш кој од тие механизми е во игра.
Клиент што на сопствениот сокет поставува SO_MARK или е конфигуриран да се врзе за одреден уред ја заобиколува стандардната рута за која мислеше дека си ја средил. Тоа е можност, а не грешка, и значи дека единствената сигурна проверка е онаа што работи во истиот именски простор како клиентот. Ако клиентите работат во контејнери, изврши ги проверките во тие контејнери наместо на домаќинот.
Услов три: што се случува кога паѓа надворешниот тунел
Однесувањето при дефект бара одлука, а не стандардна вредност. Запиши што треба да се случи со внатрешниот тунел кога ќе исчезне надворешниот, па натерај ги клиентите да го прават тоа.
Опциите се конкретни. Запирањето на внатрешниот клиент кога исчезнува надворешната патека дава чист синџир и очигледен прекин. Ако му дозволиш директно повторно поврзување, добиваш достапност и тивко го отстрануваш својството за кое беше изграден синџирот. Блокирањето до враќање на надворешната патека е најстрого и најтешко за работа, зашто секое треперење на надворешниот тунел станува видлив инцидент.
Тестирај ги сите три со безопасен сообраќај и намерен дефект на надворешниот тунел, зашто читањето на конфигурацијата нема да ти каже кој го имаш. Убиј го надворешниот тунел, гледај што прави внатрешниот клиент и провери ја рутата повторно додека е долу. Потоа врати го надворешниот тунел и потврди дека синџирот повторно се обликува наместо внатрешниот клиент да остане на директната патека што ја избрал во меѓувреме.
Што не ти дава синџирот
Дополнителните слоеви додаваат крајни точки, клучеви и начини на дефект; не додаваат никаква гаранција за анонимност и не го прават надворешниот оператор неспособен да види дека постои тунел. Секое тврдење за тоа од што штити вгнездувањето мора да го именува набљудувачот од кого штити.
Резултатот е краток документ, а не врска што работи: која крајна точка користи која патека, што се случува при надворешен дефект и трите наредби што ја покажуваат моменталната состојба. Документацијата на strongSwan за препраќање е корисен извор за тоа како сообраќајот на тунелот се препраќа меѓу интерфејси на Linux домаќин. Изврши ги проверките повторно по секое надградување на клиентот, зашто стандардните вредности што го создадоа твојот синџир не се договор. Вгнезден тунел што не можеш да го прегледаш е гласина со светло за состојба.