Тунел се повезује, затим га обнова закупа на приступној вези убија, а дневник окривљује истек времена уместо путању. Ништа у конфигурацији VPN-а није промењено, и то је траг: променило се нешто изван ње. Догађај DHCP је преписао адресу или мрежни пролаз, а путања до хоста која је држала крајњу тачку тунела доступном сада показује на следећи скок који више не постоји. Ово је проблем власништва пре него проблем рутирања.

Упоредите симптом са полуподразумеваним путањама

Са redirect-gateway def1 OpenVPN инсталира 0.0.0.0/1 и 128.0.0.0/1 уместо да замени подразумевану путању. Заједно те две покривају цео адресни простор и побеђују 0.0.0.0/0 већ само дужином префикса. Зато свако одредиште без прецизнијег подударања улази у тунел.

Крајњој тачки је потребан изузетак. OpenVPN додаје путању до хоста ка адреси сервера кроз првобитни приступни пролаз пре него што полуподразумеване уђу, да би инкапсулирани пакети могли да изађу. Када тај изузетак нестане, или задржи следећи скок који више не постоји, сопствени спољашњи пакети тунела поклапају се са полуподразумеваном путањом и бивају послати назад у тунел. Резултат је веза која умире при следећем keepalive-у или руковању, без ичега у дневнику што би личило на грешку рутирања.

Потврдите облик табеле пре него што дирнете било шта друго. ip route show би требало да наведе обе половине плус путању до хоста за адресу сервера; када путања до хоста недостаје, остатак истраге има очигледну почетну тачку.

Зашто полуподразумеване побеђују без промене метрике

Нижа метрика не побеђује дужи префикс. Путање /1 побеђују јер језгро прво подудара најспецифичнију путању, тако да подизање метрике на подразумеваној путањи ништа не мења у томе куда иде саобраћај намењен тунелу. Јурење метрика је најчешће погрешно скретање у овој дијагнози.

Проверите избор помоћу ip route get 203.0.113.10, убацивши праву адресу сервера. Одговор именује интерфејс и следећи скок које би језгро заиста користило, што је информативније од читања табеле и размишљања о њој.

Извршите ту команду пре него што тунел почне, док ради и после догађаја закупа. Три одговора из једне команде, и тачка разилажења постаје видљива.

Направите три снимка, не један

Прикупите приступну адресу, приступни пролаз, одредиште крајње тачке, изабрану путању и сва правила полисе у три тренутка: после конфигурисања приступне везе, после повезивања VPN-а и после догађаја закупа или оператера. Сваки снимак је шака команди, и имају смисла само заједно. Један снимак после квара бележи стање, а не прелаз. Запишите команде у малу скрипту да би сваки снимак био узет на исти начин.

Држите снимке у једној датотеци са временским ознакама, јер је занимљиво питање касније редослед. Да ли је догађај DHCP дошао пре или пошто је OpenVPN освежио своју путању? Одговор одлучује ко то мора да поправи. Временска ознака са погрешног сата је гора од никакве, зато је узмите са хоста који поседује таблицу рутирања.

Када је крајња тачка конфигурисана као име уместо адресе, разрешите је и у сваком снимку. Промена DNS-а на приступној вези може померити крајњу тачку а да се ниједна путања не дирне.

Одлучите која компонента освежава изузетак

На dhcpcd систему куке се покрећу из директоријума кука и из излазне куке, а режим менаџера се по обиму разликује од режима по интерфејсу. Шта год кука ради, мора бити идемпотентна, јер обнове могу да стигну у налетима.

Поуздани власник је интеграција која већ познаје обе стране: мрежни менаџер који управља VPN везом, или јединица поређана после подизања приступне везе. Статична путања коју дода кука ради до следеће промене пролаза, а затим пада на потпуно исти начин. Ако ипак користите куку, натерајте је да чита тренутни пролаз у време извршавања уместо да тврдо кодира онај који сте видели данас.

Забележите власника унутар конфигурације. Следећа особа која буде отклањала проблем поновног повезивања мора да зна да је за изузетну путању одговорна кука, не VPN.

Тестирајте животни циклус, не само поновно повезивање

Присилите обнову помоћу dhcpcd -n eth0 или ослобађањем и поновним узимањем закупа, па поново проверите ip route get за крајњу тачку. Урадите то двапут, јер други пролаз хвата куке које додају дупле путање. Затим се поново покрените, јер је трајност друга особина од исправности.

Тунел који преживи обнову и поновно покретање има власника и изузетак који ради. Онај који преживи само ручно поновно покретање нема ни једно ни друго, и пашће при следећем догађају који не можете да закажете.

Повезани чланци