我已经在运行ddwrt的路由器上成功配置了OpenVPN客户端,并且还将其设置为在启动时启用OpenVPN。
家庭网络=>具有OpenVPN客户端的ddwrt路由器=>网络
如果OpenVPN客户端未运行,我可以看到路由器的Web界面并ssh进入我的任何家庭unix框中。所以我想知道如果OpenVPN客户端正在运行,我该如何做。
我确定我的家庭网络连接处于活动状态,因为我现在在通过wifi连接到路由器的Macbook上键入此密码,而其他Macbook通过iPhone个人热点连接到网络。我正在第二台Macbook上进行测试。
重要信息:
路由器防火墙关闭。
IP路由信息
root@myrouter:~# ip route list
0.0.0.0/1 via 10.208.185.5 dev tun1
default via my-wan-gateway-ip-here dev ppp0
my-wan-gateway-ip-here dev ppp0 proto kernel scope link src my-real-ip-here
10.208.0.1 via 10.208.185.5 dev tun1
10.208.185.5 dev tun1 proto kernel scope link src 10.208.185.6
127.0.0.0/8 dev lo scope link
128.0.0.0/1 via 10.208.185.5 dev tun1
169.254.0.0/16 dev br0 proto kernel scope link src 169.254.255.1
192.168.1.0/24 dev br0 proto kernel scope link src 192.168.1.1
my-vpn-ip via my-wan-gateway-ip-here dev ppp0
我的OpenVPN配置运行由dd-wrt自动创建的默认router-up.sh 。我没有对该脚本进行任何更改。
root@myrouter:/tmp# cat /tmp/openvpncl/route-up.sh
#!/bin/sh
iptables -D POSTROUTING -t nat -o tun1 -j MASQUERADE
iptables -I POSTROUTING -t nat -o tun1 -j MASQUERADE
iptables -D INPUT -i tun1 -j ACCEPT
iptables -I INPUT -i tun1 -j ACCEPT
我的DNS服务器(使用Comodo和OpenDNS)
root@myrouter:/tmp# cat resolv.dnsmasq
nameserver 8.26.56.26
nameserver 8.20.247.20
nameserver 208.67.222.222
我还使用了在网上找到的一些脚本,因此某些IP可以绕过VPN。该脚本是我的启动脚本(rc_startup)的一部分。我需要这个,所以我可以在平板电脑上玩这个特定的游戏。
#!/bin/sh
sleep 30
NO_VPN_LST="192.168.1.11 192.168.1.2"
[ -z "$NO_VPN_LST" ] && exit 0
WAN_GWAY="0.0.0.0"
while [ $WAN_GWAY == "0.0.0.0" ]; do
sleep 3
WAN_GWAY=`nvram get wan_gateway`
done
ip route add default via $WAN_GWAY table 10
for ipa in $NO_VPN_LST; do
ip rule add from $ipa table 10
done
ip route flush cache
exit 0
您面临的问题可能是默认/源路由之一。
当VPN不在网络上时,因为默认网关断开了Internet的连接,所以工作正常,但是当您启动VPN时,会添加一些新路由“通过10.208.185.5 dev tun1和128.0.0.0/1的0.0.0.0/1通过10.208.185.5 dev tun1“这具有使默认网关成为VPN端点而不是您的常规连接的最终效果。
因此,有两种解决方案,具体取决于您需要执行的操作-
较简单的解决方案是摆脱创建默认网关的那两条线路,并在要通过VPN访问的VPN连接上编程(或让您的提供商编程)特定的路由。仅当您将VPN用于特定目的(例如,连接到公司网络)时,这是一个选择,但如果您试图在更广泛的Internet上隐藏自己的身份,则对您来说效果不佳。
较难的解决方案是执行“基于源的路由”-这意味着设置2个路由表-当前的是默认表,而第二个表则是对通过常规连接直接传入的内容进行响应,并使用不同的默认路由。这样做并非易事,但是有很多方法可以做到这一点,包括在此处和此处(google的关键字将是“源路由”或“策略路由”-如果您真的想成为该领域的专家但是,您可能需要熟悉LART-第4章介绍了策略路由)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句