我有一个奇怪的问题,不能自己弄清楚,究竟是什么原因造成的,或者如何解决这个问题。 这基本上很简单,我的设置看起来像这样:
Windows 10客户端< – > router1 < – > router2(在build立调制解调器)
所以这是双重NAT,但这似乎并不是一个问题,它以前工作得很好。 当我通过router1 < – > router2直接路由时,所有工作正常,问题出现了,当我带一个OpenVPN隧道在那里运行router1。
问题是,随机地,我不能打开我的客户端上的TCP连接。 当我通过Chrome浏览器浏览时,大多数情况下会显示,然后我得到一个“build立安全连接”,什么也没有发生。 然后我通过chrome得到TIMEOUT_ERROR,或者站点突然popup。 然后,所有的工作再次进行一些随机的时间,直到它再次发生。
隧道是所有的时间工作,我检查这在router1运行一个永久的“平8.8.8.8 -I tun0”。 在OpenVPN连接上没有错误输出,连接不会丢失或重新连接。
我的OpenVPN客户端configuration是:
client dev tun proto tcp remote 81.*.*.* 443 resolv-retry infinite nobind persist-key ca /etc/openvpn/keys/ca.ipvanish.com.crt auth-user-pass /etc/openvpn/keys/user_ipvanish.auth verify-x509-name **** name script-security 2 route-noexec route-up /etc/openvpn/up/route-up.sh down /etc/openvpn/down/route-down.sh comp-lzo no verb 3 auth SHA256 cipher AES-256-CBC keysize 256 tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-DSS-WITH-AES-256-CBC-SHA:TLS-RSA-WITH-AES-256-CBC-SHA
route-up.sh:
#!/bin/sh if [[ $dev == 'tun0' ]]; then TABLE='vpn1' else TABLE='vpn2' fi ip route flush table $TABLE ip route add default via $route_vpn_gateway table $TABLE dev $dev iptables -w -t nat -A POSTROUTING -o $dev -j SNAT --to $ifconfig_local exit 0
route-down.sh
#!/bin/sh if [[ $dev == 'tun0' ]]; then TABLE='vpn1' else TABLE='vpn2' fi ip route flush table $TABLE iptables -w -t nat -D POSTROUTING -o $dev -j SNAT --to $ifconfig_local exit 0
路由规则:
ip rule add prio 32764 fwmark 2 table vpn1 ip rule add prio 32763 fwmark 3 table vpn2
防火墙:
iptables -w -A forwarding_rule -i br-lan -o tun+ -j ACCEPT iptables -w -t mangle -A PREROUTING -s 10.0.0.0/24 -j MARK --set-mark 2