OpenVPN – 客户端到客户端的stream量工作在一个方向,但不是其他

我有以下VPNconfiguration:

+------------+ +------------+ +------------+ | outpost |----------------| kino |----------------| guchuko | +------------+ +------------+ +------------+ OS: FreeBSD 6.2 OS: Gentoo 2.6.32 OS: Gentoo 2.6.33.3 Keyname: client3 Keyname: server Keyname: client1 eth0: 10.0.1.254 eth0: 203.xxx eth0: 192.168.0.6 tun0: 192.168.150.18 tun0: 192.168.150.1 tun0: 192.168.150.10 PtP: 192.166.150.17 PtP: 192.168.150.2 PtP: 192.168.150.9 

Kino是服务器,并启用客户端到客户端。 我在所有三台机器上都使用“fragment 1400”和“mssfix”。 对这两个连接进行mtutesting是成功的。 所有这三台机器都启用了ip转发function,在gentoo盒子上:

 net.ipv4.conf.all.forwarding = 1 

而这个在FreeBSD盒子上:

 net.inet.ip.forwarding: 1 

在服务器的“ccd”目录中是以下文件:

客户端1:

 iroute 192.168.0.0 255.255.255.0 

client3:

 iroute 10.0.1.0 255.255.255.0 

服务器configuration有这些路由configuration:

 push "route 192.168.0.0 255.255.255.0" push "route 10.0.1.0 255.255.255.0" route 192.168.0.0 255.255.255.0 route 10.0.1.0 255.255.255.0 

Kino的路由表如下所示:

 192.168.150.0 192.168.150.2 255.255.255.0 UG 0 0 0 tun0 10.0.1.0 192.168.150.2 255.255.255.0 UG 0 0 0 tun0 192.168.0.0 192.168.150.2 255.255.255.0 UG 0 0 0 tun0 192.168.150.2 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 

前哨是这样的:

 192.168.150 192.168.150.17 UGS 0 17 tun0 192.168.0 192.168.150.17 UGS 0 2 tun0 192.168.150.17 192.168.150.18 UH 3 0 tun0 

Guchuko是这样的:

 192.168.150.0 192.168.150.9 255.255.255.0 UG 0 0 0 tun0 10.0.1.0 192.168.150.9 255.255.255.0 UG 0 0 0 tun0 192.168.150.9 0.0.0.0 255.255.255.255 UH 0 0 0 tun0 

现在,testing。

从Guchuko ping到Outpost的局域网IP工作正常,就像从Outpost到Guchuko的局域网IP的反向连接一样。 然而…

从前哨站到Guchuko局域网上的机器工作正常:

  .(( root@outpost )). (( 06:39 PM )) :: ~ :: # ping 192.168.0.3 PING 192.168.0.3 (192.168.0.3): 56 data bytes 64 bytes from 192.168.0.3: icmp_seq=0 ttl=63 time=462.641 ms 64 bytes from 192.168.0.3: icmp_seq=1 ttl=63 time=557.909 ms 

但是从Guchuko ping到Outpost局域网上的一台机器不会:

  .(( root@guchuko )). (( 06:43 PM )) :: ~ :: # ping 10.0.1.253 PING 10.0.1.253 (10.0.1.253) 56(84) bytes of data. --- 10.0.1.253 ping statistics --- 3 packets transmitted, 0 received, 100% packet loss, time 2000ms 

guchuko的tun0的tcpdump显示:

 18:46:27.716931 IP 192.168.150.10 > 10.0.1.253: ICMP echo request, id 63009, seq 1, length 64 18:46:28.716715 IP 192.168.150.10 > 10.0.1.253: ICMP echo request, id 63009, seq 2, length 64 18:46:29.716714 IP 192.168.150.10 > 10.0.1.253: ICMP echo request, id 63009, seq 3, length 64 

tun0上的前哨tcpdump显示:

 18:44:00.333341 IP 192.168.150.10 > 10.0.1.253: ICMP echo request, id 63009, seq 3, length 64 18:44:01.334073 IP 192.168.150.10 > 10.0.1.253: ICMP echo request, id 63009, seq 4, length 64 18:44:02.331849 IP 192.168.150.10 > 10.0.1.253: ICMP echo request, id 63009, seq 5, length 64 

所以Outpost正在接收目的地为其子网上的机器的ICMP请求,但似乎没有转发它。 如前所述,前哨在其rc.conf中的gateway_enable =“YES”正确地将net.inet.ip.forwarding设置为1。 据我所知,这就是让一个FreeBSD盒子在接口之间转发数据包所需要的。 还有什么我可以忘记? FWIW,来自Kino的ping 10.0.1.253具有相同的结果 – stream量不能被转发。

更新:我发现我只能从Outpost ping Guchuko的局域网上的某些IP。 从前哨我可以ping 192.168.0.3和192.168.0.2,但无法访问192.168.99和192.168.0.4。 可以看到相同的tcpdump行为。 我认为这意味着这个问题不能由于ip或者路由,因为Outpost可以到达Guchuko的局域网上的一些主机而不是其他的,同样的,Guchuko可以到达Outpost局域网上的两个主机,而不是其他的。 这让我感到困惑。

我会检查两件事情:

首先,请检查在不能ping通的主机上没有防火墙或其他设备。

其次,在无法ping的机器上检查路由规则,以确保它们有路由条目,这些条目将会回复到VPN网关(直接或通过知道如何到达VPN网关的默认路由)。 Snoop / wireshark不可分割的节点上的目标接口,以确保您可以看到请求进入和回复的地方。

  1. 你检查了有故障的局域网内防火墙的范围吗?
  2. 在物理LAN接口上显示什么tcpdump? 你可以在tun0上运行一个,在eth0上运行一个(或者你的LAN接口的名字是什么),并检查交通刹车的位置? 也许这只是在客户机端缺乏答案(就像在无效范围设置之前提到的那样)