场景:在!家里!(默认电信猫,企业部署的网关经配置可解决)内网搭建了一台服务器,地址ip:192.168.1.X,对外公网ip:1.1.1.X;现在内网有台设备想通过访问1.1.1.X,但是发现无法访问。
原因:1、表面上看,家庭环境下,nat转换发生在网关,所以大家觉得nat是设备的功能,数据包到达设备就能触发。实际在实现细节上,nat的触发条件是发生在端口上,也可以说成区域上。
2、对于网关设备,分为进域和出域,域又包括网关上的各类网络接口组。一般网关如电信猫,nat的触发(包括nat条目)设置在出域的某些或全部接口组上,数据包从内网到达网关的进域口,若进域口没有开启nat,则不会触发nat。
3、因此,当外网用户访问公网ip+端口的数据包到达出域口,出域口根据nat将其目的地址转换为内网ip+端口,并交付路由转发出去;
而当内网用户访问网关的公网ip+端口的数据包到达进域后,进域口交付给路由的目的地址仍为公网ip+端口,网关认为是这是给自己的数据包,但是自己并未开启端口对应的服务,因此丢弃。(经实测,内网服务器上确实没有收到任何相关数据包)。