什么是内核IP转发?

Mad*_*uja 91 linux routing ip kernel

我在很多博客上看到,在linux上使用许多网络安全/嗅探工具的同时,使用此命令启用IP转发

echo 1 > /proc/sys/net/ipv4/ip_forward
Run Code Online (Sandbox Code Playgroud)

任何人都可以用外行的术语解释我,这个命令本质上是做什么的?它能把你的系统变成路由器吗?

Law*_*ceC 107

“IP 转发”是“路由”的同义词。之所以称为“内核 IP 转发”,是因为它是 Linux 内核的一个特性。

一个路由器有多个网络接口。如果流量进入与另一个网络接口的子网匹配的一个接口,路由器然后将该流量转发到另一个网络接口。

因此,假设您有两个 NIC,一个 (NIC 1) 位于地址 192.168.2.1/24,另一个 (NIC 2) 位于 192.168.3.1/24。如果启用转发,并且数据包进入 NIC 1,其“目标地址”为 192.168.3.8,路由器将从 NIC 2 重新发送该数据包。

用作 Internet 网关的路由器通常具有默认路由,任何不匹配任何 NIC 的流量都将通过默认路由的 NIC。因此,在上面的示例中,如果您在 NIC 2 上有 Internet 连接,您可以将 NIC 2 设置为默认路由,然后来自 NIC 1 的任何流量都不会发往 192.168.2.0/24 上的某些内容通过 NIC 2。希望有其他路由器可以通过 NIC 2 进一步路由它(在 Internet 的情况下,下一跳将是您的 ISP 的路由器,然后是其提供商的上游路由器等)

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

在进行路由时,安全性很重要,这就是 Linux 的数据包过滤器iptables所涉及的地方。因此,您将需要一个iptables符合您需求的配置。

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

  • 是的,如果 NIC 2 是私有 IP,您将需要进行 NAT。Linux 也可以做 NAT,`iptables` 是设置它的方法。 (2认同)
  • 通常 NAT 会从 LAN 到 WAN 工作,所以如果 NIC 2 有一个私有 IP,而 NIC 1 有一个公共 1,你确实需要 NAT;具体来说,面向互联网的接口(每个上面的 NIC 1)需要在链上的 `iptables` 的 `POSTROUTING` 中的 `MASQUERADE` 规则来做到这一点。请参阅 http://www.revsys.com/writings/quicktips/nat.html 和 http://i.stack.imgur.com/rzz83.png。 (2认同)

小智 10

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

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