深入理解 IP 伪装与网络地址转换
1. 网络现状与问题
曾经,只有大型组织才有能力通过局域网将多台计算机连接在一起。但如今,网络技术成本大幅下降,带来了两个变化。一方面,局域网变得十分普遍,甚至在许多家庭环境中也能见到,很多 Linux 用户会用以太网连接两台或更多计算机。另一方面,网络资源,尤其是 IP 地址,变得稀缺,过去免费的 IP 地址如今开始被买卖。
大多数拥有局域网的人希望局域网内的每台计算机都能使用互联网。然而,IP 路由规则在处理这种情况时非常严格。传统的解决方案是申请一个 IP 网络地址(如小型站点可能申请 C 类地址),为局域网内的每台主机分配该网络中的一个地址,并使用路由器将局域网连接到互联网。但在商业化的互联网环境中,这种方案成本高昂。首先,需要为分配到的网络地址付费;其次,可能还需向互联网服务提供商付费,以确保互联网其他部分能找到该网络。这种方式对企业或许可行,但对家庭用户来说成本往往难以接受。
2. Linux 的解决方案:IP 伪装与网络地址转换
幸运的是,Linux 提供了一种解决方案,即网络地址转换(Network Address Translation,NAT)。NAT 是指在数据报传输过程中修改其头部的网络地址。IP 伪装是 NAT 的一种类型,它允许私有网络上的所有主机以一个公共 IP 地址访问互联网。
IP 伪装的工作原理如下:当 Linux 路由器从局域网计算机接收到数据报时,它会记录数据报的类型(如 TCP、UDP、ICMP 等),并修改数据报,使其看起来像是由路由器本身生成的,同时记住这一操作。然后,路由器使用其唯一的公共 IP 地址将数据报发送到互联网。当目标主机收到数据报时,会认为它