IP 转发 = 何时以及为什么需要这样做?

jan*_*jan 37 networking linux

我用谷歌搜索了很多。它只记录了如何在 linux 内核中启用 IP 转发,但没有记录WHENWHY我必须启用它。我会很感激的建议。

何时以及为什么必须启用它?(例如,当我安装网桥时?,或使用 iptables 时?或使用时route add?)

(好的链接值得赞赏,但我找不到一个。)

非常感谢!

Phi*_*ack 41

当您希望系统充当路由器时,应启用 IP 转发,即将 IP 数据包从一个网络传输到另一个网络。

在最简单的情况下,考虑一个带有两个物理以太网端口的服务器,该端口旨在连接到两个不同的网络(比如您的内部网络和由 DSL 调制解调器提供的外部世界)。如果您只连接并配置这两个接口,系统就可以在任一网络上进行通信。但是,来自一个网络的数据包无法传输到另一个网络,因为转发未启用。

考虑“路由添加”的具体示例。如果您有两个网络接口,您将至少添加两条路由,每个接口一条。当内核考虑将网络数据包发送到哪里时,它会选择最具体的适用路由,然后将其发送到该接口。

但是,如果转发关闭,内核将首先检查数据包来自哪个接口。如果它不是来自同一个接口,内核将丢弃它。

编辑:首先请注意,您可以使用没有两个物理网络接口的路由器。例如,如果您使用VLAN,您的服务器可以在VLAN之间传输 IP 数据包,但只有一个物理网络接口。这称为单臂路由器。然而,对于最简单的情况,是的,您可以说如果您只有一个物理网络接口,那么您不需要启用 IP 转发。

IP 转发涉及在网络接口(真实或虚拟)之间传输数据包,因此我认为如果您在同一网络上有两个接口,则必须启用 ip 转发以允许数据包在接口之间移动。但是,由于接口已经在同一网络上,因此在它们之间传输数据包似乎没有多大意义。