Linux, nordvpn 및 절전/이력서

Linux, nordvpn 및 절전/이력서

나는 정말로하고 싶다노스VPN절전/재개 이벤트에서 살아남으려면 물론 원격 끝이 내 노트북의 소리를 들을 수 없으면 연결이 끊어집니다. 공평하게 말하자면, 자동화할 수만 있다면 잠자리에 들기 전에 연결을 끊었다가 이력서에 다시 연결할 수 있어 기쁩니다. 저는 평소와 같은 일을 합니다./usr/lib/systemd/system-sleep/sleep-stuff(다음과 같은).

그러나 이것은 완전히 작동하지 않습니다. 복구 시 "nordvpn connect"를 실행하고 즉시 관찰하면 라우팅 테이블이 괜찮아 보입니다(예: 절전/재개 스크립트에서:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.8.1.1        128.0.0.0       UG        0 0          0 tun0
0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 wlp3s0
10.8.1.0        0.0.0.0         255.255.255.0   U         0 0          0 tun0
103.137.12.219  192.168.0.1     255.255.255.255 UGH       0 0          0 wlp3s0
128.0.0.0       10.8.1.1        128.0.0.0       UG        0 0          0 tun0
172.16.2.0      0.0.0.0         255.255.255.0   U         0 0          0 vmnet8
172.16.71.0     0.0.0.0         255.255.255.0   U         0 0          0 vmnet1
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 wlp3s0

불행하게도 로그인했을 때 라우팅 테이블이 "뭔가"에 의해 비 VPN 모드로 다시 전환되었습니다. 무엇인지는 모르겠지만 아마도 NetworkManager일 것입니다.

$ netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG        0 0          0 wlp3s0
172.16.2.0      0.0.0.0         255.255.255.0   U         0 0          0 vmnet8
172.16.71.0     0.0.0.0         255.255.255.0   U         0 0          0 vmnet1
192.168.0.0     0.0.0.0         255.255.255.0   U         0 0          0 wlp3s0

NordVPN 상태는 실행 중이라고 보고합니다.

$ nordvpn status
Status: Connected
Current server: au492.nordvpn.com
Country: Australia
City: Brisbane
Your new IP: 144.48.39.91
Current technology: OpenVPN
Current protocol: UDP
Transfer: 7.89 MiB received, 6.00 MiB sent
Uptime: 24 minutes 52 seconds

...하지만 물론 연결을 끊거나 연결하는 추가 작업을 수행해야 하는데, 이는 촌스럽습니다.

어떤 아이디어가 있나요?

다음은 스크립트입니다(/usr/lib/systemd/system-sleep/sleep-stuff 및 chmod +x에 넣음).

#!/bin/sh
if [ "${1}" == "pre" ]; then
    # before suspend
    pgrep nordvpnd &> /dev/null && nordvpn status |grep -q 'Status: Connected' && {
        # This will run as root, so root needs to have been initialised by
        # nordvpn login at some time in the past.
        /bin/nordvpn disconnect
    }
elif [ "${1}" == "post" ]; then
    # after resume
    pgrep nordvpnd &> /dev/null && {
        # This will run as root, so root needs to have been initialised by
        # nordvpn login at some time in the past.
        (
            sleep 5 # I've tried sleep from 0 to 5
            /bin/nordvpn connect
            netstat -rn # routing table looks OK now but it gets zapped by something else later!!
        ) &
    }
fi

이것은 Fedora-31에 있습니다.

답변1

잠시 생각한 끝에 스크립트를 사용하여 nordvpn을 다시 시작할 수 없다는 결론에 도달했습니다./usr/lib/systemd/시스템 절전/.

나는 이 스크립트를 사용하여 잠자는 동안 nordvpn을 중지하는 데 만족했으며 재개할 때 수동으로 다시 시작해야 한다는 것을 기억해야 합니다. 내가 사용하고 있는 것처럼그네(1) 단축키를 사용하면 타이핑 시간을 절약할 수 있습니다.

수정된 스크립트는 다음과 같습니다.

#!/bin/sh
if [ "${1}" == "pre" ]; then
    # before suspend
    pgrep nordvpnd &> /dev/null && nordvpn status |grep -q 'Status: Connected' && {
        # This will run as root, so root needs to have been initialised by
        # 'nordvpn login' at some time in the past.
        nordvpn disconnect
    }
elif [ "${1}" == "post" ]; then
    # after resume
    :
fi

관련 정보