route-gateway није redirect-gateway: шта се заправо мења
Ова опција само даје следећи скок рутама које OpenVPN инсталира. Њено уклањање не искључује гурнут пун тунел, а исправка припада преусмеравању.
Ваш тунел се подиже, приватна подмрежа одговара, а обично прегледање и даље нестаје у VPN-у иако је неко избрисао линију гејтвеја из профила. Та комбинација је отисак погрешне директиве која је уређивана. Уклоњено је клијенту давало следећи скок за руте које инсталира; оно што је наставило да хвата саобраћај дошло је са другог места и сервер га је гурнуо. Покривеност и следећи скок су одвојени послови, а само један од њих одлучује да ли јавна одредишта користе тунел.
Линија коју сте уклонили била је следећи скок, а не прекидач политике
Свака рута коју клијент инсталира потребује адресу гејтвеја на коју ће показивати, а директива гејтвеја је извор те адресе када рута сама не наведе ниједну. Избришите је и те руте немају где да се прикаче, па се или не инсталирају или слећу на пут који никуда не води. Приватна подмрежа је управо оно што је таква рута носила.
У међувремену понашање које је преживело има другог аутора: опцију преусмеравања у гурнутом блоку, која премешта обичан излазни саобраћај у тунел према својим заставицама. Уклањање гејтвеја је ни не искључује ни не слаби. Резултат је најгоре од оба стања: јавни саобраћај се и даље хвата, а приватно одредиште које је оправдавало тунел сада је недоступно. Зато и друга измена, направљена у истом духу, такође ништа не мења.
Четири полуге, четири различита посла
Четири директиве се у овој расправи цитирају наизменично, а само једна од њих управља покривеношћу, односно тиме која се одредишта уопште усмеравају кроз тунел. Друга поставља следећи скок који руте користе, трећа инсталира један префикс, а четврта одбацује све што је сервер гурнуо, укључујући приватне руте које су потребне распоређивању. Табела их поређа по ономе што администратор покушава да промени, а не по имену, јер управо имена стварају забуну. Третирајте их као четири одвојене одлуке и изаберите ону коју заиста желите да поништите.
У пракси све четири често стижу у једном гурнутом блоку, ред по ред, због чега изгледају као делови једног подешавања. Нису, и OpenVPN референца их баш зато документује као различите механизме. Схватити коју одлуку поништавате јесте задатак; измена је један ред.
| What you are trying to change | Directive that decides it | What it leaves alone |
|---|---|---|
| Which destinations use the tunnel | redirect-gateway | Per-prefix routes and resolver choice |
| The next hop a pushed route points at | route-gateway | Coverage of public destinations |
| One reachable prefix | route | Every other destination, default path included |
| All pushed routing and DNS at once | route-nopull | Nothing, which is the problem |
Филтрирајте гурнуту линију, задржите следећи скок
Ако покривеност којој се противите стиже као гурнута опција, уска реакција је игнорисати ту опцију по имену и оставити остатак гурнутог блока нетакнутим. Написано као филтер, изгледа као ред испод, и припада профилу погођеног клијента, а не конфигурацији сервера.
pull-filter ignore "redirect-gateway"
Ускост је поента. Пошто филтер пореди текстуални префикс, краћи узорак одговара и директиви следећег скока, што згули управо информацију од које зависе приватне руте и понови изворну грешку у новом руху. Филтер такође делује само на гурнуте опције, па никада не дира еквивалентан ред написан локално или наметнут од мрежног менаџера. Поново се повежите након тога, јер жива сесија не преиспитује оно што је сервер гурнуо.
Читајте претрагу, не табелу
Након поновног учитавања профила питајте кернел куда би две дестинације заиста отишле: једна унутар приватног префикса и једна на јавном интернету. Пун испис главне табеле теже је читати и лакше погрешно прочитати, јер рута може да постоји и ипак изгуби од специфичнијег поклапања. Код рутирања по политици, правило, табела и изворна адреса такође улазе у проверу.
ip route get 10.40.7.25
ip route get 203.0.113.77
ip rule show
Варијанта def1 заслужује познавање, јер оставља стари подразумевани унос видљивим док пар полуподразумеваних побеђује претрагу. Зато линија 0.0.0.0/0 у излазу сама по себи ништа не доказује. Претрага одговара на питање на које се чини да списак одговара.
DNS, IPv6 и приватна рута и даље морају да раде
Одбијање једног IPv4 преусмеравања не говори ништа о резолверу, па гурнута DNS опција може да настави да шаље упите у тунел док руте изгледају исправно. IPv6 подразумевани може да учини исто за породицу адреса коју IPv4 провера никада није дотакла. Оба траже изричиту одлуку, а не претпоставку. Затим потврдите да приватна услуга још одговара, јер подељени тунел који је изгубио своју приватну руту није подељени тунел, него покварен.
Један шири алат заслужује упозорење: route-nopull одбацује сваку гурнуту руту и сваку гурнуту DNS опцију, што сигурно зауставља пун тунел и једнако сигурно ломи приватне руте од којих зависи распоређивање, па је много већи чекић од филтера по имену усмереног на једну опцију. Проверите приватно одредиште, јавно одредиште и резолвер након сваке измене, и третирајте завршено руковање као доказ ничега осим руковања.