tl; dr (在用@krisFRdebugging几个小时后):至less在Debian 8下,从不使用虚拟接口(eth0:1)用于OpenVPN,而是应用新的debian iproute2方法(手动方法): https:// wiki .debian.org / NetworkConfiguration#iproute2_method 。 它会很好地路由stream量。
我试图在所有客户端stream量应该通过隧道发送的机器上设置OpenVPN,所以这是我的服务器configuration的一部分:
local xxx243 port 443 proto udp dev tun server 172.31.1.0 255.255.255.0 push "redirect-gateway def1 bypass-dhcp"
和我的客户端configuration:
pull resolv-retry infinite mute-replay-warnings redirect-gateway def1 script-security 1
客户端能够连接到VPN,它可以在172.31.1.1 ping VPN主机,但是如果我尝试通过域或IP ping google.com Request timeout for icmp_seq 0消息的Request timeout for icmp_seq 0 …
什么可能导致这个? 注意,我已经卸载了任何防火墙,我目前正在设置IPTables为:
iptables -A INPUT -i eth0:1 -m state --state NEW -p udp --dport 443 -j ACCEPT iptables -A INPUT -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -o eth0:1 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth0:1 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -t nat -A POSTROUTING -s 172.31.1.0/24 -o eth0:1 -j MASQUERADE iptables -A OUTPUT -o tun+ -j ACCEPT
谢谢。
所以我试图ping客户端213.30.5.46 (谷歌的IP之一),并没有工作,但是我得到了这样的结果:
监听传出的VPN IP(eth0:1): tcpdump -i eth0 -t host xxx243
IP [CLIENT_IP x..].51060 > vpn.exampledomain.com.https: UDP, length 113 IP [CLIENT_IP x..].51060 > vpn.exampledomain.com.https: UDP, length 145 IP vpn.exampledomain.com.https > [CLIENT_IP x..].51060: UDP, length 81 IP [CLIENT_IP x..].51060 > vpn.exampledomain.com.https: UDP, length 145 IP [CLIENT_IP x..].51060 > vpn.exampledomain.com.https: UDP, length 145 IP [CLIENT_IP x..].51060 > vpn.exampledomain.com.https: UDP, length 145
同时,在tun0上监听,我得到了这个: tcpdump -i tun0
23:40:39.864798 IP 172.31.1.10 > cache.google.com: ICMP echo request, id 17942, seq 0, length 64 23:40:40.925951 IP 172.31.1.10 > cache.google.com: ICMP echo request, id 17942, seq 256, length 64 23:40:41.886679 IP 172.31.1.10 > cache.google.com: ICMP echo request, id 17942, seq 512, length 64 23:40:42.906125 IP 172.31.1.10 > cache.google.com: ICMP echo request, id 17942, seq 768, length 64
这里是iptables -L -n -v的输出:
Chain INPUT (policy ACCEPT 34772 packets, 2265K bytes) pkts bytes target prot opt in out source destination 0 0 ACCEPT udp -- eth0:1 * 0.0.0.0/0 0.0.0.0/0 state NEW udp dpt:443 13 1092 ACCEPT all -- tun+ * 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 1437 96985 ACCEPT all -- tun+ * 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all -- tun+ eth0:1 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 0 0 ACCEPT all -- eth0:1 tun+ 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED Chain OUTPUT (policy ACCEPT 32574 packets, 7919K bytes) pkts bytes target prot opt in out source destination 13 1092 ACCEPT all -- * tun+ 0.0.0.0/0 0.0.0.0/0
注意: /proc/sys/net/ipv4/ip_forward设置为1 。
目标tcpdump -i eth0:1 -t host 213.30.5.46同时ping目的地:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0:1, link-type EN10MB (Ethernet), capture size 262144 bytes IP 172.31.1.10 > cache.google.com: ICMP echo request, id 16920, seq 0, length 64 IP 172.31.1.10 > cache.google.com: ICMP echo request, id 16920, seq 256, length 64 IP 172.31.1.10 > cache.google.com: ICMP echo request, id 16920, seq 512, length 64 IP 172.31.1.10 > cache.google.com: ICMP echo request, id 16920, seq 768, length 64
客户端上没有显示,ping最终超时。
OpenVPN local xxx243使用的IP地址在eth0之后立即在\etc\network\interfaces为eth0:1 ,如下所示:
auto eth0:1 iface eth0:1 inet static address xxx243 gateway xxx129 netmask 255.255.255.128 dns-nameservers xxx4 xxx104
正如你所说,我们一起花了几个小时来debugging这个…
关于我们所做的所有testing以及我们检索的所有跟踪,最终看来我们正在经历关于虚拟接口eth0:1一些奇怪的行为。
例如: http : //lartc.org/howto/lartc.iproute2.html
大多数Linux发行版和大多数UNIX发行版目前使用的是古老的arp,ifconfig和route命令。 当这些工具工作时,它们在Linux 2.2及更高版本下显示出一些意外的行为。 例如,GRE隧道是当今路由的一个组成部分,但需要完全不同的工具。
使用iproute2,隧道是工具集的一个组成部分。
我们决定切换到iproute2 (至less试一试)修改/etc/network/interfaces文件来改变分配多个IP到eth0接口的方式。
之后,一切都很好,工作!
iproute2例子:
auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.42 netmask 255.255.255.0 gateway 192.168.1.1 iface eth0 inet static address 192.168.1.43 netmask 255.255.255.0
关于iproute2更多信息在这里: