我有以下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不可分割的节点上的目标接口,以确保您可以看到请求进入和回复的地方。