Проблема
Клиент Fortinet VPN 7.0.7.0246 на системе Kubuntu 23.04 (то есть сетью управляет Network Manager) .
Сразу после подключения соединение обрывается.
Причина
Причина в том, что сразу после подключения устройство в подключении VPN имеет статус unmanaged, а должно иметь статус managed или up.
Возможные пути решения
Вот тут люди обсуждают проблему: https://community.fortinet.com/t5/Support-Forum/FortiClient-cannot-configure-routing-tables-on-Kali-Linux/td-p/251954/highlight/true
Вот простой скрипт который надо запустить перед подключением:
#!/bin/bash
echo "Try to connect to the VPN now"
x=99
while [ $x -ne 0 ]
do
echo "Waiting for VPN connection..."
sleep 1
connection=$(nmcli connection show | grep -oP '^vpn\S*')
x=$?
done
echo "VPN connection $connection was created! Waiting for 'device-reapply'..."
x=99
while [ $x -ne 0 ]
do
nmcli -f GENERAL.STATE con show $connection 2> /dev/null
x=${PIPESTATUS[0]}
sleep 1
echo "Still waiting..."
done
echo "Device is unmanaged. Setting it to 'up' again..."
nmcli con up $connection 2> /dev/null
echo "Done."
Он следит за подключением и когда оно появляется - делает ему up !
Это рабочее решение, но требует запуска скрипта вручную каждый раз перед подключением.
На основе этого скрипта я сделал другой скрипт, который может работать как сервис, и не требует запуска каждый раз вручную. Также добавил периодический пинг DNS-сервера этого VPN-подключения, чтобы избежать отключения по таймауту неактивности.
#!/bin/bash
while true; do
connection=$(nmcli connection show | grep -oP '^vpn00\S*')
[[ ! -z "$connection" ]] && \
nmcli -f name,autoconnect connection | grep $connection | grep no && \
nmcli con mod $connection connection.autoconnect yes && nmcli con up $connection 2>/dev/null && echo -n "Connected! " && date
sleep 5
[[ ! -z "$connection" ]] && ping -c 1 -s 1 `nmcli con show $connection 2>/dev/null | grep 'IP4.DNS\[1\]' | awk '{print $2}'` 2>&1>/dev/null
done
В системах с KDE (про Gnome не уверен) этот скрипт достаточно поместить в директрию $HOME/.config/autostart-scripts/ (или $HOME/.config/old-autostart-scripts/) и перезагрузиться.
Discussion