什么是内核ip转发?


Answers:


77

“ IP转发”是“路由”的同义词。因为它是Linux内核的功能,所以被称为“内核IP转发”。

路由器具有多个网络接口。如果流量在与另一个网络接口的子网匹配的一个接口上传入,则路由器会将流量转发到另一个网络接口。

因此,假设您有两个NIC,一个(NIC 1)在地址192.168.2.1/24,另一个(NIC 2)在192.168.3.1/24。如果启用了转发功能,并且“目的地址”为192.168.3.8的数据包进入NIC 1,则路由器将把该数据包重新发送出NIC 2。

用作Internet网关的路由器通常具有默认路由,即与任何NIC不匹配的任何流量都将通过默认路由的NIC。因此,在上面的示例中,如果您在NIC 2上建立了Internet连接,则将NIC 2设置为默认路由,然后来自NIC 1的任何流量都不会发送到192.168.2.0/24上希望通过NIC2。还有其他可以通过NIC 2进行路由的路由器(对于Internet,下一跳是您的ISP的路由器,然后是它们的提供者的上游路由器,等等)。

启用ip_forward告诉您的Linux系统执行此操作。为了使它有意义,您需要两个网络接口(任何两个或多个有线NIC卡,Wifi卡或芯片组,56k调制解调器或串行接口上​​的PPP链接等)。

在进行路由时,安全性很重要,这就是Linux的数据包筛选器iptables参与其中的地方。因此,您将需要iptables与您的需求一致的配置。

请注意,iptables如果其中一个NIC面对Internet或您无法控制的子网,则在禁用和/或不考虑防火墙和安全性的情况下启用转发可能会使您容易受到漏洞攻击。


2
正确,如果NIC 2是专用IP,则需要进行NAT。Linux也可以做NAT,这iptables是设置它的方法。
LawrenceC

从NIC 2到NIC 1的数据是否需要NAT?
GutenYe 2014年

2
通常,NAT将在LAN到WAN之间工作,因此,如果NIC 2具有专用IP,而NIC 1具有公用IP,则您确实需要NAT;具体地,面向网络接口(NIC 1每以上)需要MASQUERADE在规则iptablesPOSTROUTING一个链来做到这一点。参见revsys.com/writings/quicktips/nat.htmli.stack.imgur.com/rzz83.png
LawrenceC 2014年

简而言之,如果我说启用IP转发意味着使机器能够将数据包从其一个NIC传递到另一个NIC,是否正确?另外,如果我说在具有单个IP / NIC的计算机上确实不需要启用IP转发,那会是真的吗?
2014年

1
@ultrasawblade如果启用了IP转发,并且在NIC 2上具有Internet连接,并且作为默认路由,则如果它从NIC 1收到发往192.168.2.2的数据包,路由器将如何处理?
bobo

3

启用后,“ IP转发”允许Linux计算机接收传入的数据包并转发它们。充当普通主机的Linux机器不需要启用IP转发,因为它只是出于自身目的(即,其用户的目的)生成和接收IP流量。

但是,在某些情况下IP转发很有用:1.我们希望我们的机器充当路由器,从其他主机接收数据包并将其路由到目的地。2.我们是坏人,我们想在所谓的“ 中间人攻击 ”中模仿另一台机器。在这种情况下,我们要拦截并查看所有流向受害者的流量,但我们也想将此流量转发给她,这样她就不会“感觉”到我们的存在。

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.