Ваша стара подразумевана рута намерно остаје уз OpenVPN
Две руте /1 имају предност над подразумеваном, али је не замењују. Проверите коју руту одредиште заиста користи, а затим оставите стари гејтвеј на месту.
Повежете тунел, извршите 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. Оставите стару подразумевану руту тамо где јесте.