描述

10.223.0.7我的目标是从机器 A ( 10.101.0.40) ping 机器 C ( )

我有 2 个网络和 3 台机器

  • 网络A:10.223.0.0/24

  • 网络B:10.101.0.0/16

  • 机器 A(“pinger”):(10.101.0.40在 eth5 上)

  • 机器 B(“路由器”):(10.101.2.97在 ens7 上)和10.223.0.1(在 wg0 上)

  • 机器 C(“被 ping 的”):(10.223.0.7在 wg0 上)

  • 我已在机器 B 上全局启用 IP 转发,并在 ens7 和 wg0 接口上启用

  • 我的防火墙正在接受机器 B 上的转发规则。

  • 我在机器 B 上添加了这条规则:iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE以启用伪装

  • 我在机器 A 上添加了此规则ip route add 10.223.0.0/24 via 10.101.2.97 dev eth5来路由数据包

测试

当我启动 ping 时,我可以看到以下内容tcpdump -nni any icmp

机器 A:

18:16:12.976724 eth5  Out  IP 10.101.1.40 > 10.223.0.7: ICMP echo request, id 7373, seq 1065, length 64

机器B:

18:16:12.977241 ens7  In  IP 10.101.1.40 > 10.223.0.7: ICMP echo request, id 7373, seq 1065, length 64
18:16:12.977287 wg0   Out IP 10.223.0.1 > 10.223.0.7: ICMP echo request, id 7373, seq 1065, length 64
18:16:12.978201 wg0   In  IP 10.223.0.7 > 10.223.0.1: ICMP echo reply, id 7373, seq 1065, length 64
18:16:12.978217 ens7  Out IP 10.223.0.7 > 10.101.1.40: ICMP echo reply, id 7373, seq 1065, length 64

机器 C

18:16:12.977754 wg0   In  IP 10.223.0.1 > 10.223.0.7: ICMP echo request, id 7373, seq 1065, length 64
18:16:12.977767 wg0   Out IP 10.223.0.7 > 10.223.0.1: ICMP echo reply, id 7373, seq 1065, length 64

并且机器 A 没有收到任何响应。

我认为问题出在机器 B 日志的第 4 行。SRC IP 是,10.223.0.7但在我看来应该是10.101.2.97,ens7 网络上机器 B 的 IP。我完全不知道为什么会这样。

我尝试添加这个伪装规则iptables -t nat -A POSTROUTING -o ens7 -j MASQUERADE但正如预期的那样:它不起作用。

问题

为什么伪装对请求起作用(参见机器 B 的第二行),而对响应不起作用(参见机器 B 的第 4 行)?

2

  • 找到测试设置),但我无法重现您报告的行为:伪装按预期工作并machinea能够成功 ping machinec。看起来您可能正在使用 wireguard,并且您没有在问题中包含您的 wireguard 配置,所以我没有尝试重现这方面。


    – 

  • 哇,我不知道 kathara,这太神奇了。多亏了您的设置,我才发现自己找错了方向。日志完全相同,而且它正常工作。深入研究我的 MachineA 没有收到回复的原因后,我发现了我在答案中解释的 OpenStack 问题。


    – 


最佳答案
1

找到了。

第四行对我来说看起来很奇怪,但多亏@larsks 的设置,我意识到它很好。

ens7 网络背后的技术是 openstack。私有网络正在阻止数据包。

我已经在我的 OpenStack 堡垒上运行了这些命令:

openstack port set --no-security-group a1a[...]669
openstack port set --disable-port-security a1a[...]669

其中,beinga1a[...]669为MachineB的ens7对应的端口号

并且 ping 很快就恢复正常。