OpenVPN - 客户端到客户端的流量朝一个方向工作,但不是另一个方向

Paw*_*ion 5 freebsd openvpn

我有以下 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 局域网上的两台主机,但不能访问其他主机。这让我很困惑。

kyr*_*isu 0

  1. 您是否检查了故障局域网内防火墙的范围?
  2. 物理 LAN 接口上的 tcpdump 显示什么?您可以在 tun0 上运行一个,在 eth0 上运行一个(或者您的 LAN 接口的名称)并检查流量在哪里中断吗?也许这只是客户端缺乏答案(就像之前提到的无效范围设置)