Клиент 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/) и перезагрузиться.