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


26

我用Google搜索了很多东西。它只记录了如何在Linux内核中启用IP转发,而没有WHENWHY我必须启用它。我会很感激的建议。

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

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

非常感谢你!

一月


它基本上是用于网络间的pkt传输,而不是用于接口间的传输。我的意思是,如果两个接口位于同一网络中,我们不需要在服务器上启用IP转发,我相信....仅适用于两个网络或LANS之间的服务器.....希望有帮助:D

Answers:


32

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

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

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

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

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

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


基本上,如果您不将计算机用作路由器,即,如果未安装2个网卡,则不要启用IP转发。
LawrenceC

感谢您的回答:是IP数据包通过接口的要求还是集中于“通过网络边界”,即“进程间通信”也需要IP转发(如果跨越网络边界)?其次,这仅适用于跨不同网络的数据包(例如xxx.xxx.xxx.xxx/24和yyy.yyy.yyy.yyy / 24)还是同一网络中从一个接口到另一个接口的小包?谢谢。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.