Изтласкани маршрути на OpenVPN не се инсталират: време, права или политика
Изтласкан маршрут може да изчезне заради състезание във времето, липсващи права или политика на клиента. Първо сравнете списъка за изтласкване на сървъра с реалната таблица.
Сървърът казва, че е изтласкал маршрута, клиентът казва, че е свързан, а дестинацията все още е недостъпна. Три причини създават точно тази картина. Добавянето на маршрута е изпълнено преди устройството да съществува, на клиента са липсвали права да промени таблицата или политика е наредила на клиента да пренебрегне изтласканите опции.
Отвън те изглеждат еднакво и изискват различни поправки. Прочетете журнала на клиента в точката, където се взема решението за маршрута.
Докажете, че маршрутът липсва, а не че е просто счупен
Започнете с доказване, че маршрутът липсва, вместо че е счупен. В Linux ip route show dev tun0 изброява какво клиентът е инсталирал на тунелното устройство. В Windows route print или Get-NetRoute показва същото в табличен вид.
Маршрут, който съществува, но не препредава трафик, е различен проблем. Това премества разследването към правилата за препращане и защитната стена, а не към инсталирането на маршрута.
Време: добавянето е изпълнено преди устройството да съществува
Клиентът анализира PUSH_REPLY от сървъра, след като контролният канал е вдигнат и след като е конфигурирал интерфейса. Едва тогава докосва таблицата за маршрутизация, използвайки механизма, който платформата предоставя. Linux минава през netlink; Windows използва API, който изисква повишен токен. Скрипт или клиент, който добавя маршрути веднага щом прочете конфигурацията, може да се изпълни преди устройството TUN/TAP да съществува и ядрото отхвърля добавянето.
Същото състезание обяснява защо ръчно въведен маршрут работи, а автоматичният не: докато го въведете, интерфейсът вече е вдигнат.
route-delay съществува за този случай, а route-up посочва скрипт, който се изпълнява след конфигуриране на интерфейса и маршрутите. Поставяйте маршрутите, които зависят от адреса на тунела, в тази кука, а не в ранен етап.
Права: кой може да променя таблицата
Промяната на таблицата за маршрутизация в Windows изисква повишен токен. Графичен интерфейс, стартиран от стандартен потребител, може да зададе адреса на адаптера чрез услугата и въпреки това да не може да добави маршрут. Тогава журналът показва грешка от типа „достъпът е отказан“, а не липсващо изтласкване.
Стартирането на графичния интерфейс като администратор или използването на клиента на базата на услуга променя този резултат. Планирана задача, която стартира клиента без необходимия токен, не го променя.
Проверете под кой акаунт всъщност работи клиентът, преди да промените каквото и да е. Версията и режимът на услугата определят кои причини изобщо са възможни, затова запишете и двете до изхода от маршрута.
Политика: изтласканите маршрути могат да бъдат изхвърлени умишлено
route-nopull кара клиента да пренебрегва маршрутите, които сървърът изтласква, включително изтласкан маршрут по подразбиране, докато адресът на тунела все още се приема. Изтласканите опции за DNS и DHCP се отхвърлят от същата директива. Такъв клиент не е дефектен; той очаква явни редове за маршрути в собствената си конфигурация.
route-noexec е различен контрол: той напълно спира клиента да изпълнява промени на маршрути. Топология, която клиентът не може да съпостави, може да даде подобен резултат, като маршрутът се записва като отхвърлен, а не като добавен. Прочетете реда в журнала, който съобщава решението, вместо да гадаете коя от трите причини се прилага. След това проверете ефективния профил, защото инструмент за импортиране или управление може да добави опции, които потребителят никога не е редактирал.
Профил, който изглежда чист в текстов редактор, все още може да носи добавена директива по време на изпълнение.
Сравнете списъка за изтласкване с таблицата
След свързване поставете списъка за изтласкване на сървъра до таблицата на клиента. В Linux това е ip route show dev tun0; в Windows — route print или Get-NetRoute. Ако маршрутът липсва, първо поправете инсталирането. Ако е налице, а трафикът се проваля, преминете към политиката за препращане и защитна стена.
Запишете версията на клиента, акаунта, под който работи, и дали е базиран на услуга. Тези три факта казват на следващия човек кои причини са изключени.