я выполняю несколько openvpn экземпляров каждый подключенный к различным серверам, давайте предположим, что существует 3, и я использую простой сценарий PHP с этой командой
system('openvpn config1');
system('openvpn config2');
system('openvpn config3');
файл конфигурации содержит демона и маршрут-nopull в конце, я буду, tun0 tun1 tun2 включил, когда я хочу использовать tun0, я использую
curl_setopt($curlh, CURLOPT_INTERFACE, "tun0");
теперь первая проблема состоит в том, если была некоторая проблема с интерфейсом, вихревой тайм-аут не будет работать! это зависнет для там навсегда, пока я не прерву его вручную
и вторая проблема даже openvpn, не уничтожит интерфейс, если связь прервалась по некоторым причинам, как я могу проверить, живо ли соединение все время (проверка активности 10 60 не добивалась цели, я не знаю почему),
я не эксперт в openvpn, и у них нет большой информации в их руководстве поэтому, как я могу удостовериться все время, что соединение в определенном интерфейсе работает, и если это не я wan't для уничтожения этого openvpn экземпляр, и каково решение для вихревого тайм-аута при использовании CURLOPT_INTERFACE
Самый простой способ, который я могу придумать, - это проверить статус ссылки. Например:
$ ip link show tun0
11: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1400 qdisc pfifo_fast state UNKNOWN mode DEFAULT qlen 500
link/none
Если он активен, вы увидите UP
в этих <>. Вы также можете проверить наличие активных маршрутов, связанных с интерфейсом. Отсутствие активных маршрутов означало бы, что интерфейс не будет использоваться.
$ ip ro show dev tun0
default via x.x.x.x dev tun0 scope link metric 1
Наиболее правильный способ - включить интерфейс управления на демоне openvpn и напрямую запросить у него статус связи и прочитать любые ошибки. Документация для интерфейса управления отсутствует на сайте openvpn .
Что касается тайм-аута curl, я не знаю, зачем он это делал. Вы можете захотеть открыть для него дефект с помощью PHP, если он воспроизводится с самой последней версией.