我在 OVHcloud 上创建了 4 台服务器,全部运行 Ubuntu 22。它们使用这些 IP 组成简单的测试网络:
Client_A:
ens3 - public IP
ens4 - 10.200.0.1
Server_B:
ens3 - public IP
ens4 - 10.200.0.2
Server_C:
ens3 - public IP
ens4 - 10.201.0.1
Client_D:
ens3 - public IP
ens4 - 10.201.0.2
我使用 StrongSwan 在 Server_B 和 Server_C 之间创建了 ipsec 隧道。它已成功建立,如 ipsec status 命令的输出所示......
B_to_C{1}: INSTALLED, TUNNEL, reqid 1, ESP SPIs: c333a692_i ca3c274b_o B_to_C{1}: 10.200.0.0/16 === 10.201.0.0/16
C_to_B{2}: INSTALLED, TUNNEL, reqid 1, ESP SPIs: ca3c274b_i c333a692_o C_to_B{2}: 10.201.0.0/16 === 10.200.0.0/16
我添加了静态路由到Client_A
10.201.0.0/16 via 10.200.0.1 dev ens4
...还有 Client_D...
10.200.0.0/16 via 10.201.0.1 dev ens4
我在两个 ipsec 服务器上设置 /etc/sysctl.conf 以包含 net.ipv4.ip_forward = 1。
当我从 Client_A ping 到 Client_D 时,没有响应,但当我在 Server_B 上运行 tcpdump 时,它显示 Client_D 向 Client_A 发送回显回复,但由于某种原因,它在 Server_B 上停止并且未到达 Client_A。
10.201.0.2 > 10.200.0.2: ICMP echo reply, id 56, seq 2, length 64
当我从 Server_B ping 到 Client_D 时,Server_B 得到正确回复。
那么请有人解释一下,为什么从 Client_A 到 Client_D 的 echo 请求的回复无法到达发起者 - Client_A?
没有防火墙规则会阻止数据包