Повеќето поставки со целосен тунел испраќаат секој пакет низ 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 од страната на клиентот или поставката block-outside-dns на Windows може да го забрани директниот сообраќај, што се појавува како врска што не успева иако рутата е точна. Не ги исклучувајте тие контроли за изземањето да изгледа како да работи; ако политиката го забранува директниот пат, изземањето е проблем во дизајнот за сопственикот на VPN услугата.

Проверете повторно по повторно поврзување или промена на мрежата, бидејќи портата пред VPN и достапниот пат се својства на моментот, не на профилот.

Поврзани статии