折腾过家庭服务器、NAS或者远程桌面的朋友,大概率都遇到过这个场景:在家的NAS上跑了个服务,局域网里访问得好好的,一出门用手机流量就打不开了。
然后就开始搜,越搜越迷糊------公网IP、NAT、端口映射、内网穿透......每个词都跟"外网访问不了"有关系,但又说不清到底是什么。
这篇文章用一个家庭网络的场景,帮你把这些概念一次性捋清楚。
一、内网IP:你家里的房间号
你家里的设备通常有这些地址:
-
电脑:
192.168.1.23 -
NAS:
192.168.1.50 -
手机:
192.168.1.66
这些都是内网IP,只在你家的局域网里有意义。可以把它理解成家里的房间号------客厅是101,卧室是102,书房是103。在你家里,这些编号能区分不同的设备。
但外面的人问你"你家192.168.1.50在哪",是没法回答的。这些地址不是全球唯一的,就像每个小区都可以有1栋101------你只说"1栋101",出了小区就定位不到了。
一句话总结:内网IP解决的是家里设备之间怎么互相找到,解决不了外面的人怎么找到你。
二、公网IP:互联网上能找到的门牌号
要想让外网访问到你,理论上需要一个互联网上能路由到的地址,也就是公网IP。
你的公网IP:203.0.113.45
外面的请求先找到这个地址,然后再由你的路由器决定转给家里哪台设备。
早些年,很多家庭宽带确实能拿到独立的公网IPv4,在路由器上配好端口映射,外面就能直接访问进来。但现在IPv4地址快用完了,运营商不得不让多个用户共享一个公网出口,这就引出了下一个概念。
三、NAT:一堆设备共用一个出口
你家里有电脑、手机、NAS、电视都在上网,但公网IP通常只有一个。怎么办?路由器会做一件事:把这些设备的请求统一转换成家庭出口地址发出去。外部网站看到的不是每台设备的内网IP,而是你家这一个公网IP。
打个比方:这就像公司的前台,公司里有200个员工,但对外只有一个总机号码。员工往外打电话,前台帮忙转接,对方回电时前台再根据记录转给对应的员工。
这就是NAT(网络地址转换) 的本质。它让多个内网设备可以共用一个公网出口。
从内到外访问的时候,NAT工作得很顺畅。因为是家里设备主动发起的请求,路由器记了账,回来的数据知道该给谁。但反过来,如果外面突然来了一个请求:"我要访问你家公网IP的8080端口"------路由器就懵了。给电脑?给NAS?给手机?没规则它不敢乱转。
一句话总结:NAT的核心矛盾就是"出去容易,进来难"。
四、端口映射:给路由器一张转发表
还是那个场景:你在NAS上跑了一个Web服务,地址是192.168.1.50:8080。在家里访问没问题,但外面的人只能看到你家的公网入口。这时候就需要端口映射,在路由器上配一条规则:
公网IP:8080 → 192.168.1.50:8080
意思是:外面访问8080端口的请求,全部转给NAS。
打个比方:这就像小区门口保安手里有一张转发表------看到找8080的,直接送到192.168.1.50这个房间。
但这里有一个关键前提:外部请求必须先到你家路由器。如果你在运营商的CGNAT(运营商级网络地址转换)后面,请求可能到运营商那一层就停了,根本到不了你家路由器。这时候你在路由器上配再多端口映射也没用。很多人端口映射失败,问题就卡在这里------不是规则写错了,而是没有真正可访问的公网入口。
五、怎么判断自己有没有公网IP?
方法很简单,看两个地方:
-
登录路由器后台,看WAN口拿到的IP地址。
-
访问
ip.sb或ifconfig.me,看外部网站看到的你的IP。
如果两个地址一样,大概率你有公网IP。如果不一样,说明你在NAT后面。
另外,如果WAN口IP是以下这些段,基本就不是公网IPv4:
-
10.x.x.x -
172.16.x.x - 172.31.x.x -
192.168.x.x -
100.64.x.x - 100.127.x.x(运营商CGNAT专用段)
这时候要么打电话给运营商申请公网IP(部分地区可以免费申请),要么考虑其他方案。
六、没有公网IP怎么办?
最常见的解法是内网穿透。常见的工具有frp、Cloudflare Tunnel、Tailscale、ZeroTier、ngrok等。
它们的思路其实很统一:既然外面不能主动打进来,那就让家里的设备先主动连出去。
打个比方:你家设备主动给外面的中转服务器"打了一个电话":"我在这里,有人找我就从这条线转回来。"
这条连接是从内网主动发起的,NAT不会拦它。之后外部用户访问中转服务器,中转服务器再通过这条已经建立好的通道把请求转回你家设备。
所以内网穿透不是让外网直接找到你,而是绕开了"外部请求进不来"的问题。代价是,它依赖中转服务,速度和稳定性受节点影响。而且安全配置不能马虎------该加认证加认证,该限制访问范围就限制,别把家里的NAS、摄像头管理后台直接暴露出去。
七、那IPv6呢?
现在很多家庭宽带虽然没有公网IPv4,但会分配IPv6地址。IPv6地址空间极大,家里的设备通常能拿到公网可路由的IPv6地址,这意味着外部有机会直接访问。
听起来很美好,但也意味着暴露面变大了。IPv4下NAT天然充当了一层"门卫",IPv6下这层保护没了,你需要认真配置防火墙:哪些端口开放、哪些设备可访问、哪些服务限制来源,都得自己管。
一句提醒:能用IPv6解决一部分公网入口问题,但"能直接访问"也意味着"能攻击",安全配置必须跟上。
八、几个常见误区
-
误区一:我能访问外网,所以外网也能访问我。 不对。你能访问外网是因为你主动发起连接,NAT记了账。外网访问你是别人主动找你,NAT不知道该转给谁。两回事。
-
误区二:我配了端口映射就一定能访问。 不一定。端口映射的前提是请求能到你家路由器。如果你在CGNAT后面,请求半路就停了。
-
误区三:内网穿透绝对安全。 不对。内网穿透只是解决了访问路径问题,认证、权限、防火墙、日志一样不能少。
总结
公网IP、NAT、端口映射这事其实不复杂,记住三句话就行:
-
内网IP是自家门牌,只在家里管用;公网IP是互联网门牌,全世界都能找。
-
NAT让全家共享一个门牌号出门,但外面的人按门铃,家里没人知道该谁开。
-
端口映射是门口贴了张转发表,告诉访客找谁该走哪扇门。
如果门牌号(公网IP)是假的,贴再多转发表也白搭------访客根本找不到你家门口。这时候要么找运营商换真门牌,要么让家里设备主动打长途电话(内网穿透)等着接人。