SNAT原理与配置
SNAT(Source Network Address Translation)用于修改数据包的源IP地址,通常应用于内网设备访问外网的场景。其核心原理是将内网私有IP地址转换为公网IP地址,实现对外通信。
原理:
- 当内网主机发送数据包时,网关识别到该数据包需转发至外网,自动将源IP替换为网关的公网IP。
- 回包时,网关根据NAT表将目标IP还原为内网私有IP,完成数据返回。
配置示例(Linux iptables):
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 203.0.113.1
关键参数:
-s 192.168.1.0/24
:匹配内网子网。-o eth0
:指定外网接口。--to-source 203.0.113.1
:替换为公网IP。
DNAT原理与配置
DNAT(Destination Network Address Translation)用于修改数据包的目标IP地址,通常用于外网访问内网服务的端口映射。
原理:
- 外网请求到达网关时,网关根据DNAT规则将目标IP替换为内网服务器IP。
- 内网服务器响应时,网关反向转换源IP(通常结合SNAT),确保数据包返回外网请求者。
配置示例(Linux iptables):
iptables -t nat -A PREROUTING -d 203.0.113.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
关键参数:
-d 203.0.113.1
:匹配公网IP。--dport 80
:匹配目标端口。--to-destination 192.168.1.100:80
:转发至内网服务器。
SNAT与DNAT对比
应用场景:
- SNAT:内网主动访问外网(如员工上网)。
- DNAT:外网主动访问内网服务(如Web服务器暴露)。
配置方向:
- SNAT作用于
POSTROUTING
链(出站时修改源IP)。 - DNAT作用于
PREROUTING
链(入站时修改目标IP)。
数据包修改字段:
- SNAT仅修改源IP,DNAT仅修改目标IP。
- DNAT通常需结合SNAT(MASQUERADE)实现双向通信。
典型工具:
- 通用:iptables/nftables(Linux)、NAT网关(云平台)。
- 云服务:AWS的NAT Gateway(SNAT)、ALB的端口映射(DNAT)。