linux nat网关配置

  1. 定义
    • NAT(Network Address Translation):网络地址转换是一种在 IP 数据包通过路由器或防火墙等设备时,对源 IP 地址和 / 或目的 IP 地址进行修改的技术。在 Linux 系统中,通过配置 NAT,可以让使用私有 IP 地址的内部网络主机访问外部网络(如互联网),并且可以对外隐藏内部网络的拓扑结构和 IP 地址分配情况。
  2. 工作原理
    • 源 NAT(SNAT)
      • 当内部网络中的主机(使用私有 IP 地址,如 192.168.0.0/16、10.0.0.0/8 等网段)向外部网络发送数据包时,Linux NAT 设备会将数据包的源 IP 地址(内部主机的私有 IP)替换为 NAT 设备自身的公网 IP 地址。例如,内部主机 A 的 IP 地址为 192.168.1.10,NAT 设备的公网 IP 是 202.100.100.100。当主机 A 访问外部网站时,数据包的源 IP 地址会被转换为 202.100.100.100,这样外部网络看到的请求来源就是 NAT 设备的公网 IP。
      • 同时,NAT 设备会记录下这个转换关系(如 192.168.1.10 – > 202.100.100.100),当外部网络返回响应数据包时,NAT 设备根据这个记录,将目的 IP 地址从 202.100.100.100 转换回 192.168.1.10,从而使内部主机能够正确接收响应。
    • 目的 NAT(DNAT)
      • 主要用于将外部网络访问 NAT 设备公网 IP 的特定端口的流量,转发到内部网络的特定主机和端口。例如,将外部网络访问 NAT 设备公网 IP 的 80 端口的流量,转发到内部网络中的 Web 服务器(如 192.168.1.20)的 80 端口。这样,外部用户就可以通过访问 NAT 设备的公网 IP 来访问内部网络中的服务。
    • 端口地址转换(PAT)/ 伪装(Masquerade)
      • PAT 是 SNAT 的一种特殊形式。当多个内部主机同时访问外部网络时,NAT 设备会通过改变源端口号来区分不同的内部主机流量。例如,内部主机 A 和主机 B 都访问外部网站,NAT 设备会将主机 A 的数据包源 IP 转换为自己的公网 IP,同时为其分配一个源端口(如 1000),将主机 B 的数据包源 IP 也转换为自己的公网 IP,但分配另一个源端口(如 1001)。这样,即使多个内部主机共享一个公网 IP,也能正常访问外部网络。
      • Masquerade 与 PAT 类似,不过它更加智能,不需要指定固定的公网 IP 地址。当 NAT 设备的外网接口的 IP 地址是通过动态获取(如 DHCP)的情况下,使用 Masquerade 可以自动适应 IP 地址的变化,将内部主机的数据包源 IP 伪装成当前外网接口的 IP 地址。
  3. 应用场景
    • 共享上网:在家庭或小型办公室网络中,通过 Linux NAT 网关,多个内部设备(如计算机、智能手机等)可以使用一个公网 IP 地址访问互联网,节省公网 IP 资源。
    • 服务器隐藏与安全防护:可以隐藏内部服务器的真实 IP 地址,将外部对特定服务(如 Web 服务、邮件服务等)的访问请求转发到内部服务器,增加服务器的安全性,减少直接暴露在互联网上的风险。
    • 网络地址扩展:在企业网络中,当内部网络的 IP 地址规划(如使用私有 IP 地址)与外部网络不兼容时,NAT 可以帮助实现内部网络和外部网络之间的通信。

步骤

vi /etc/rc.local
iptables -A FORWARD -j ACCEPT
iptables -t nat -I POSTROUTING -j MASQUERADE
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p

Related Post