![如何将复制的数据包路由到第二个接口?](https://linux22.com/image/1589500/%E5%A6%82%E4%BD%95%E5%B0%86%E5%A4%8D%E5%88%B6%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8C%85%E8%B7%AF%E7%94%B1%E5%88%B0%E7%AC%AC%E4%BA%8C%E4%B8%AA%E6%8E%A5%E5%8F%A3%EF%BC%9F.png)
我有两个运行 CentOS 7 的 AWS 实例,A 和 B,我需要将所有复制的数据包从 A 发送到 B 上的第二个接口 ( eth1
)。我已设置 IPTables 来复制和发送数据包:
iptables -t mangle -A PREROUTING -i eth0 -j TEE --gateway 10.0.3.101
我可以使用以下方法查看数据包的增量:
iptables -t mangle -L -n -v
我能够互相 ping 两个接口。路由设置如下:
default via 10.0.3.1 dev eth1 table 100
10.0.3.100 dev eth1 table 100
规则设定如下:
from 10.0.3.100 lookup table 100
to 10.0.3.101 lookup table 100
当我对 eth1 执行 tcpdump 时,我仅收到 ARP 请求和回复。当我从 ping10.0.3.100
到 时10.0.3.101
,我可以看到 ICMP 数据包。
源/目标检查已禁用。ip_forward
在两个实例上均已启用。
如果在同一子网中的实例上设置单个接口,我可以看到复制的数据包。如果在两个不同的子网中设置具有两个接口的实例,我看不到任何复制的数据包,但我可以在两个实例上看到对它们的 ping 和响应。
- 实例 A 位于
eth0
(10.0.3.100
子网10.0.3.0/24
)。 - 实例 B 在
10.0.4.100
(子网) 上有 eth0,在(子网)10.0.4.0/24
上有 eth1 。10.0.3.101
10.0.3.1/24
- 我正在尝试将复制的数据包从 发送
10.0.3.100
到10.0.3.101
。
答案1
由于这是在 AWS 上,因此我没有禁用第二个接口上的源和目标检查。更正后,它就起作用了。