Табела за рутирање наспроти вистинско пребарување: каде оди VPN сообраќајот
Започнете од една дестинација и нејзиниот извор, па проверете кое правило и која табела навистина го одредуваат патот. Целосен дамп на табелата без тој контекст доведува во заблуда.
Дампот на табелата за рутирање е најмалку корисната дијагностика при решавање проблеми со VPN и најчесто вметнуваната. Четириесет реда со префикси ви кажуваат што машината можела да направи, а не што направила за неуспешното барање. Механизмот што навистина го сакате е пребарувањето: за овој извор и оваа дестинација, кое правило се совпадна, која табела беше консултирана и кој интерфејс и следен скок излегоа. Започнете од една дестинација и еден извор, потоа читајте ја табелата со тоа прашање во рака, и истиот излез станува доказ наместо шум.
Табелата е множество кандидати, не одлука
Секој запис опишува префикс и што да се прави со сообраќајот што му одговара: да се испрати на интерфејс, да се предаде на следен скок или да се отфрли. Ништо во таа листа не е подредено по намера, а записот што на човек му изгледа најконкретен не е секогаш тој што го избира јадрото, бидејќи изборот го следи најдолгото совпаѓање на префикс, а меѓу еднакви префикси метриката.
Затоа првиот чекор е да се праша јадрото наместо да се чита листата. Командата за пребарување одговара за дестинација, а со аргумент за извор одговара за точниот пар што би го користела проследена или врзана врска:
ip route get 198.51.100.10
ip route get 198.51.100.10 from 10.80.0.25
ip -6 route get 2001:db8:10::40
Секоја адреса погоре е документационен пример. Поентата е формата на одговорот: интерфејс, избрана изворна адреса, порта и табелата од која дошол записот. Ако тој излез не се совпаѓа со интерфејсот што го очекувавте, сте го лоцирале проблемот со една команда, и никакво читање на целосната табела немаше да ви каже кој кандидат победи.
Пребарувањето поминува низ правила, потоа низ табели
На Linux одлуката е во две фази. Правилата на политиката се оценуваат по редослед на приоритет, а првото правило што совпаѓа именува табела за консултација; таа табела потоа го прави совпаѓањето на најдолгиот префикс. Правилото може да совпадне по извор, дестинација, ознака на огнениот ѕид, интерфејс или комбинација, поради што дампот на главната табела може да биде сосема точен и сосема неважен за пакетот што го истражувате.
ip rule show
ip route show table all | head -40
ip route show table 100
Ако правило испраќа сообраќај од вашиот VPN базен во табела 100, тогаш табела 100 е таа што е важна, и главната табела е мамка. Ова е и механизмот зад рутирањето засновано на извор на рутер: истата дестинација може да има два различни одговора зависно од тоа од каде дошол пакетот, и само пребарувањето со аргумент за извор открива кој важи.
IPv6 има свои правила и табели. Дизајнот што работи со двете фамилии бара двете пребарувања, а работен одговор за IPv4 не кажува ништо за патеката v6 што клиент со двоен стек може да ја претпочита.
Што инсталира VPN клиентот
Клиентите обично не ја заменуваат стандардната рута, бидејќи тоа би го скршило сопствениот надворешен пат на тунелот. Тие инсталираат нешто поконкретно што победува по должина на префиксот: пар полустандардни рути што покриваат 0.0.0.0/1 и 128.0.0.0/1 е класичниот трик, бидејќи двете се подолги префикси од 0.0.0.0/0 и заедно го покриваат целиот простор. Други инсталираат конкретни приватни префикси плус правило за политика, а некои додаваат ознака за да се фати само избраниот сообраќај.
Затоа "VPN не ми ја смени стандардната рута" не е доказ за неуспех. Проверете што навистина додаде и дали предметната дестинација паѓа во тие префикси:
ip route show | grep -E 'tun|wg|ppp|ipsec'
ip route get 10.20.30.40 from 10.80.0.25
Две полурути лесно се пропуштаат во дамп бидејќи не изгледаат како стандардна рута. Конфигурација на поделен тунел што заборавила да вклучи префикс го произведува точно симптомот што го бркате: апликацијата што требаше да го користи тунелот наместо тоа решава и се поврзува локално. Споредете ги инсталираните префикси со дестинациите што на корисникот навистина му се потребни, а не со адресите што случајно ги тестиравте. Список на поделен тунел што го покрива датотечниот сервер но не и неговиот решавач произведува врска што се решава на јавна адреса и потоа не поминува автентикација, што изгледа како проблем со лозинка, а е проблем со рута.
Надворешната рута исто така мора да преживее
Тунелот самиот е сообраќај. Пакетите што го носат инкапсулираниот корисен товар одат до адресата на партнерот преку физичкиот интерфејс, и тој пат не смее да се рутира назад во тунелот. Кога тоа се случува, добивате карактеристичен дефект каде тунелот се воспоставува и потоа престанува да пропушта сообраќај, бидејќи транспортот за тунелот сега е внатре во тунелот.
Проверете ја адресата на партнерот како што ја проверивте внатрешната дестинација, и потврдете дека се решава на физичкиот интерфејс, а не на тунелот:
ip route get 203.0.113.10
traceroute -n -m 5 203.0.113.10
Рекурзивна рута, правило за политика што го фаќа партнерот, или стандардна рута заменета со клиент за целосен тунел се трите вообичаени причини. Сите три се видливи во надворешното пребарување, и ниедна не е видлива во дамп на главната табела земен после фактот.
Што не може да ви каже излезот од рутирањето
Точното пребарување значи дека јадрото би го испратило пакетот на разумно место. Тоа не значи дека огнениот ѕид го дозволува, IPsec политиката го покрива, NAT правилото го преведува, или далечната страна има повратна рута. Секое од нив е подоцнежна фаза, и белешките на strongSwan за препраќање го опишуваат синџирот што пакетот мора да го помине на двата краја.
Исто така не го зема предвид врзувањето на ниво на апликација. Процесот може да се врзе за интерфејс, да постави ознака или да го користи својот решавач и да се поврзе со име што се решава поинаку од тоа што го тестиравте. Кога пребарувањето е точно, а врската се уште не успева, следното прашање е кој процес ја прави и дали тој процес ја гледа истата табела како вас.
Затоа држете ја дијагностиката подредена: именувајте ја дестинацијата и изворот, извршете го пребарувањето, читајте само таа табела и правило што ги именуваше пребарувањето, потоа тестирајте ја следната фаза. Таа низа ја држи истрагата за рутирање во минути и остава запис што друг може да го следи, што вметната табела никогаш не го прави.