Повежете тунел, извршите ip route и оригинални подразумевани гејтвеј и даље стоји ту. Следећа помисао је да клијент није преузео руту, па ручно обришете подразумевану и потпуно изгубите везу. Тај запис треба да остане. Уз redirect-gateway def1, OpenVPN поставља две специфичније руте које имају предност над обичном подразумеваном уместо да је замене. Стари гејтвеј остаје и престаје да носи саобраћај који сте тестирали.

Шта def1 заправо ради

Заставица додаје 0.0.0.0/1 и 128.0.0.0/1, обе усмерене на тунел. 0.0.0.0/1 преузима сваку адресу чији је први октет од 0 до 127, а 128.0.0.0/1 преузима од 128 до 255, тако да свако IPv4 одредиште има поклапање специфичније од старе подразумеване руте. Дужина префикса, а не метрика, одлучује која рута побеђује.

Остављање оригиналне подразумеване руте на месту је намерно. Клијент не мора да памти шта је заменио и не преписује руту која носи његову сопствену везу са VPN сервером. При прекиду уклања две полуруте и табела се враћа у претходно стање.

Зашто /1, а не /0

Рутирање бира најдужи поклапајући префикс, а не најнижу метрику, па /1 побеђује /0 без обзира на то шта каже метрика подразумеване руте. Обе половине постоје зато што једна /1 покрива само пола простора; ако је присутна само 0.0.0.0/1, све од 128.0.0.0 навише и даље прати стару подразумевану руту, што ствара збуњујући симптом где неки сајтови раде, а други не.

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

Прочитајте стварну табелу рутирања

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

default via 192.168.50.1 dev wlan0
0.0.0.0/1 via 10.8.0.1 dev tun0
128.0.0.0/1 via 10.8.0.1 dev tun0

Важан је однос: две конкретне половине изнад једне опште подразумеване руте. Ред старог гејтвеја остаје јер га ништа није заменило.

Проверите коју руту пакет заиста користи

Специфичније руте ипак могу да победе: рута за приватни опсег, локална подмрежа или сама адреса VPN сервера дужа је од /1. Тунелу је потребан спољни пут до његовог сервера, а слање те везе назад у тунел одмах би га сломило. На Linux-у питајте језгро уместо да табелу читате оком: ip route get са одредиштем које вам је важно исписује изабрану руту, интерфејс и извор. Ако је подешено политичко рутирање, прегледајте и правила, јер правило може да изабере другу табелу пре него што се консултује главна.

Ако се само део IPv4 понаша лоше, потврдите да су обе половине инсталиране, а затим потражите изузетак који одговара одредишту које не ради. Брисање старе подразумеване руте није поправка, и оно уклања руту која је клијенту потребна да чисто сруши тунел.

Шта def1 не покрива

Два IPv4 записа не говоре ништа о IPv6: домаћин са IPv6 везом наставља да користи своју подразумевану руту док нешто не преусмери ту фамилију одвојено, због чега изгледа да неки саобраћај заобилази тунел на dual-stack мрежи. Други клијенти и менаџери мреже другачије спроводе рутирање целог тунела, и њихове табеле се неће поклопити. Понашање def1 описано овде припада документованој застави OpenVPN-а, а не сваком VPN-у на машини.

Kill switch одговара на друго питање: шта машина ради када тунел падне. Приоритет рутирања одлучује куда саобраћај иде док је тунел горе; он не одлучује шта ће заштитни зид урадити после. Редослед рада: прочитајте табелу, потврдите да постоје обе половине, покрените ip route get за одредиште које не ради, проверите правила политике, затим одвојено погледајте IPv6. Оставите стару подразумевану руту тамо где јесте.

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