通过 IPSec 传输 IP 地址

通过 IPSec 传输 IP 地址

我已经设置了四台主机,如下所示:

网络图

我在互联网上通过 OpenSwan 在服务器 B 和 C 之间建立了 IPSec 隧道。服务器 A 和 D 分别配置为通过 B 和 C 将流量路由到对方。服务器 A 和 B 在一个私有网络上,服务器 C 和 D 在另一个私有网络上。

我可以正确地 ping 和通信,但是当从服务器 A ping 服务器 D 时,我在每个盒子上的 tcpdump 输出中看到了一些有趣的东西。

在服务器 A 上:

04:52:12.790527 IP (tos 0x0, ttl 64, id 24219, offset 0, flags [DF], proto ICMP (1), length 84)
    [Server A] > [Server D]: ICMP echo request, id 29513, seq 1, length 64
04:52:12.793453 IP (tos 0x0, ttl 62, id 44476, offset 0, flags [none], proto ICMP (1), length 84)
    [Server D] > [Server A]: ICMP echo reply, id 29513, seq 1, length 64

在服务器 B 上:

04:52:08.393560 IP (tos 0x0, ttl 64, id 24219, offset 0, flags [DF], proto ICMP (1), length 84)
    [Server A] > [Server D]: ICMP echo request, id 29513, seq 1, length 64
04:52:08.395307 IP (tos 0x0, ttl 63, id 44476, offset 0, flags [none], proto ICMP (1), length 84)
    [Server D] > [Server B]: ICMP echo reply, id 29513, seq 1, length 64

服务器C:

04:52:08.395849 IP (tos 0x0, ttl 62, id 24219, offset 0, flags [DF], proto ICMP (1), length 84)
    [Server B] > [Server D]: ICMP echo request, id 29513, seq 1, length 64
04:52:08.396382 IP (tos 0x0, ttl 64, id 44476, offset 0, flags [none], proto ICMP (1), length 84)
    [Server D] > [Server B]: ICMP echo reply, id 29513, seq 1, length 64

服务器D:

04:52:12.428422 IP (tos 0x0, ttl 62, id 24219, offset 0, flags [DF], proto ICMP (1), length 84)
    [Server B] > [Server D]: ICMP echo request, id 29513, seq 1, length 64
04:52:12.428457 IP (tos 0x0, ttl 64, id 44476, offset 0, flags [none], proto ICMP (1), length 84)
    [Server D] > [Server B]: ICMP echo reply, id 29513, seq 1, length 64

然而,奇怪的事情来了:

  • 服务器 A 具有正确的 IP
  • 服务器 B 播下了正确的回显请求,但回显答复似乎发往服务器 B。
  • 服务器 C 和 D 都看到服务器 B 和 D 之间传输的请求。

为什么数据包似乎来自服务器 B 而不是服务器 A?谢谢!

答案1

看起来 B 正在将 IP SRC 标头字段更改为其自己的地址。可能是 NAT 工作的结果。检查您的数据包过滤器是否有任何转换规则并进行相应修改。

相关内容