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

Modified on: Sun, 24 Mar 2019 09:40:03 +0800

我用谷歌搜索了很多。它只记录了如何在Linux内核中启用IP转发,但不是如何启用它以及为什么我必须启用它。我会感谢你的建议。

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

(很感谢良好的链接,但我找不到。)

非常感谢!

最佳答案

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

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

考虑'route add'的具体示例。如果您有两个网络接口,则将至少添加两个路由,每个路由一个。当内核考虑在何处发送网络数据包时,它将选择最具体的适用路由,然后将其发送到该接口。

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

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

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


相关问答

添加新评论