답변:
18.10부터 (이전 버전에서는 확인할 수 없음) NetworkManager의 VPN 연결에는 다음과 같은 설정 vpn.persistent
이 있습니다. 수동으로 연결을 끊을 때까지 연결이 끊어지면 VPN에 다시 연결합니다. "no"
기본적으로 설정되어 있지만 불행히도 그놈 네트워크 설정이나 nm-connection-editor에는 노출되지 않습니다.
그러나 다음과 같이 CLI를 통해 설정할 수 있습니다.
nmcli connection modify <Your VPN connection name> vpn.persistent yes
물론 연결하기 전에 연결이 존재해야합니다.
OpenVPN에는 데드 링크를 자동으로 감지하고 다시 연결하는 기본 제공 메커니즘이 있습니다. 네트워크 관리자에서 "연결 편집"으로 이동하여 VPN 연결을 선택하고 "편집"을 선택하십시오. "VPN"탭에서 "고급 ..."을 클릭하고 "일반"탭으로 이동하십시오. 두 가지 관련 옵션이 있습니다.
"핑 간격 지정"은 OpenVPN에 링크가 여전히 살아 있는지 확인하는 빈도를 알려줍니다. "종료 또는 재시작 ping 지정"은 조치를 취할 때까지 대기하는 시간과 수행 할 조치를 알려줍니다.
예 : 설정은 "30 / ping-restart / 300"입니다. 이는 링크가 여전히 활성 상태 인 경우 OpenVPN이 30 초마다 확인 함을 의미합니다. 링크가 300 초 동안 중단되면 다시 시작됩니다.
이렇게하면 외부 스크립트가 필요하지 않습니다 ...
vpn.persistent
에 yes
).
이 스크립트는 nmcli con status
더 이상 작동하지 않는 16.04에서 작동합니다.
#!/bin/bash
CON="purple"
STATUS=`nmcli con show --active | grep purple | cut -f1 -d " "`
if [ -z "$STATUS" ]; then
nmcli con up $CON
fi
STATUS="$(nmcli con show -f name | grep purple)"
. 또는 다음을 수행하여 실제 연결이 활성화되어 있는지 간단히 확인할 수 있습니다.nmcli con show --active id 'purple'
다른 답변을 기반으로 한 완전한 답변은 다음과 같습니다.
#!/bin/bash +x
while [ "true" ]
do
CON="Your-VPN-Name"
STATUS=`nmcli con show --active | grep $CON | cut -f1 -d " "`
if [ -z "$STATUS" ]; then
echo "Disconnected, trying to reconnect..."
(sleep 1s && nmcli con up $CON)
else
echo "Already connected !"
fi
sleep 30
done