Обновление vpnc из NetworkManager

В моем университете есть специальная беспроводная сеть, которая требует, чтобы вы использовали VPN для доступа в Интернет. Таким образом, у меня есть небольшой скрипт, который соединяет меня с VPN, когда я попаду в беспроводную сеть:

/etc/NetworkManager/dispatcher.d/99bonnet:

if [[ "$1" != "wlan0" ]]
then
    return
fi

# Kill vpnc if it is still active
if pgrep vpnc
then
    vpnc-disconnect
fi

# Exit if we are not connected to bonnet
if ! iwconfig wlan0 | grep bonnet
then
    return 0
fi

# Handle the action
if [[ "$2" == up ]]
then
    vpnc "$vpn_config_file"
else
    vpnc-disconnect
fi

Это работает как шарм и подключает и отключает VPN с Wi-Fi. Проблема в том, что vpnc имеет тенденцию умереть на меня. Есть ли способ вернуть vpnc, если он умирает? Существует приятная вики об управлении процессом , но кажется, что я не могу использовать inittab для своей цели здесь или, по крайней мере, не прямо.

Что было бы не взломать путь к respawn vpnc, если он умирает, когда я подключен к определенной беспроводной сети?

2
задан 27 October 2011 в 00:19

2 ответа

Если вы заметили, что vpnc умирает примерно за такое же время, вы можете попытаться отключить DPD:

   --dpd-idle <0,10-86400>
          Send DPD packet after not receiving anything for <idle> seconds.  Use 0 to disable DPD completely (both ways).
          Default: 300
   conf-variable: DPD idle timeout (our side) <0,10-86400>

(взято из vpnc man page)

Параметр выше (--dpd-idle 0) отключит обнаружение мертвого пира и не прекратит соединение, если пакеты не дойдут до вас вовремя. Вы можете в противном случае установить его в свой файл конфигурации, как описано выше.

Я думаю, что я также немного отредактировал ваш сценарий запуска, чтобы избежать безоговорочной остановки vpnc «если он все еще активен». У вас могут быть разные изменения состояния, чем «вверх» и «вниз» (например, у вас есть «имя хоста»); например, при перемещении из точки доступа в точку доступа из-за изменений уровня сигнала, иначе вы можете получить новый «вверх». Другими словами:

# Exit if we are not connected to bonnet
if ! iwconfig wlan0 | grep bonnet then
    # Kill vpnc if it is still active
    if pgrep vpnc then
        vpnc-disconnect
    fi
    return 0
fi

Вместо выполнения двух отдельных проверок. (хотя я не тестировал это)

1
ответ дан 25 May 2018 в 17:33
  • 1
    Последний пункт действительно действительно, я это изменил. И DPD будет означать, что если он отключится через 5 минут бездействия, это будет так, верно? – Martin Ueding 3 November 2011 в 13:40
  • 2
    это наиболее вероятная причина, если она последовательно отключается через определенное количество времени (например, всегда через 5 минут) – Mathieu Trudel-Lapierre 25 November 2011 в 23:45
  • 3
    Я попытался установить его на ноль. Я не отсоединяюсь, но если сеть глючит, я не могу снова подключиться. Поэтому я предполагаю, что тайм-аут имеет свое применение ... – Martin Ueding 26 November 2011 в 03:29

Если вы заметили, что vpnc умирает примерно за такое же время, вы можете попытаться отключить DPD:

   --dpd-idle <0,10-86400>
          Send DPD packet after not receiving anything for <idle> seconds.  Use 0 to disable DPD completely (both ways).
          Default: 300
   conf-variable: DPD idle timeout (our side) <0,10-86400>

(взято из vpnc man page)

Параметр выше (--dpd-idle 0) отключит обнаружение мертвых равноправных узлов и не прекратит соединение, если пакеты не дойдут до вас вовремя. Вы можете в противном случае установить его в свой файл конфигурации, как описано выше.

Я думаю, что я также немного отредактировал ваш сценарий запуска, чтобы избежать безоговорочной остановки vpnc «если он все еще активен». У вас могут быть разные изменения состояния, чем «вверх» и «вниз» (например, у вас есть «имя хоста»); например, при перемещении из точки доступа в точку доступа из-за изменений уровня сигнала, иначе вы можете получить новый «вверх». Другими словами:

# Exit if we are not connected to bonnet
if ! iwconfig wlan0 | grep bonnet then
    # Kill vpnc if it is still active
    if pgrep vpnc then
        vpnc-disconnect
    fi
    return 0
fi

Вместо выполнения двух отдельных проверок. (хотя я не тестировал это)

1
ответ дан 6 August 2018 в 02:54

Другие вопросы по тегам:

Похожие вопросы: