从DNS解析到NAT穿透:网络通信三大基石的技术内幕与实践

张开发
2026/4/19 2:49:21 15 分钟阅读

分享文章

从DNS解析到NAT穿透:网络通信三大基石的技术内幕与实践
1. DNS解析互联网世界的电话簿想象一下你要给朋友打电话但记不住他的手机号。这时候你会怎么做大多数人会翻开通讯录查找名字对应的号码。DNS域名系统就是互联网世界的通讯录把人类友好的域名如www.baidu.com转换成机器能识别的IP地址如14.215.177.39。我在排查网站访问问题时发现90%的初级网络故障其实都源于DNS解析问题。比如上周有个用户反馈无法访问公司内网系统结果发现是他电脑的DNS服务器设置成了8.8.8.8谷歌公共DNS而内网域名需要公司本地DNS服务器才能解析。域名解析的完整过程就像一场精心设计的接力赛浏览器首先检查自己的缓存比如Chrome会缓存最近访问的域名查询操作系统缓存Windows的DNS Client服务会缓存记录查找本地hosts文件这个上古时代的遗物至今仍有妙用向配置的DNS服务器发起递归查询DNS服务器进行迭代查询从根域名服务器→顶级域名服务器→权威域名服务器用dig命令可以清晰看到这个过程dig trace www.baidu.com这个命令会显示查询如何从根域名服务器开始逐步向下追踪。有趣的是你会发现www.baidu.com实际上被CNAME到了www.a.shifen.com这是百度使用的CDN域名。2. ICMP网络世界的健康检查员去年我们机房搬迁时遇到个典型问题新服务器能ping通网关却无法上网。这就是ICMP协议在发挥作用——它像网络医生一样告诉我们病人能到达网关但网关说它不会转发你的包ICMP类型3代码7。ICMP报文主要分两大类错误报告报文当路由器发现数据包有问题时如TTL超时、目的不可达就会发送这类报文查询报文用于网络诊断最典型的就是ping使用的Echo Request/Replyping命令的实战技巧ping -c 4 -i 0.5 -s 1472 www.baidu.com-c 4发送4个包后停止-i 0.5每隔0.5秒发送一次-s 1472设置数据包大小为1472字节用于测试MTU有个容易混淆的概念很多人以为ping用的是TCP或UDP实际上它完全工作在IP层之上根本不涉及传输层。这也是为什么防火墙可以单独配置是否允许ICMP流量。3. NAT家庭网络的翻译官我家里的智能设备越来越多15个以上但电信只给分配了一个公网IP。这就要靠NAT网络地址转换技术它像同声传译一样把内网设备的私有IP翻译成公网IP。典型家庭网络的数据流手机192.168.1.100访问百度服务器路由器将源IP替换为公网IP如120.229.76.135在NAT表中记录映射关系192.168.1.100:54321 ↔ 120.229.76.135:62001百度响应数据到达路由器后根据端口号62001找到对应内网设备NAPT网络地址端口转换是更高级的实现解决了多人同时访问同一服务的问题。比如我和邻居都访问百度我的数据包被映射为公网IP:62001邻居的数据包被映射为公网IP:62002路由器通过不同端口区分流量NAT的局限性在视频会议等场景特别明显打洞困难P2P应用需要额外技术如STUN/TURN连接数限制家用路由器NAT表通常只能维护几千条映射协议兼容性某些应用层协议内嵌IP地址如FTP4. 三大技术的协同作战当你在咖啡馆用笔记本访问网站时这三个技术是这样配合的DNS解析阶段浏览器发起DNS查询请求查询经过咖啡馆路由器→运营商DNS→根域名服务器最终获得目标服务器IP如203.119.128.156网络连通性检查隐式系统可能自动ping网关检查基本连通性如果DNS查询超时会触发ICMP错误报告NAT穿透阶段你的笔记本IP如192.168.0.105被路由器NAT转换外出数据包源IP变为咖啡馆公网IP返回数据包根据NAT表映射回你的笔记本实际案例我在调试智能家居时遇到个典型问题——外网无法访问家里的NAS。排查发现DNS解析正常确认域名指向正确公网IPICMP测试显示网络通畅问题出在路由器NAT规则未正确配置端口转发解决方案是在路由器添加一条DNAT规则外部端口5000 → 内网NAS IP:50005. 进阶实战用Wireshark分析网络流量要真正理解这些协议如何工作没有比抓包分析更直观的了。以下是关键过滤表达式DNS流量dns ip.dst你的DNS服务器IPICMP流量icmp || icmpv6NAT相关流量在内网设备抓包not ip.src192.168.0.0/16 not ip.dst192.168.0.0/16通过对比内外网抓包可以清晰看到NAT如何修改IP头部。比如内网看到的源IP是设备私有IP而在外网抓包看到的则是公网IP。6. 常见问题排查指南症状能ping通但无法上网检查DNS设置nslookup测试确认NAT转换正常traceroute查看路径防火墙是否拦截测试特定端口telnet症状间歇性连接失败可能是NAT表项超时被清除尝试调整路由器NAT超时时间通常默认5分钟检查ICMP限速配置某些设备会限制ping频率企业网络特殊场景多出口NAT不同业务走不同公网IPDNS分流内网域名走本地DNS外网走公共DNSICMP策略允许必要的诊断报文但防范Ping Flood攻击在云原生环境下这些传统技术也焕发新生。比如Kubernetes的kube-proxy就实现了类似NAT的功能Service的IP其实就是个虚拟IP通过iptables或IPVS实现类似DNAT的转发。

更多文章