Linux、norvpn、省電力/履歴書

Linux、norvpn、省電力/履歴書

本当にやりたいノース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

しばらくの間、スクリプトを使用してnordpnを再起動できないという結論に達しました。/usr/lib/systemd/システムスリープ/

私はこのスクリプトを使って眠っている間nordpnを停止することに満足していましたが、再開時に手動で再起動する必要があることに注意してください。私が使っているようにスイング(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

関連情報