Вопрос или проблема
Как узнать, установлен ли туннель VPN на сайте OpenVPN? Кроме того, чтобы проверить пинг другой стороны, есть ли команда или что-то, что показывает статус туннеля?
В дополнение к тому, что предложил @quanta:
- Используйте интерфейс управления OpenVPN и его команду “status”.
“man openvpn” расскажет вам, как настроить и использовать этот интерфейс (ищите “–management”)
OpenVPN в режиме одноранговой связи (1.x), сервера (2.x) и клиента (2.x) выдает разные выходные данные, но позволит вам увидеть, подключен ли он. В режиме сервера будут перечислены все подключенные клиенты.
-
OpenVPN может сбрасывать свой статус в текстовый файл каждые n секунд. Снова, “man openvpn” (ищите “–status”). Содержимое файла будет точно таким же, как результат команды управления статусом.
-
OpenVPN может выполнять произвольный скрипт, когда соединение установлено, закрыто, демон запущен или перед завершением работы и т. д., на практике вы можете написать скрипт для почти любого действия. Ничто не запрещает вам использовать, скажем, уведомления рабочего стола из скрипта-подвески.
Ищите “SCRIPTING” в “man openvpn”.
Конечно, каждый из этих вариантов может быть добавлен в конфигурационный файл openvpn, если вы опустите ведущее “–“.
В общем, я настоятельно советую вам полностью прочитать страницу man, просто чтобы быть в курсе того, что она может делать и каковы последствия.
Конфигурация openvpn:
# Вывести короткий файл статуса, показывающий
# текущие соединения, усеченный
# и переписываемый каждую минуту.
status /var/log/openvpn.status
/var/log/openvpn.status:
СПИСОК КЛИЕНТОВ OPENVPN
Обновлено,Пт Авг 10 09:35:37 2018
Общее имя,Настоящий адрес,Полученные байты,Отправленные байты,Подключено с
client3,111.222.33.44:57006,24439169,25564869,Вт Июн 26 21:07:37 2018
raspberry,44.33.222.111:43656,17175937,18342688,Пн Июл 9 12:58:34 2018
ТАБЛИЦА МАРШРУТИЗАЦИИ
Виртуальный адрес,Общее имя,Настоящий адрес,Последняя ссылка
172.20.0.18,client3,111.222.33.44:57006,Вт Июн 26 21:07:39 2018
172.20.0.14,raspberry,44.33.222.111:43656,Пн Июл 9 12:58:35 2018
ГЛОБАЛЬНАЯ СТАТИСТИКА
Максимальная длина очереди bcast/mcast,0
КОНЕЦ
Вы можете легко разобрать его
Хотя --status
предоставляет информацию о состоянии VPN, по моему опыту это не то, что можно надежно разобрать для статуса подключения.
Хотя вы можете просто использовать что-то вроде --up "/usr/bin/touch /tmp/openvpn-connected"
(действительно используйте уникальный путь или случайное значение с чем-то вроде --up "/usr/bin/env bash -c 'echo $random_id > /tmp/openvpn-connected'"
, которое вы в конечном итоге будете ожидать).
Затем просто ждите, пока файл не появится (можете использовать ionotifywait
или более простой timeout 10 bash -c 'while [ ! -e /tmp/openvpn-connected ]; do sleep 0.5; done'
), как было отвечено в других вопросах:
- https://unix.stackexchange.com/questions/185283/how-do-i-wait-for-a-file-in-the-shell-script
- https://stackoverflow.com/questions/25959870/how-to-wait-till-a-particular-line-appears-in-a-file
Также можно использовать --down '/usr/bin/rm /tmp/openvpn-connected'
, чтобы удалить его, как только соединение потеряно
- Проверьте журналы на обеих сторонах.
sudo /sbin/ifconfig
, чтобы убедиться, что интерфейсtun/tap
работает.route -n
, чтобы исследовать таблицу маршрутизации.
Просто используйте следующую команду в терминале.
tail -f -n 15 /var/log/openvpn/status.log
СПИСОК КЛИЕНТОВ OPENVPN
Обновлено,XXXXXXXXXXXX
Общее имя,Настоящий адрес,Полученные байты,Отправленные байты,Подключено с
XXXXXXXXXXXX
XXXXXXXXXXXX
ТАБЛИЦА МАРШРУТИЗАЦИИ
Виртуальный адрес,Общее имя,Настоящий адрес,Последняя ссылка
XXXXXXXXXXXX
ГЛОБАЛЬНАЯ СТАТИСТИКА
Максимальная длина очереди bcast/mcast,1
КОНЕЦ
Ответ или решение
Чтобы узнать, установлен ли туннель OpenVPN для сетевого соединения «сайт-сайт», существует несколько способов помимо простого пинга на другой конец соединения. Ниже представлены методы, которые помогут вам проверить статус туннеля OpenVPN:
-
Проверка интерфейса TUN/TAP:
Используйте команду:sudo /sbin/ifconfig
Убедитесь, что интерфейс TUN/TAP поднят и работает. Вы должны увидеть что-то вроде
tun0
с IP-адресом, который соответствует настроенному для вашего туннеля. -
Изучение таблицы маршрутизации:
Запустите команду:route -n
Это поможет вам проверить наличие маршрутов, связанных с вашим виртуальным VPN-соединением. Вы должны увидеть маршруты, которые указывают на ваш туннельный интерфейс.
-
Просмотр логов:
Проверьте файлы логов OpenVPN на обеих сторонах. В логах в/var/log/openvpn/openvpn.log
или указанном вами файле логов должно быть указано, что туннель был установлен успешно. -
Использование интерфейса управления OpenVPN:
OpenVPN поддерживает интерфейс управления, который позволяет вам получать информацию о состоянии подключений. Чтобы использовать этот интерфейс, добавьте строки в конфигурацию вашего OpenVPN:management localhost 7505
После этого вы можете подключиться к интерфейсу управления с помощью telnet и использовать команду
status
, чтобы получить текущую информацию о клиентских подключениях. -
Используйте
--status
:
Чтобы OpenVPN выводил статус в текстовый файл каждые несколько секунд, можно настроить параметр--status
в конфигурации OpenVPN:status /var/log/openvpn/status.log
Этот файл можно будет просматривать и парсить для получения информации о текущих подключениях.
-
Автоматизация проверки с помощью скриптов:
Вы можете настроить произвольный скрипт, который будет выполняться при установке или разрыве соединения. Например, с помощью параметра--up
можно создать файл при установлении соединения:--up "/usr/bin/touch /tmp/openvpn-connected"
А с помощью
--down
удалить его:--down "/usr/bin/rm /tmp/openvpn-connected"
Затем можно использовать команду
wait
, чтобы дождаться появления файла/tmp/openvpn-connected
. -
Использование команды в реальном времени:
Вы также можете использовать команду для отслеживания статуса в реальном времени:tail -f -n 15 /var/log/openvpn/status.log
Это позволит вам видеть изменения в статусе подключений живьем.
Проверка состояния туннеля OpenVPN может быть выполнена различными методами, в зависимости от ваших нужд и настроек. Я настоятельно рекомендую ознакомиться с полным руководством по использованию OpenVPN, доступным через команду man openvpn
, для получения дополнительных возможностей и параметров настройки.