Как заставить openconnect отключать раздел при закрытии VPN?

У меня есть эта запись в моем fstab:

sc-netapp48.nvidia.com:/vol/scratch9/scratch.securesign_new /home/scratch.securesign_new nfs _netdev,comment=systemd.automount 0 0

Я не уверен, как это работает, но когда я использую VPN и мне нужен доступ /home/scratch.securesign_new , он волшебным образом появляется.

Однако, когда я отключаюсь от VPN, оказывается, что /home/scratch.securesign_new все еще смонтирован. Это вызывает всевозможные проблемы.Например, всякий раз, когда я устанавливаю программу, установщик пытается получить доступ к несуществующему /home/scratch.securesign_new/.config .

Поэтому мне нужно иметь возможность umount -l /home/scratch.securesign_new при закрытии VPN. Как мне это сделать? Я попытался добавить сценарий в /etc/network/if-down.d/ , но этот сценарий не выполняется при закрытии VPN.

Я использую Kubuntu 20.04.

0
задан 16 June 2020 в 22:15

2 ответа

Я подтвердил, что скрипт в /etc/network/if-down.d/ вообще не вызывается при отключении от openconnect vpn.

Однако /etc/network/if-post-down.d/ вызывается, так что вы можете поместить туда свой скрипт. Убедитесь, что права доступа к вашему сценарию равны 755.

2
ответ дан 8 July 2020 в 17:55

Есть два варианта: либо проверять наличие процесса openconnect, либо проверять IP-адрес, например, каждую 1 секунду, чтобы определить, находимся ли мы в VPN или нет. Я предположил, что IP-адрес остается прежним во время сеанса OpenConnect. Так что это должно работать :

#######   BASED ON THE PRESENCE OF OPENCONNECT   #######

while [ 1 ]
do
    if  [ -n `pgrep openconnect` ] 
         then sudo umount -l /home/scratch.securesign_new
    fi
    sleep 1
done

######   OR BASED ON THE IP ADDRESS   ######

sudo openconnect -u user --passwd-on-stdin vpnserver
sleep 10
vpn_ip=`curl ifconfig.me`
while [ 1 ] 
do
    current_ip=`curl ifconfig.me`
    if [ "$vpn_ip" != "$current_ip" ]
        then sudo umount -l /home/scratch.securesign_new
    fi
    sleep 1
done

И не стесняйтесь экспериментировать с цифрами перед sleep. Я добавил 10-секундную задержку. после запуска службы VPN, так как для фактического запуска VPN-подключения может потребоваться некоторое время.

И я использовал веб-сайт ifconfig.me, чтобы получить IP-адрес. Но это может быть ненадежным источником информации, если вы хотите использовать его регулярно (я имею в виду, что он может по какой-то причине выйти из строя). , я не знаю). И если ваш терминал не отправляет трафик через OpenConnect (извините за то, что я так невежествен об этом, потому что я не использую это), вы должны добавить это перед НА ОСНОВЕ IP ADDRESS часть сценария:

$ export http_proxy="http://USER:PASSWORD@PROXY_SERVER:PORT"

Если есть лучшее решение, буду рад услышать.

Надеюсь, это поможет.

0
ответ дан 7 July 2020 в 18:45

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

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