如何配置 IP 转发

如何配置 IP 转发

网络结构

DEV1我有一个应该与设备通信的设备DEV3,但是在中间有DEV2

我的理解是,我需要在和中使用 IP 转发DEV2并编辑路由表。DEV1DEV3

因为DEV2我已经启用了IP转发:

-> sysctl net.ipv4.ip_forward

net.ipv4.ip_forward = 1

我无法设置其余的事情。我应该怎么做才能让它发挥作用?

答案1

鉴于这两个路由器允许所有连接从任意一侧通过,最简单的事情就是向 DEV2 的两个接口添加新的 IP 地址。我们这样做是为了让 DEV2 可以轻松区分发给它的数据包和要经过的数据包:

ip addr add 192.168.2.3/24 dev INTERFACE2
ip addr add 10.12.0.218/24 dev INTERFACE3

(用真实的接口名称替换 INTERFACE2/3,并确保这些地址是不是采取,这样做只是平-c 192.168.2.3例如,看看您是否得到任何回复。另外,我猜这两个掩码是/24,如果不是请相应调整)。现在,192.168.2.3 和 10.12.0.218 的任何内容均适用于 DEV1/3,而 192.168.2.1-10.12.0.217 的任何内容均适用于 DEV2。

现在我们转发到达这两个新地址的任何内容:

iptables -A FORWARD -j ACCEPT
iptables -A PREROUTING -t nat -d 192.168.2.3 -j DNAT --to 10.10.3.154
iptables -A PREROUTING -t nat -d 10.12.0.218 -j DNAT --to 192.168.2.2
iptables -t nat -A POSTROUTING -j MASQUERADE

第一条规则允许数据包从一个接口迁移到另一个接口(规则net.ipv4.ip_forward = 1是必要的但还不够),最后一条规则重写所有数据包标头,就好像来自传出接口一样,以便回复再次通过 DEV2 路由;中间的两条规则重写数据包标头,以便数据包从 DEV1 发送到 DEV3(规则 n.2)以及从 DEV3 发送到 DEV1(规则 n.3)。

这种设置的优点是它很干净:所有协议和所有端口都同时路由,无需添加不必要的复杂性。

警告:DEV1上的interface1和DEV2上的interface2属于同一子网,这很奇怪,因为你说两者被路由器分开:根据定义,路由器连接两个清楚的子网。因此,router1 是不是路由器,或者,如果是,则其配置有错误,因为它两侧都被相同的网络包围。我假设是前者,而不是后者。

相关内容