网络地址转换双向转换过程是怎么回事
家里用路由器上网的朋友可能都遇到过这种情况:手机连Wi-Fi能正常刷视频,但别人从外网想访问你家摄像头的实时画面却连不上。问题出在哪儿?其实背后就是网络地址转换(NAT)在起作用,尤其是它的双向转换过程。
NAT的主要任务是把内网私有IP地址转换成公网IP地址,让多个设备共用一个公网出口。比如你家路由器分配给手机的是192.168.1.100,这个地址在外网不被识别,路由器就会用自己的公网IP做中转。
数据从内网到外网的转换
当你用手机打开网页时,请求先发到路由器。路由器记下你的私有IP和使用的端口号,比如192.168.1.100:50000,然后把它替换成自己的公网IP和一个新的端口,比如203.0.113.10:61000。这个映射关系会被存进NAT表里。
服务器收到请求后,看到的来源是203.0.113.10:61000,回信自然也发到这里。路由器拿到回包后查表,发现61000对应的是内网192.168.1.100的50000端口,就把目标地址改回去,转发给你的手机。这就是最基础的出站转换。
外网主动访问内网的路径怎么打通
可如果反过来,有人想从外网直接访问你家的设备,比如远程查看监控,事情就复杂了。因为NAT表里没有预先建立的记录,路由器不知道该把数据包转给谁。
这时候就需要双向转换机制介入。常见做法是在路由器上设置端口映射(Port Forwarding)。比如把公网IP的554端口映射到内网摄像头的192.168.1.50:554。这样外部请求到达203.0.113.10:554时,路由器就知道该转发给谁。
iptables -t nat -A PREROUTING -p tcp --dport 554 -j DNAT --to-destination 192.168.1.50:554上面这条命令就是在Linux路由器上配置DNAT规则,实现外网到内网的地址转换。配合SNAT或MASQUERADE规则,就能完成完整的双向通路。
实际使用中的小细节
不是所有场景都需要手动配规则。现在很多家用设备支持UPnP(通用即插即用),能自动向路由器申请端口映射。比如你装个P2P下载软件,它会自己请求开放某个端口,省去手动设置的麻烦。
但这也带来安全风险。一旦设备被入侵,可能悄悄打开端口引狼入室。所以有些企业网络干脆禁用UPnP,改用防火墙策略精确控制进出流量。
还有一种情况是两个内网设备互访,比如公司分部之间传文件。两边都在NAT后面,直接连不通。这时候可以用STUN/TURN这类穿透技术,借助公网服务器协助建立连接,也算双向转换的一种延伸应用。