systemdデバイスは、接続されたネットワークに基づいて条件付き実行を実行します(VPNの問題)。

systemdデバイスは、接続されたネットワークに基づいて条件付き実行を実行します(VPNの問題)。

~からsystemd.unit のマニュアルページ、ConditionPathExists=、ConditionPathIsSymbolicLink=などの条件を知っています。しかし、私にとって必要なのは、特定のデフォルトゲートウェイアドレスに依存する条件です。

nordvpnd.service特にオフィスネットワークに接続されていない場合にのみ起動(およびソケット)したいと思います。私のNordVPNサービスはautostartVPNに設定されておりkillswitch enabled、これがオフィスを除くすべての場所で動作することを望む方法です。

オフィスにいるときは、常に特定のデフォルトゲートウェイIPアドレスがあります。この事実を利用してユニットファイルに条件を実装できるようですnordvpnd.service。誰でもこれを達成する方法を提案できますか?

[Unit]
Description=NordVPN Daemon
Requires=nordvpnd.socket
After=network-online.target
Condition=??????

[Service]
ExecStart=/usr/sbin/nordvpnd
NonBlocking=true
KillMode=process
Restart=on-failure
RestartSec=5

[Install]
WantedBy=default.target

ベストアンサー1

私が提案できるものがあります。これが役立つことを確認してください。

あなたができることは、デフォルトゲートウェイを取得し、環境変数を設定してからConditionEnvironmentを使用してこれを行うことです。

ゲートウェイIPを取得して環境変数を設定できるコマンドは次のとおりです。

gw=$(ip r | grep default | grep -oE "([[:digit:]]+\.)+{3}[[:digit:]]")

if [ "$gw" == "192.168.X.X" ]; then export officeNetwork=1; else export officeNetwork=0; fi

ここの192.168.XXをオフィスのデフォルトゲートウェイIPに置き換えてください。

それがあなたに役立つことを願っています

おすすめ記事