我有以下 VPN 配置:
+------------+ +------------+ +------------+
| 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.x.x.x eth0: 192.168.0.6
tun0: 192.168.150.18 tun0: 192.168.150.1 tun0: 192.168.150.10
P-t-P: 192.166.150.17 P-t-P: 192.168.150.2 P-t-P: 192.168.150.9
Run Code Online (Sandbox Code Playgroud)
Kino 是服务器并且启用了客户端到客户端。我在所有三台机器上都使用“fragment 1400”和“mssfix”。对两个连接的 mtu 测试成功。所有三台机器都启用了 ip 转发,通过在 gentoo 盒上:
net.ipv4.conf.all.forwarding = 1
Run Code Online (Sandbox Code Playgroud)
这在 FreeBSD 盒子上:
net.inet.ip.forwarding: 1
Run Code Online (Sandbox Code Playgroud)
在服务器的“ccd”目录中有以下文件:
客户 1:
iroute 192.168.0.0 255.255.255.0
Run Code Online (Sandbox Code Playgroud)
客户 3:
iroute 10.0.1.0 255.255.255.0
Run Code Online (Sandbox Code Playgroud)
服务器配置配置了以下路由:
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
哨站是这样的:
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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
现在,测试。
从 Guchuko ping 到 Outpost 的 LAN IP 工作正常,反向也一样 - 从 Outpost ping 到 Guchuko 的 LAN IP。然而...
从 Outpost Ping 到 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
Run Code Online (Sandbox Code Playgroud)
但是从 Guchuko 到 Outpost 局域网上的一台机器的 ping 没有:
.(( 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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
Outpost 在 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
Run Code Online (Sandbox Code Playgroud)
所以 Outpost 正在接收发往其子网上机器的 ICMP 请求,但似乎没有转发它。Outpost 在其 rc.conf 中有 gateway_enable="YES",它正确地将 net.inet.ip.forwarding 设置为 1,如前所述。据我所知,这就是让 FreeBSD 机器在接口之间转发数据包所需的全部内容。还有什么我可能会忘记的吗?FWIW,从 Kino ping 10.0.1.253 具有相同的结果 - 流量未转发。
更新:我发现我只能从 Outpost ping Guchuko 局域网上的某些 IP。从 Outpost 我可以 ping 192.168.0.3 和 192.168.0.2,但无法访问 192.168.99 和 192.168.0.4。可以看到相同的 tcpdump 行为。我认为这意味着问题不可能出在 ipforwarding 或路由上,因为 Outpost 可以访问 Guchuko 局域网上的某些主机,但不能访问其他主机,同样,Guchuko 可以访问 Outpost 局域网上的两台主机,但不能访问其他主机。这让我很困惑。
| 归档时间: |
|
| 查看次数: |
2302 次 |
| 最近记录: |