我在很多博客上看到,在linux上使用很多网络安全/嗅探工具时,使用这个命令来启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
谁能用通俗的语言解释一下这个命令的本质是什么?它会将您的系统变成路由器吗?
答案1
“IP 转发”是“路由”的同义词。之所以称为“内核IP转发”,是因为它是Linux内核的一个特性。
路由器有多个网络接口。如果一个接口上的流量与另一个网络接口的子网匹配,则路由器会将该流量转发到另一个网络接口。
因此,假设您有两个 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 上有互联网连接,则可以将 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 或您无法控制的子网,则在禁用和/或不考虑防火墙和安全性的情况下 启用转发可能会让您面临漏洞。
答案2
启用后,“IP 转发”允许 Linux 计算机接收传入数据包并转发它们。充当普通主机的 Linux 计算机不需要启用 IP 转发,因为它只是出于自己的目的(即其用户的目的)生成和接收 IP 流量。
然而,在某些情况下,IP 转发是有用的: 1. 我们希望我们的机器充当路由器,接收来自其他主机的数据包并将其路由到目的地。 2. 我们是坏人,我们想以所谓的“方式冒充另一台机器”中间人攻击在这种情况下,我们希望拦截并查看所有定向到受害者的流量,但我们也希望将此流量转发给她,以便她不会“感知”我们的存在。