无法在两个网络接口之间进行 PING

无法在两个网络接口之间进行 PING

我正在玩 AWS EC2 实例,遇到了一个奇怪的问题。

我创建了一个具有 2 个网络接口的 EC2 实例(实例 A),以下是路由表:

default via 172.31.32.1 dev eth0 
default via 172.31.32.1 dev eth1  metric 10001 
169.254.169.254 dev eth0 
172.31.32.0/20 dev eth0  proto kernel  scope link  src 172.31.42.99 
172.31.32.0/20 dev eth1  proto kernel  scope link  src 172.31.47.72 

现在我尝试使用以下命令从接口 eth0 ping 到 eth1:,ping -I eth0 172.31.47.72但没有成功。然后我使用 tcpdump 监听 eth0 上的 icmp 流量并得到以下结果:

23:52:05.741380 IP ip-172-31-42-99 > ip-172-31-47-72: ICMP echo request, id 26033, seq 1, length 64
23:52:06.772710 IP ip-172-31-42-99 > ip-172-31-47-72: ICMP echo request, id 26033, seq 2, length 64
23:52:07.796705 IP ip-172-31-42-99 > ip-172-31-47-72: ICMP echo request, id 26033, seq 3, length 64
23:52:08.820704 IP ip-172-31-42-99 > ip-172-31-47-72: ICMP echo request, id 26033, seq 4, length 64
23:52:09.844704 IP ip-172-31-42-99 > ip-172-31-47-72: ICMP echo request, id 26033, seq 5, length 64

看起来 eth1 收到了 ICMP 请求,但 eth0 没有收到任何响应。当我尝试从 eth1 ping 到 eth0 时,也发生了类似的失败。我的 iptables 规则默认设置为“接受所有流量”。

---调试 1:执行自我 Ping---

ping -I eth0 172.31.42.99
ping -I eth1 172.31.47.72

两者都有效!!!

---调试 2:在同一子网内创建另一个实例---

我创建了另一个 EC2 实例(实例 B),其私有 IP 为 172.31.42.86。通过两个接口从实例 A 对实例 B 进行 ping 操作:

ping -I eth0 172.31.42.86
ping -I eth1 172.31.42.86

两者都有效!!!

从实例 B ping 实例 A 的两个接口:

ping 172.31.42.99
ping 172.31.47.72

两者都有效!!!

有人知道原因吗?

答案1

为什么要从一个接口 ping 到另一个接口?

如果你想测试它们创建一个单独的实例并从那里对它们两个进行 ping 操作。

请记住,VPC 网络不是您通常使用的以太网段,而是每个设备一个段的路由网络。有时,在交换网络上通常可以工作的技巧可能很难实现。

相关内容