Како послати једно IPv4 одредиште изван OpenVPN тунела
Једна рута до хоста преко net_gateway може послати једну IPv4 адресу изван OpenVPN тунела. Проверите следећи скок, обим DNS-а, IPv6 и било какво блокирање клијента.
Већина подешавања пуног тунела шаље сваки пакет кроз VPN, а директива redirect-gateway је оно што то омогућава. Једно одредиште се ипак може изузети. Додавање руте до хоста за ту адресу са заменом net_gateway говори клијенту да јој приступи кроз оригиналну капију машине, док све остало наставља да користи тунел.
Линија изгледа безопасно и често то јесте, али решава само једно питање: камо иду пакети за тачно ту IPv4 адресу. Не мења DNS, IPv6, политику заштитног зида или који је процес отворио везу, и свако од тога може тихо да поништи изузеће.
Шта net_gateway заправо означава
Унос у профилу за то изузеће је један ред: route 198.51.100.77 255.255.255.255 net_gateway. Прва адреса је документациони заменик за одредиште, маска је претвара у руту до једног хоста, а последњи токен означава заменик капије. OpenVPN решава замене капија када инсталира руте. vpn_gateway значи сопствену капију тунела, далеку страну VPN везе. net_gateway значи подразумевану капију коју је хост имао пре него што је VPN било шта променио, а то је обично локални рутер у физичкој мрежи.
Трећи заменик, remote_host, односи се на адресу VPN сервера и постоји да би тунел могао да стигне до сервера физичким путем. Мешање ових трију најчешћи је разлог да изузеће оде на погрешно место или да се уопште не инсталира.
Вредност се чита при повезивању, не уписује се у датотеку. Ако се машина пресели на другу мрежу, капија пре VPN-а се мења и рута следи нову. То је обично оно што желите, али значи и да понашање изузећа зависи од мреже са које је клијент кренуо.
Зашто рута до хоста побеђује подразумевану руту тунела
Рутирање се одлучује по најспецифичнијем одговарајућем префиксу. redirect-gateway def1 обично не замењује подразумевану руту; додаје две половине, руту за доњу половину адресног простора и једну за горњу, тако да оригинална подразумевана рута остаје сачувана за друге намене. Те половине су шире од једне адресе.
Рута за једну адресу са маском 255.255.255.255 је /32, што је највећа специфичност коју IPv4 даје. Када се процењује пакет за ту адресу, /32 се поклапа и побеђује без обзира на то која је рута прва инсталирана. То је механизам иза изузећа и ради исто на Linux-у, macOS-у и Windows-у све док рута заиста постоји.
Windows додаје другу димензију. Када су две руте једнако специфичне, побеђује она са нижом метриком, а VPN адаптер може да носи метрику интерфејса која мења резултат. /32 је и даље специфичнија од половина, па изузеће обично важи, али застарела рута из претходне сесије може да да збуњујући резултат ако је једнако специфична.
Шта изузеће не покрива
DNS је прва празнина. Клијент може да прогура интерне поставке резолвера, а оперативни систем ће их и даље користити за упите. Апликација која реши име пре повезивања може да добије интерну адресу за услугу која би требало да иде директно, или спољну адресу која се исправно решава али се затим спотакне о следећу празнину.
IPv6 је друга. Директива руте обрађује само IPv4. Одредиште са двоструким стеком може да преферира IPv6, који у зависности од политике следи тунел или подразумевану IPv6 руту хоста, тако да изузеће за IPv4 никад не ступа на снагу. Потребна вам је одговарајућа IPv6 рута или свесна одлука да искључите IPv6 за тог клијента.
Обим апликација је трећи. Правило је засновано на одредишту, па сваки процес који се повезује на ту адресу користи директни пут, био то процес који сте имали на уму или не. Обрнуто, сајт може да одговара са више адреса, па изузимање једне /32 не изузима сајт. Ако је прави захтев рутирање по апликацији, табела рута Community клијента је погрешан алат.
Провера изузећа без самообмане
Почните од инсталиране руте, не од прегледача. На Linux-у питајте језгро коју руту и следећи скок ће користити за конкретну адресу; на Windows-у прочитајте табелу рута за ту /32. Потврдите да је капија физичка, а не тунел. Ако унос недостаје, профил није примењен или клијент није имао привилегију да мења руте.
Затим тестирајте два одредишта. Захтев ка изузетој адреси требало би да изађе кроз физички интерфејс, а захтев ка контролној интерној адреси требало би и даље да користи тунел. Тестирање само изузете адресе ништа не доказује о остатку тунела, а тестирање јавног сајта тестира адресу на коју се тај сајт решио, која можда није она из правила.
На крају проверите контроле које могу да надјачају руту. Kill switch на страни клијента или Windows поставка block-outside-dns може да забрани директан саобраћај, што се показује као веза која не успева иако је рута исправна. Не искључујте те контроле да би изузеће изгледало као да ради; ако политика забрањује директан пут, изузеће је проблем дизајна за власника VPN услуге.
Проверите поново после поновног повезивања или промене мреже, јер капија пре VPN-а и доступни пут су својства тренутка, не профила.