Два рядки журналу OpenVPN починаються з тих самих слів, і лише один із них повідомляє про проблему. Could not determine IPv4/IPv6 protocol. Using AF_INET — це повідомлення про відкат: профіль залишив родину адрес відкритою, тому демон вибрав одну й продовжив. Гілка збою повідомляє, що сокет не створено, і вимагає перезапуску. Усе після спільного префікса розділяє їх, тому читайте далі, перш ніж щось змінювати.

Що повідомляє повідомлення про відкат

OpenVPN приймає явну родину через proto udp4 або proto udp6, а також приймає proto udp, коли родину слід вивести під час запуску. У другому випадку демон переглядає локальні дані прив'язки й вибирає.

Коли це виведення спрацьовує, попередження вказує напрямок, і процес продовжує створювати сокет. Сервер із proto udp на хості з подвійним стеком часто так потрапляє на IPv4. Ніщо на цьому шляху не є помилкою, і ніщо в ньому не натякає на атаку, відсутній вебсервер чи відхилений обліковий запис. Рядок корисний лише тому, що подальші перевірки слід порівнювати з родиною, яку він називає.

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

Як виглядає гілка збою

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

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

Знайдений у grep рядок теж не ідентифікує гілку. Фраза трапляється в ротованих зведеннях, у перенесених рядках і у витягах журналу, які люди вставляють з других рук, тому читайте сусідні рядки й порядок позначок часу, а не єдиний збіг.

Перевіряйте слухача, а не попередження

Працюючий сервер відповідає на питання про родину безпосередньо, без висновків із тексту журналу.

ss -lunp | grep openvpn
ss -ltnp | grep openvpn

Зіставте родину, адресу й порт із профілем. Рядок 0.0.0.0:1194 — лише IPv4, тоді як рядок [::]:1194 на хості з подвійним стеком може приймати обидві родини залежно від налаштування bindv6only. Якщо профіль каже udp, а сокет — IPv4, клієнти, чий резолвер повертає лише запис AAAA, зазнають невдачі ще до того, як тунель буде узгоджено.

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

Коли примусове задання родини доречне

Закріплення proto udp4 пасує розгортанню лише з IPv4: DNS-ім'я лише з A, правила брандмауера для однієї адреси v4, клієнти за операторами, які видають лише адреси v4. Це усуває неоднозначність і робить наступний набір рядків журналу передбачуваним.

Той самий аргумент діє навпаки для середовища з пріоритетом IPv6, а udp6 перед базою клієнтів лише з A — це створений вами ж збій. Примусово задавати родину лише для того, щоб заглушити безпечне попередження, — класична версія цієї помилки, бо ви змінили, хто може підключатися, в обмін на спокійніший журнал.

Вибирайте за кінцевими точками й клієнтами, які мають до них дістатися. Посібник OpenVPN 2.6 документує форми транспорту, і повідомлення є результатом цього вибору, а не його входом.

Тримайте запис вузьким

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

Пропозиції пакетів, які надходять разом із цим попередженням, не пов'язані зі справою, доки помилка не назве відсутній виконуваний файл.

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

Схожі статті