SNAT和DNAT
NAT介绍
NAT网络地址转换(Network Address Translation)是一种常见的网络技术,主要用于私有网络和公共网络之间通信。
DNAT
DNAT介绍
DNAT目标地址转换(Destination Network Address Translation)是NAT的一种形式,主要将外部网络的目标IP地址转换为内部网络中的IP地址
DNAT示例
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.100:80
SNAT
SNAT介绍
SNAT原网络地址转换(Source Network Address Translation)是NAT的一种形式,主要将内部网络的源IP地址转换为外部网络中的IP地址
SNAT示例
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j SNAT --to-source 203.0.113.10
Kubernetes网络问题分析
问题现象
Pod访问外部服务时,在宿主机抓包发现同一请求出现两次:
- Pod IP (100.64.25.264) → 外部服务
- 节点 IP (xx.xx.22.38) → 外部服务
时间戳显示两次请求间隔32微秒,响应也有对应的两次。
排查过程
- 确认100.64.x.x为Pod IP,非Service IP
- 检查应用层无重复请求逻辑
- 排除负载均衡和Ingress转发问题
- 分析iptables规则发现SNAT配置

根本原因
Kubernetes SNAT机制导致
Pod访问外部服务时自动触发源地址转换,原始请求(Pod IP)经SNAT转为节点IP,宿主机抓包能看到NAT前后的两个数据包,32微秒延迟为SNAT处理时间,属正常范围
结论
此为Kubernetes网络正常行为,并非故障,SNAT确保外部服务流量能正确返回到集群内部
Enjoy Reading This Article?
Here are some more articles you might like to read next: