我已经在树莓派上设置了 OpenVPN,并编写了一些脚本,其中包含添加/删除 iptable 规则以及终止/启动应用程序等各种内容。
这是我的 openvpn 配置文件:
client
dev tun
proto udp
route-up route-up.sh
down down.sh
remote chi.central.usa.torguardvpnaccess.com 1912
remote ny.east.usa.torguardvpnaccess.com 1912
remote la.west.usa.torguardvpnaccess.com 1912
remote lon.uk.torguardvpnaccess.com 1912
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
tls-auth ta.key 1
auth SHA256
cipher AES-128-CBC
remote-cert-tls server
auth-user-pass user.txt
comp-lzo
verb 1
reneg-sec 0
fast-io
# Uncomment these directives if you have speed issues
;sndbuf 393216
;rcvbuf 393216
;push "sndbuf 393216"
;push "rcvbuf 393216"
这是我的两个脚本: 路由启动脚本
#!/bin/sh
sleep 10
sudo ip rule add from 192.168.0.133 table 10
sudo ip route add default via 192.168.0.1 table 10
sudo iptables -t nat -I POSTROUTING -o tun0 -j MASQUERADE
sudo iptables -A INPUT -d mydns.duckdns.org -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -d mydns.duckdns.org -j DROP
sudo -u pi deluged
PID=$!
sleep 3
kill -2 $PID 2>/dev/null
下载
#!/bin/sh
sudo pkill deluged
sudo iptables -t nat -D POSTROUTING -o tun0 -j MASQUERADE
所以我的问题是...我该如何测试这些是否正常工作?我已阅读 OpenVPN 的文档,并且我意识到理论上这是可行的,当 VPN 因某种原因断开连接时,它将执行“down.sh”,而当它重新连接时,它将执行“route-up.sh”。但是有没有办法模拟 VPN 断开连接以进行测试?我知道我可以“sudo pkill openvpn”,但这会终止整个隧道并且不会执行那些脚本。
我很感激任何帮助和建议!谢谢大家!