3

Я пытаюсь проверить и отобразить статус (подключен / не подключен) и имя хоста / cn сервера OpenVPN-соединения, которое должно подключаться при каждой загрузке.

Теперь я обнаружил, что в /var/log/syslog регистрируется соединение, которое я могу использовать, чтобы определить, был ли зарегистрирован журнал « Initialization Sequence Completed и получить имя хоста /cn, 19 строк выше от [brimstone] Peer Connection Initiated with [AF_INET]1.2.3.4:1234 .

Взяв этот журнал, я могу проверить, завершена ли Initialization Sequence Completed , что будет означать, что я подключен и имя хоста, которое я просто хочу для другого скрипта.

Теперь моя проблема в том, что я в настоящее время не знаю, живо ли соединение и / или подключено ли я к другому серверу. Я мог бы периодически проверять журнал на наличие изменений, но это кажется немного экстремальным для довольно простой задачи.

Как я могу проверить состояние соединения моего OpenVPN и, если он подключен, получить имя сервера /cn?

2 ответа2

4

Вам не нужно этого делать, но вы все равно можете это сделать, проверив свой кажущийся внешний IP-адрес: следующая команда

   wget 216.146.38.70:80

запрашивает checkip.dyndns.org для вашего внешнего IP. Вы должны быть в состоянии распознать текущий статус вашего соединения таким образом.

Кроме того, вы можете проверить таблицу маршрутизации:

   $ ip route show
   0.0.0.0/1 via 10.8.0.17 dev tun0 
   default via 192.168.73.1 dev eth0  proto static 
   10.8.0.0/24 via 10.8.0.17 dev tun0 
   10.8.0.17 dev tun0  proto kernel  scope link  src 10.8.0.18 
   128.0.0.0/1 via 10.8.0.17 dev tun0 
   192.168.73.0/24 dev eth0  proto kernel  scope link  src 192.168.73.74  metric 1 
   IP.Address.Of.Your.OpenVPN.server via 192.168.73.1 dev eth0 

(это для маршрутизируемого OpenVPN, но это не имеет значения). Важная строка - последняя: если у вас есть что-то подобное, ваши пакеты будут маршрутизироваться через OpenVPN.

Вы также можете использовать такой инструмент, как mtr который pings и traceroutes одновременно (и постоянно !!) данный IP-адрес, например:

   mtr www.debian.org

Если OpenVPN запущен , вы увидите, что пакеты маршрутизируются через туннель (tun0 или tap0), а не через ваш обычный шлюз.

Как я уже говорил в начале, вам не нужно этого делать: OpenVPN предоставляет вам механизм для непрерывной проверки состояния соединения и его перезапуска в случае необходимости:

--keepalive nm

Вспомогательная директива, предназначенная для упрощения выражения --ping и --ping-restart в конфигурациях режима сервера. Например, --keepalive 10 60 расширяется следующим образом:

 if mode server:
   ping 10
   ping-restart 120
   push "ping 10"
   push "ping-restart 60"
 else
   ping 10
   ping-restart 60

Вы можете использовать keepalive или любую подходящую комбинацию ping , ping-restart , ping-exit , чтобы автоматически контролировать состояние соединения.

1

Возможно, вы могли бы использовать комбинацию openvpn:

вверх, вниз, uprestart и ping-restart

директивы конфигурационного файла (или их соответствующей командной строки)?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .