Я размещаю свое решение здесь, может быть, это может помочь кому-то.
Я кодирую скрипт, который попытается запросить MAC-адрес моего домашнего маршрутизатора, если он будет успешным (это означает, что я дома), остановлюсь, чтобы подключиться к VPN.
Затем измените файл службы systemd (vpn-to-home.service), добавьте строку ExecStartPre=/usr/local/bin/stop-if-lan.sh
.
Скрипт stop-if-lan.sh:
#!/бин/баш
/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}'`
если [ "$MAC_ADDRESS" == "MAC_OF_ROUTER" ] ; тогда
# echo "Мы уже дома."
выход 1
фи
выход 0
Служба vpn-to-home.service systemd:
[Ед. изм]
Requisite=network-online.target
After=syslog.target network-online.target
[Оказание услуг]
Тип = бездействие
RuntimeDirectory=openvpn-клиент
WorkingDirectory=/run/openvpn-клиент
PrivateTmp=истина
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
ЛимитNPROC=10
DeviceAllow=/dev/null rw
DeviceAllow=/dev/net/tun rw
ПротектСистем=истина
ПротектХоме=истина
KillMode=процесс
[Установить]
WantedBy=многопользовательская.цель