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로 바꾸세요.

그것이 당신에게 도움이 되기를 바랍니다

관련 정보