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'
Виконайте перші три рядки, поки підключені, відключіться, потім виконайте їх знову й переконайтеся, що маршрут і запис розв'язувача зникли. Четвертий рядок показує, чи помічник узагалі викликався і який виконуваний шлях використала служба. Збережіть цю пару виводів у заявці, бо саме порівняння до і після робить помилку очищення очевидною.
Тримайте помічника спакованим і виконуваним для службового облікового запису, бо скрипт, що працює у вашій оболонці, усе одно може бути відхилений за обмеженої службової політики. Коли налаштування справді потрібне, задокументуйте його мету й власника та порівнюйте зі спакованою версією під час кожного оновлення. Непояснений форк помічника — одна з небагатьох речей, які можуть змусити робоче з'єднання відмовити через рік.