OpenConnect vpnc-script: кой файл се изпълнява?
Помощникът, който инсталира маршрути и DNS, е отделен от клиента на тунела. Намерете пътя, който използва работещият клиент, преди да го замените с копие от форум.
OpenConnect може да завърши ръкостискането на тунела и въпреки това да ви остави без маршрут до частната подмрежа, защото клиентът и помощникът, който променя състоянието на локалната мрежа, са две различни програми. Удостоверяването доказва, че шлюзът е приел сесията; то не доказва нищо за това кой интерфейс, маршрути или настройки на резолвера са били инсталирани след това. Повечето объркващи сигнали идват от замяна на помощника с копие от стар отговор, което променя поведението при всяка връзка на машината. Открийте помощника, който работещият клиент наистина извиква, преди да редактирате каквато и да е част от него.
Две програми, две отговорности
Клиентът притежава транспорта, удостоверяването и устройството на тунела. Отделен помощник притежава това, което се случва в локалната система, след като тунелът съществува: адресирането на интерфейса, маршрутите до подмрежите, обявени от шлюза, и конфигурацията на резолвера. документацията на помощника OpenConnect описва това разделение и средата, която помощникът получава. Разликата е важна при повреда, защото отхвърлена парола и липсващ маршрут не са едно и също събитие, дори когато работният плот показва един диалог за двете.
Задържането на това разделение в ума обяснява също защо връзка може да съобщи успех, докато частните имена все още не се разрешават. Тунелът е вдигнат и в двата случая и се различава само етапът на локална интеграция.
Открийте помощника, който използва работещият клиент
Пътят се задава при изграждането на пакета и може да бъде презаписан при всяко извикване, така че файлът, който помните от друга дистрибуция, може да няма нищо общо с тази връзка. Питайте работещия процес, а не документацията, която случайно имате отворена.
openconnect --version
ps -o args= -C openconnect
dpkg -L openconnect | grep -i script
ls -l /etc/vpnc/ 2>/dev/null
Ако редът на процеса носи аргумент --script , този файл има предимство пред компилираната стойност по подразбиране. По-стари пътища като /etc/vpnc/vpnc-script могат да съществуват и да останат неизползвани, затова изтриването или редактирането им не променя нищо при скорошна компилация. Проверете и датата на промяна, защото помощник, който никой не е докосвал от години, е силен знак, че работата се върши от пакетираната стойност по подразбиране.
Интеграцията с NetworkManager е трети собственик, със свой помощник и свои настройки на профила. Натрупването на втори скрипт за маршрути или резолвер върху тази интеграция дублира маршрути и оставя резолвер, за който две програми твърдят, че го управляват. Изберете един собственик на връзка и изключете другия преди тестване.
Четете първата неуспешна операция, а не последното предупреждение
Конфигурацията на интерфейса, инсталирането на маршрути, изборът на резолвер и изчистването на остаряло състояние са отделни стъпки и предупреждението, отпечатано последно, често е оплакване за изчистване, а не повредата, която е счупила връзката. Четете нагоре до първата конкретна операция, която се е провалила. Грешка на помощника, която назовава файл или адрес, струва повече от десет реда шум от разглобяване.
Сравнете предвидения локален резултат с наблюдавания: устройството на тунела съществува, маршрут до известен частен адрес минава през него и резолверът отговаря за частно име. Помощник, който успява с първите две и се проваля с третото, сочи политика на резолвера, а не маршрутизация. Помощник, който изобщо не конфигурира устройството, вероятно никога не е бил изпълняван, а това е въпрос на права, не на мрежа. Потвърдете бита за изпълнение и служебния акаунт, преди да пренаписвате каквато и да е логика.
Проверете свързване, повторно свързване и прекъсване
Настройката е само половината от договора, защото същият помощник трябва да възстанови или премахне състоянието, което притежава, когато тунелът се затвори. Помощник, който добавя маршрути и никога не ги премахва, оставя машината със стар път, който надживява сесията.
ip -brief address show tun0
ip route get 10.24.8.15
resolvectl status tun0
journalctl -u NetworkManager -b --no-pager | grep -i -E 'vpnc|script'
Изпълнете първите три, докато сте свързани, прекъснете и след това ги изпълнете отново и потвърдете, че маршрутът и записът на резолвера са изчезнали. Четвъртият ред показва дали помощникът е бил извикан изобщо и кой път за изпълнение е използвала услугата. Запишете тази двойка изходи в тикета, защото тъкмо сравнението преди и след прави грешката при изчистване очевидна.
Дръжте помощника пакетиран и изпълним от служебния акаунт, защото скрипт, който работи в обвивката ви, все още може да бъде отказан при ограничена служебна политика. Когато персонализацията наистина е необходима, документирайте целта и собственика ѝ и я сравнявайте с пакетираната версия при всяко надграждане. Необяснен форк на помощник е едно от малкото неща, които могат да провалят работеща връзка година по-късно.