Якась приватна служба відповідає через VPN, а звичайний інтернет-трафік поводиться зовсім не так, як на машині колеги, і хочеться зробити висновок, що клієнт Ubuntu зламано. Цей висновок пропускає один крок. Робоча приватна операція і відмінний публічний шлях — це два спостереження, і різниця зазвичай криється в політиці трафіку, встановленій кожним клієнтом, а не в самому клієнті.

Порівняти збережену конфігурацію з фактичним станом мережі — це три команди, і вони відповідають на питання, яке намагалися розв’язати здогадками.

Спершу збережений профіль, потім фактичний стан

Імпортоване з’єднання OpenVPN стає окремим профілем NetworkManager. Файл .ovpn, з якого його отримано, перестає бути джерелом істини в момент завершення імпорту, тож подальше редагування цього файлу нічого не змінює в з’єднанні, яке ви використовуєте. Це перше місце, де порівняння йде не так, і відбувається це мовчки.

nmcli -f connection.id,connection.uuid,ipv4.never-default,ipv4.routes,ipv4.dns connection show office-vpn

Читайте UUID, коли імена збігаються; дублікати імен переживають перевстановлення й відновлення профілів, і можна витратити годину на редагування копії, яка не використовується. Значення, які ви бачите, описують збережений намір: чи може профіль забирати маршрут за замовчуванням, які маршрути збережено і які резолвери та домени пошуку він запитує. Вони не описують, що сталося під час активації з’єднання, бо плагін або push від сервера можуть додати стан, якого профіль не згадує. Тому наступна команда важлива.

Потім подивіться, що система насправді зробила з цим наміром, зокрема правила політики й усі таблиці, а не лише основну. Збережені властивості — це вхідні дані, а встановлені таблиці — результат.

ip -4 rule show
ip -4 route show table all

Два призначення, одне порівняння

Виберіть одне робоче приватне призначення й одне звичайне публічне, а потім запитайте в ядра, який шлях обере кожне. Саме виконання цього на обох машинах перетворює розмиту різницю на конкретну.

ip -4 route get 10.40.0.20
ip -4 route get 203.0.113.20

Адреси наведено як приклади, замініть їх своїми; важлива пара, а не числа. Порівнюйте інтерфейс, адресу джерела й таблицю, названу в кожному виводі. Коли приватний запит указує на тунель і публічний теж указує на тунель, у вас повний тунель, а в іншого клієнта може бути розділений, або навпаки.

Не вимагайте, щоб два клієнти друкували однаковий текст. redirect-gateway def1 в OpenVPN зазвичай виражається двома маршрутами половинного префікса замість одного маршруту за замовчуванням, і менеджер, який показує їх інакше, від цього не стає неправим. Оцінюйте покриття, яке показують запити, а не форматування.

Де два клієнти законно різняться

Типові налаштування клієнтів — це вибір політики, і вони мають право не збігатися. Один продукт може віддавати перевагу повному тунелю, інший зберігає локальний маршрут за замовчуванням і спрямовує лише приватні префікси, а третій дотримується того, що надіслав сервер. Різниця стає дефектом лише тоді, коли суперечить отриманій вимозі.

Тож порівнюйте кожного клієнта із затвердженим наміром розділеного або повного тунелю, а не одного з одним. Якщо вимога полягає в тому, щоб приватний трафік ішов через тунель, а локальний інтернет-шлях залишався локальним, то повний тунель — це помилка, а розділений правильний, незалежно від того, який клієнт що зробив. Запишіть намір до того, як подивитеся на будь-яку конфігурацію, інакше перший оглянутий клієнт тихо стане еталоном.

DNS — друга вісь, і вона відмовляє незалежно. Правильний маршрут усе одно може надсилати запити резолверу, який не може відповісти за приватну зону, а правильний резолвер не виправляє неправильний маршрут. Перевіряйте і те, і те, а приватне ім’я, яке розв’язується, тоді як приватна адреса ні, вважайте доказом того, що два шари розв’язуються окремо.

Тримайте порівняння чистим

Запускайте лише одного власника з’єднання за раз. Сеанс OpenVPN із командного рядка поруч з імпортованим профілем встановлює власні маршрути й власний стан резолвера, і отримана суміш не є поведінкою жодного з клієнтів. Зніміть один, перш ніж міряти інший. Перезавантажтеся, якщо не впевнені, що ще утримує стан, бо застарілий маршрут годинної давності виглядатиме точно як проблема політики.

Зафіксуйте й усе інше: той самий ендпоінт, той самий обліковий запис, ті самі версії програм, та сама мережа. Успіх на ноутбуці колеги з Windows перевіряє інший клієнт, іншу інтеграцію з резолвером і, можливо, інший профіль сервера, тож це не доказ щодо менеджера Ubuntu.

Довідник налаштувань IPv4 у NetworkManager точно визначає never-default і властивості збережених маршрутів, і його варто прочитати, перш ніж змінювати кероване значення. І пам’ятайте про межі цього порівняння: воно стосується IPv4 і нічого не каже про відповідну політику IPv6, яка має свої типові значення і свій спосіб дивувати.

Схожі статті