![如何让局域网中的主机在 Linux 中转发同一局域网内其他主机之间的流量](https://linux22.com/image/715091/%E5%A6%82%E4%BD%95%E8%AE%A9%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%AD%E7%9A%84%E4%B8%BB%E6%9C%BA%E5%9C%A8%20Linux%20%E4%B8%AD%E8%BD%AC%E5%8F%91%E5%90%8C%E4%B8%80%E5%B1%80%E5%9F%9F%E7%BD%91%E5%86%85%E5%85%B6%E4%BB%96%E4%B8%BB%E6%9C%BA%E4%B9%8B%E9%97%B4%E7%9A%84%E6%B5%81%E9%87%8F.png)
我正在设置测试拓扑如下:
Switch1-----Switch2-----Switch3
| | |
H1 H2 H3
我希望从 H1 到 H3 的流量先访问 H2,然后再转发到 H3。我已经在交换机 (OpenVSwitch) 上设置了流量规则来实现这一点。但是,当流量流向 H2 时,流量在那里被丢弃了。
我想知道我应该向 H2(Ubuntu 14.04)添加哪些配置,以便使 H2 能够转发不是发往它也不是源自它的流量。
答案1
您必须允许转发
echo 1 > /proc/sys/net/ipv4/ip_forward
如果您希望永久保留,请编辑文件 /etc/sysctl.conf
net.ipv4.ip_forward=1
答案2
感谢您的回答,我最终可以通过在交换机中重写数据包的目标 Mac 地址来做到这一点。问题是,主机 2 丢弃了不是发往它的数据包(不同的 Mac 目标地址)。因此,通过将目标 Mac 地址重写为交换机 2 中的主机 2 的 Mac 地址,并通过激活主机 2 中的 IP 转发,流量被成功重定向。所以第一步是告诉 S2 将流量发送到主机 2,目标 Mac 是主机 2。第二步是告诉 S2 将从主机 2 返回的流量的 Mac 地址重写为主机 3 的 Mac 地址(以恢复原始 mac 地址)。