ฉันโพสต์วิธีแก้ปัญหาที่นี่ อาจช่วยใครซักคนได้
ฉันเขียนโค้ดสคริปต์ซึ่งจะพยายามค้นหาที่อยู่ MAC ของเราเตอร์ที่บ้านของฉัน หากสำเร็จ (หมายความว่าฉันอยู่บ้าน) ให้หยุดเพื่อเชื่อมต่อ VPN
จากนั้นแก้ไขไฟล์บริการ systemd (vpn-to-home.service) เพิ่มบรรทัด ExecStartPre=/usr/local/bin/stop-if-lan.sh
.
สคริปต์ 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}'`
ถ้า [ "$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-client
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
ProtectSystem=จริง
ProtectHome=จริง
KillMode=กระบวนการ
[ติดตั้ง]
WantedBy=multi-user.target