Два VPN клиенти на една работна површина: што се судира и што работи
Два клиенти се борат за стандардната рута, резолверот и филтерските драјвери. Запишете кој го поседува излезот, потоа одделете го вториот тунел со VM или netns.
Вашиот втор клиент се поврзува, ресурсите на првиот престануваат да се решаваат, а тикетот вели дека работниот VPN го расипал личниот. Ништо не е расипано во смисла на дефект: двата клиенти го правеа она за што се дизајнирани, а машината има само една табела за рутирање. Судирот е околу четири ресурси што секој клиент ги смета за свои. Поминете ги по ред и поправката обично станува дизајнерска одлука, а не поправка.
Чекор 1: откријте кој клиент го поседува излезот
Прочитајте ја тековната одлука за излез пред да промените нешто. Пребарувањето рута за јавна адреса ви кажува кој интерфејс и кој следен хоп пакетот би ги користел сега, и тоа е одговорот на прашањето кој победил. Споредете го со имињата на интерфејсите што ги создале клиентите, кои обично го носат името на производот или протоколот. Ако пребарувањето покажува на тунелот што не сте го очекувале, веќе сте го нашле судирот.
ip route get 1.1.1.1
ip route show default
route print
Некои клиенти воопшто не ја заменуваат стандардната рута; тие додаваат две половини, една за долната половина од адресниот простор и една за горната, кои заедно покриваат сето. Тоа ја остава оригиналната стандардна рута видлива и прави рачната поправка да изгледа точна, додека сообраќајот сето уште излегува низ тунелот. Читајте ја метриката и должината на префиксот, не само постоењето на стандарден запис.
Запрете ако двата клиенти бараат исти префикс со иста метрика. Јадрото ќе избере еден, а другиот ќе изгледа поврзан додека не носи ништо.
Чекор 2: проверете го резолверот и преклопените префикси
DNS е вториот судир и дава карактеристичен симптом: имињата не успеваат додека адресите работат. Секој клиент го наметнува својот резолвер, а последниот што запишал победува за следните барања. Прашајте го резолвер сервисот што користи за секоја врска наместо да ја читате страницата со поставки на клиентот.
resolvectl status
Get-DnsClientServerAddress
dig +short intranet.corp.example
Потоа споредете ги приватните префикси што ги користат двете мрежи. Ако двете страни доделуваат од истиот опсег, никаква поставка од страната на клиентот нема да го поправи тоа, бидејќи машината не може да каже која 10.0.0.0/8 дестинација припаѓа на кој тунел. Едната страна мора да се пренумерира или преведе, и тоа е разговор со сопствениците на мрежата, а не промена на конфигурацијата. Преклопувањето е единствениот судир каде искрениот одговор е дека дизајнот мора да се промени.
Запрете тука ако префиксите се преклопуваат. Сето подоцна во оваа листа претпоставува дека не се преклопуваат.
Чекор 3: изберете образец на одделување што издржува
Сигурните образци избегнуваат работа на два клиенти против истата табела за рутирање. Еден клиент со политика за поделен тунел што достигнува до двете приватни мрежи е наједноставен, под услов дестинациите да не се преклопуваат и сопственикот на политиката да се согласи. Виртуелна машина или мрежен именски простор е следниот чекор, бидејќи секој добива своја табела и свој резолвер.
sudo ip netns add vpn2
sudo ip netns exec vpn2 ip link show
sudo ip netns exec vpn2 curl -sI https://intranet.corp.example/
Именскиот простор дава исто одделување како виртуелна машина без вториот оперативен систем, но има груби рабови: уредот за тунел мора да се премести во него, а апликацијата мора да се стартува внатре. Одделен физички уред е често најмалку изненадувачката опција за личен VPN покрај управуван работен клиент. Редоследното ставање на еден тунел во друг не е образец за одделување; внатрешната крајна точка мора да остане достапна преку надворешниот тунел, а таквиот распоред додава MTU и проблеми со доцнење одозгора.
Изберете еден образец и запишете зошто. Мешањето именски простор за една апликација со поделен тунел за останатите повторно го создава оригиналниот судир во форма што е потешко да се дебагира.
Чекор 4: потврдете ги двете мрежи од истата сесија
Тестирајте еден ресурс на секоја приватна мрежа од околината каде апликацијата навистина работи, а не од вашата школка ако апликацијата работи во именски простор. Проверете ги излезниот интерфејс, решената адреса и кодот на одговор заедно, бидејќи успехот во едно од трите може да го скрие неуспехот во другите. Повторете по рестарт, бидејќи редоследот по кој се стартуваат клиентите одлучува кој победува. Токму тој редослед луѓето забораваат да го запишат.
curl -sI https://intranet.corp.example/
curl -sI https://files.personal.example/
ip route get 10.20.30.40
Запишете ги верзиите на клиентите, интерфејсите, состојбата на резолверот и префиксите за секоја мрежа. Кога клиентот се ажурира и го менува однесувањето при рутирање, тој запис е разликата помеѓу петминутна поправка и повторна изградба. Следниот човек нема да ја дели вашата меморија за тоа кој тунел се крена прв.
Листата е целосна кога можете да го именувате интерфејсот што ја поседува стандардната рута, резолверот што го користи секое име, образецот што го одделува вториот тунел и резултатот од едно барање по мрежа по рестарт. Сето помалку е конфигурација што денес случајно работи.