Am postat soluția mea aici, poate poate ajuta pe cineva.
Codez un script, care ar încerca să interogheze adresa MAC a routerului meu de acasă, dacă reușește (adică sunt acasă), opriți-vă pentru a conecta VPN-ul.
Și apoi modificați fișierul de serviciu systemd (vpn-to-home.service), adăugați o linie ExecStartPre=/usr/local/bin/stop-if-lan.sh
.
Scriptul stop-if-lan.sh:
#!/bin/bash
/usr/bin/ping -4n -c 1 -q -W 1 IP_OF_ROUTER > /dev/null
MAC_ADDRESS=`arp -n | awk '/IP_OF_ROUTER/{print $3;exit}''
if [ "$MAC_ADDRESS" == "MAC_OF_ROUTER" ] ; atunci
# echo „Suntem deja acasă”.
iesirea 1
fi
iesirea 0
Serviciul vpn-to-home.service al systemd:
[Unitate]
Requisite=network-online.target
După=syslog.target network-online.target
[Serviciu]
Tip = inactiv
RuntimeDirectory=openvpn-client
WorkingDirectory=/run/openvpn-client
PrivateTmp=adevărat
CapabilityBoundingSet=CAP_IPC_LOCK CAP_NET_ADMIN CAP_NET_RAW CAP_SETGID CAP_SETUID CAP_SYS_CHROOT CAP_DAC_OVERRIDE
ExecStartPre=/usr/local/bin/check-if-lan.sh
ExecStart=/usr/sbin/openvpn --config /etc/openvpn/client/client-to-home.ovpn
LimitNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw
ProtectSystem=true
ProtectHome=adevarat
KillMode=proces
[Instalare]
WantedBy=multi-user.target