Зошто /32 хост-рута ја држи VPN крајната точка достапна
Хост-рутата избира една адреса, а не подмрежа. Може да ја држи крајната точка на тунелот достапна или да закачи еден ресурс, но старее кога адресите се менуваат.
Откако ќе се поврзете, ја отворате табелата за рутирање и наоѓате една адреса рутирана низ тунелот, додека подмрежата околу неа уште оди кон локалната порта. Тој запис е хост-рута: една адреса, совпадната со префикс од сите единици. Тоа е важно бидејќи одлуките за рутирање го користат најдолгиот совпаднат префикс, па /32 може да надвладее /24 или стандардна рута без да смени ниту една од нив. Дали тоа е внимателен исклучок или иден прекин зависи од тоа која адреса ја именува и кој ја одржува.
Една адреса, еден запис во табелата
Хост-рутата IPv4 носи префикс /32, а хост-рутата IPv6 носи /128, што значи дека записот може да се совпадне точно со една целна адреса. Ништо друго во табелата не се поместува: подмрежата што ја покрива и стандардната рута остануваат каде што биле. Тесниот запис победува за таа адреса затоа што неговиот префикс е подолг, а не затоа што бил додаден подоцна.
Тоа својство ја прави хост-рутата добар исклучок и лоша навика. Два записи /32 што ја именуваат влезната врата на некоја услуга не ја покриваат нејзината втора адреса, нејзината адреса IPv6 ниту адресата на која се сели следниот месец. Табела полна со необјаснети записи со една адреса обично значи дека некој постојано крпел околу одлука за подмрежа наместо да ја донесе. Прво прочитајте ја должината на префиксот, потоа прашајте што треба записот да заштити.
Читајте го записот од клиентот кон надвор
Започнете од машината со проблемот, бидејќи истата адреса може да се рутира поинаку на преносен сметач и на портата пред него. Прашајте го јадрото кој пат би го избрало за точната адреса што ја користи апликацијата, наместо да ја читате табелата одозгора. Одговорот вклучува интерфејсот и следниот скок, што заедно ја сочинуваат одлуката.
ip route get 203.0.113.25
ip -6 route get 2001:db8:4::25
ip route show | grep -F 203.0.113.25
Find-NetRoute -RemoteIPAddress 203.0.113.25
Повторете го барањето за семејството адреси што апликацијата навистина го избира, бидејќи клиентот може да претпочита IPv6 и тивко да го заобиколи исклучокот IPv4. Споредете го резултатот пред и по кревањето на тунелот и зачувајте ги двете излези. Тоа споредување покажува дали клиентот го додал записот при поврзувањето или тој веќе бил таму.
Постојан запис и запис за време на извршување пропаѓаат поинаку. Записот за време на извршување исчезнува со сесијата, додека постојаниот преживува рестартирање и продолжува да праќа сообраќај кон порта што веќе не постои.
Исклучокот за крајната точка и стапицата на рекурзија
VPN клиентите обично инсталираат хост-рута кон надворешната адреса на серверот низ оригиналната порта пред да ја пренасочат стандардната рута. Без тој запис шифрираните пакети би биле пратени во тунелот што се обидуваат да го изградат, а врската би се вртела во јамка додека не истече времето.
Стапицата се појавува кога прифатените подмрежи на тунелот случајно ја вклучуваат таа адреса на крајната точка, или кога вториот профил подоцна додава поширока рута. Тогаш записот за крајната точка губи од подолг префикс и сесијата се урива штом почне да пропушта сообраќај. Запишувањето на адресата на крајната точка до прифатените подмрежи е најевтиниот начин да се забележи судирот пред корисниците. Тоа исто така објаснува зошто истиот профил работи од една мрежа, а не успева од друга.
Проверете го патот што апликацијата навистина го користи
Успешен ping до името на хостот е слаб доказ кога апликацијата се поврзува со друга адреса или друго семејство. Проверете ја точната комбинација на адреса, семејство, порта и интерфејс од машината што го извршува клиентот.
ip route get 203.0.113.25
sudo nft list ruleset | grep -A 4 'chain output'
curl -sS --max-time 8 -o /dev/null -w '%{remote_ip}
' https://app.example.net
Ако патот е погрешен, одлучете дали барањето е мрежа или една адреса пред да уредите нешто. Барањето за една адреса оправдува хост-рута со коментар и сопственик; услугата со ротирачки адреси бара рутирање засновано на домен или чесна одлука за подмрежа.
Отстранете ги записите што веќе не одговараат на вистинска дестинација и забележете ги тие што ги задржувате. Необјаснет /32 по три месеци не се разликува од грешка, а следниот човек ќе го избрише без да знае што зависело од него.