IP 转发
IP 转发 就是让一台设备(通常是服务器、路由器或Linux主机)扮演"中转站"或"交通警察"的角色,将从一个网络接口收到的数据包,根据目标地址,转发到另一个网络接口,从而让数据包能够到达最终目的地。
简单比喻:
- 关闭 IP 转发 :你的电脑就像一个独栋别墅。邮差(数据包)送来的信,只有收件人是你家地址的,你才收下。收件人是别人的,你直接扔掉。
- 开启 IP 转发 :你的电脑就变成了一个邮局/快递分拣中心。邮差送来一堆信,你不仅会收下自己的信,还会查看那些收件地址是别处的信,然后根据地址列表(路由表)把它们分拣、扔到正确的下一站线路上去。
技术层面的解释
在 TCP/IP 协议栈中,当操作系统的一个网络接口收到一个数据包时,它会进行以下判断:
-
检查目标 IP 地址:这个数据包是发给我的吗?
- 如果是发给本机的(例如,目标 IP 是本机 IP 或
127.0.0.1),则交给上层应用程序处理。 - 如果不是发给本机的,操作系统会接着检查...
- 如果是发给本机的(例如,目标 IP 是本机 IP 或
-
检查 IP 转发功能是否开启:
- 如果关闭(默认状态) :操作系统会直接丢弃这个"不是发给我的"数据包。
- 如果开启 :操作系统会查询自己的路由表 ,根据路由规则,将这个数据包从另一个合适的网络接口发送出去。
所以,开启 IP 转发,就是允许操作系统不丢弃那些需要经由它转发的数据包。
为什么要开启 IP 转发?(应用场景)
普通家用电脑、笔记本完全不需要开启这个功能。它主要用在以下设备或场景中:
-
路由器/网关:这是最典型的应用。你家路由器的 WAN 口接互联网,LAN 口接你的电脑。它必须开启 IP 转发,才能把你电脑的上网请求转发到互联网,并把互联网的回复转发回你的电脑。
-
VPN 服务器:
- 当你连接公司 VPN 时,你的电脑和公司内网变成了一个虚拟的局域网。
- VPN 服务器需要开启 IP 转发,才能在你(远程用户)和公司内部其他服务器之间转发数据。
-
软路由:用一台普通电脑安装专用系统(如 OpenWRT, iKuai)或 Linux/Windows 来充当高性能路由器。这台电脑必须开启 IP 转发。
-
Linux 服务器作为网络中枢:例如,一台 Linux 服务器有多个网卡,分别连接不同的物理网络(如研发部网络、财务部网络),需要它来充当这些网络之间的网关。
-
Docker 容器网络 :Docker 在创建自定义网络或使用
--net=bridge时,宿主机(运行 Docker 的机器)会自动或需要依赖 IP 转发功能,来实现容器与外部网络(如互联网)的通信,以及容器之间的通信。