在 3 节点设置上转发数据包

在 3 节点设置上转发数据包

这或多或少是以下情况的复兴:将流量从一个以太网接口转发到另一个以太网接口

假设以下设置。

.              15.15.1.11    15.15.1.12
.   A:eth0 --- eth0:B:xxx0 --- xxx0:C
. 15.15.0.10   15.15.0.11

其中 A、B 和 C 是独立的节点,xxx0 是某些非以太网网络接口。

每个节点分配以下地址和路由:

A
ip addr add 15.15.0.10 dev eth0
ip route add 15.15.0.0/16 dev eth0

B
ip addr add 15.15.0.11 dev eth0
ip route add 15.15.0.0/24 dev eth0
ip addr add 15.15.1.11 dev xxx0
ip route add 15.15.1.0/24 dev xxx0

C
ip addr add 15.15.1.12 dev xxx0
ip route add 15.15.1.0/16 dev xxx0

此时,我可以从 A 或 C 通过以下方式 ping B

ping 15.15.1.11
ping 15.15.0.11

从 B,我可以 ping 通 A 或 C。

ping 15.15.0.10
ping 15.15.1.12

但是,我无法从 A ping 通 C 或反之亦然。

我尝试了以下操作,但没有成功:

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -A FORWARD -i eth0 -o xxx0 -j ACCEPT
iptables -A FORWARD -i xxx0 -o eth0 -j ACCEPT

答案1

问题在于您已告诉 C,A 位于直接连接的网络中。因此,当您尝试 ping A 时,C 会尝试使用 ARP 获取 A 的 MAC 地址,而 A 永远不会响应。A 也是如此。

我建议你改用以下配置:

A ip addr add 15.15.0.10/24 dev eth0 ip route add 15.15.1.0/24 via 15.15.0.11

B ip addr add 15.15.0.11/24 dev eth0 ip addr add 15.15.1.11/24 dev xxx0

C ip addr add 15.15.1.12/24 dev xxx0 ip route add 15.15.0.0/24 via 15.15.1.11

注意,所有直连路由都会自动添加。然后你只需要告诉 A 和 C 如何通过 B 到达对方的网络。

相关内容