一、SNAT原理与应用

1.1 SNAT应用环境

局域网主机通过共享单个公网IP地址接入Internet。由于私有IP地址在Internet中无法正常路由,因此需要使用源地址转换(SNAT)技术。

1.2 SNAT原理

SNAT涉及源地址转换,即根据特定条件改变数据包的源IP地址,这个过程通常被称为源映射。

1.3 SNAT转换前提条件

  1. 局域网中的各主机必须已正确配置IP地址、子网掩码、默认网关。
  2. Linux网关需开启IP路由转发。由于Linux系统本身不具备数据转发功能,仅具备路由发送功能,以下是开启IP转发的方法:
    • 临时开启:

      echo 1 > /proc/sys/net/ipv4/ip_forward
      # 或者
      sysctl -w net.ipv4.ip_forward=1
      
    • 永久开启:

      vim /etc/sysctl.conf
      # 添加以下行
      net.ipv4.ip_forward = 1
      # 保存退出,然后应用配置
      sysctl -p
      

1.4 SNAT转换操作

  • 固定的公网IP地址:

    iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to 10.0.0.1
    # 或者指定一个IP地址范围
    iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j SNAT --to-source 10.0.0.1-10.0.0.10
    
  • 非固定的公网IP地址(动态IP):

    iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
    

1.5 小知识扩展

一个IP地址通过SNAT转换,一般可以使内网中100至200台主机实现上网功能。

二、DNAT原理与应用

2.1 DNAT应用环境

DNAT用于在Internet中公开发布位于局域网内的服务器,从而保护内网服务器的安全性。

2.2 DNAT原理

DNAT涉及目的地址转换,根据指定条件修改数据包的目的IP地址,通常被称为目的映射。

2.3 DNAT转换前提条件

  1. 局域网中的服务器应能够访问Internet。
  2. 网关的外网地址需有正确的DNS解析记录。
  3. Linux网关需开启IP路由转发。

2.4 DNAT转换操作

  • 发布内网的Web服务:

    iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to 192.168.100.13
    # 或者使用目的地详细语法
    iptables -t nat -A PREROUTING -i ens37 -d 10.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.100.13
    
  • 回包处理:

    iptables -t nat -A POSTROUTING -s 192.168.100.100 -o ens33 -j SNAT --to 10.0.0.2
    

2.5 注意事项

使用DNAT时,通常需要配合SNAT使用,以确保响应数据包能正确返回。

2.6 小知识扩展

  • 主机型防火墙主要使用INPUT、OUTPUT链,网络型防火墙主要使用FORWARD链。防火墙规则的设置通常针对具体的IP地址或网段。

此外,可以通过以下命令备份和恢复iptables规则,确保规则的持久性:

iptables-save > /opt/ipt.txt
iptables-restore < /opt/ipt.txt
iptables-save > /etc/sysconfig/iptables

xt
iptables-restore < /opt/ipt.txt
iptables-save > /etc/sysconfig/iptables


此博客为您提供了关于SNAT和DNAT的基本知识,旨在帮助您理解和实施这些网络地址转换技术。
Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐