我已经设置了四台主机,如下所示:
我在互联网上通过 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 工作的结果。检查您的数据包过滤器是否有任何转换规则并进行相应修改。