做网络这行久了,总会碰到有人拿着电脑截图跑来问:明明电脑上显示的IP是192.168开头的,为什么网上查出来的出口IP却是另一个地址?两个都是IP,怎么就对不上?每次遇到这种问题,我都得从零解释一遍公共IP和私有IP的区别。今天干脆把这套东西完整写出来,从原理到实操,从查看命令到排查思路,一次说透。这篇文章适合正在学网络基础的学生、刚入行的运维新手,以及家里捣鼓路由器、NAS、远程访问的折腾党,看完你至少能搞清楚三件事:这俩IP到底差在哪、你手里的地址究竟是公是私、以及内网设备怎么才能被外网找到。
1. 先搞明白:IP地址到底是什么,为什么非要分公和私
1.1 IP地址就是网络世界的门牌号
要理解公共IP和私有IP的区别,得先回到IP地址本身。你可以把IP地址想象成快递地址——每一台联网设备都要有一个地址,数据包才能准确地送到目的地。IPv4地址是32位的,理论上最多可以编出大约43亿个地址。这个数字听起来吓人,但放到今天的世界里根本不够用:人手一台手机、家里一堆智能设备、公司里每台电脑都要上网,全球设备数量早就把这个地址池挤爆了。
如果每家每户、每台设备都必须要一个全球唯一的IP地址,那地址早就枯竭了。所以设计者想出了一个折中办法:把地址分成两类,一类是公共IP,全球唯一,可以直接被互联网上的任何设备访问;另一类是私有IP,只在局域网内部有效,不同局域网之间完全可以重复使用。这个思路有点像小区里的楼栋号——一个城市里可以有几十个"3栋2单元",只要它们不在同一个小区里,快递小哥就不会送错。
1.2 地址不够用催生了私有IP
很多人以为私有IP是NAT技术出现之后才有的,顺序其实反了。是先有了私有IP的分配规则,NAT才有了用武之地。早年互联网规模小,大家觉得43亿个地址够用,没想到移动互联网一来,设备数量直接指数级增长。如果每个设备都必须分配一个公网IP,运营商手里的地址根本撑不住。
于是互联网工程任务组在前些年制定了一份文档,专门划出了三段IP地址,明确表示这些地址只在内部网络使用,不允许在互联网上被路由。也就是说,公网路由器看到目标是私有IP的数据包,直接丢弃,因为这不是它们的管辖范围。这三段地址后来成了全球所有局域网的"通用地基",不管你是在家还是在公司,看到的192.168、10、172.16这类地址全都出自这里。
1.3 私有IP的官方划定范围
私有IP地址可不是随便定的,它有明确的范围,这段代码级的规矩到今天还在用。完整的三段私有网段如下:
- 10.0.0.0/8:覆盖10.0.0.0到10.255.255.255,最多可容纳约1677万个地址,适合大型企业内部组网。
- 172.16.0.0/12:覆盖172.16.0.0到172.31.255.255,大约104万个地址,不少企业网和部分路由器的默认网段就落在这里。
- 192.168.0.0/16:覆盖192.168.0.0到192.168.255.255,约6.5万个地址,家用路由器最常用的网段。
注意,172.16.0.0到172.31.255.255这一段属于私有,但172.32.0.0及以后的172开头地址就不算了,它们是公网地址。很多教程只说"172开头就是私有",这是不严谨的。
除了这三段,还有几个特殊地址也值得认识:127.0.0.0/8是回环地址,其中127.0.0.1代表本机;169.254.0.0/16是链路本地地址,当设备没从DHCP服务器拿到IP时,系统会自动分配这个范围内的地址,用来在局域网内做临时通信。
2. 公共IP和私有IP的核心区别
2.1 一张表看懂根本差异
公共IP和私有IP的区别,本质上可以归纳成四大维度:全球唯一性、路由范围、分配方式和成本。具体对比如下:
| 对比项 | 公共IP地址 | 私有IP地址 |
|---|---|---|
| 全球唯一性 | 全球范围内唯一 | 只在本地网络内唯一 |
| 可达性 | 互联网上任何节点可直接访问 | 公网默认不可路由,外部无法直接访问 |
| 分配方式 | 向运营商或地址管理机构申请 | 由路由器、DHCP服务器自动分配 |
| 地址数量 | 有限,需合理规划 | 大量复用,互不冲突 |
| 成本 | 通常需付费,静态公网IP更贵 | 免费,局域网内任取 |
| 安全性 | 暴露在公网,需额外防护 | 天然被NAT隔离,外部不易探测 |
这张表里最核心的是前两行:唯一性和可达性。公网IP要保证全球唯一,是因为它要在整个互联网上被当作目的地来路由;私有IP只要在本地网内不撞车就行,出了网谁也不认识它。
2.2 唯一性:公网靠注册,内网靠自觉
公网IP的分配是自上而下的,全球互联网号码分配机构负责把大块地址分给各地区的注册机构,再往下分给运营商、企业和个人。整个过程有登记、有备案,才能保证同一个地址不会被两个人同时占用。而私有IP没有这个流程,你家路由器随手就给设备发一个192.168.1.100,不用去任何机构登记。
这里有个经典的误解:很多人问"我家电脑是192.168.1.100,别人家电脑可能也是192.168.1.100,两个设备会不会冲突?"答案是不会。因为这两台设备不在同一个局域网里,中间隔了各自的NAT网关,数据包在公网上传输时用的根本不是这个地址,所以它们永远不会在公网上相遇。
但在同一个局域网里,私有IP就必须唯一了。如果两台设备都被分配了192.168.1.100,那数据包就不知道该送给谁,这就是后面要说的IP冲突问题。
2.3 可达性:你能不能被人直接找到
这是公网和私有IP最实际的区别。一个设备拥有公网IP,相当于在互联网上挂了一个公开的门牌号,任何地方的人都能按这个地址找到它。家里宽带如果是公网IP,你直接访问这个IP就能连回家里的设备。
私有IP则完全相反,它只在一个封闭网络里生效。公网路由器一看到目标是192.168段的数据包,会直接丢弃,因为这些地址在公网上没有明确归属。所以你在家搭了一个Web服务,监听的是192.168.1.10:8080,外网的人直接访问这个地址是绝对进不来的——他们连路由都找不到。
打个比方,公网IP是城市主干道上的路标,全城的人都能看到;私有IP是小区的门牌号,出了小区再写这个门牌号,快递员根本不知道往哪儿送。要让外面的人访问到内网服务,就得靠NAT端口映射这条"特殊通道",后面会说。
2.4 成本差异:为什么公网IP要花钱
说到底,公网IP是一种稀缺资源。IPv4地址池就那么大,每个公网IP都对应着真金白银的地址空间。普通家庭宽带用户分到的基本是动态公网IP,运营商定期更换,成本已经包含在宽带费里;但想要一个固定的公网IP,比如为了搭服务器、做远程访问,往往要额外申请,费用不低。
企业用户更明显。如果你想在机房托管一台服务器并绑定一个静态公网IP,那IP本身和带宽都是要单独计费的。而私有IP完全免费,你可以在公司内部把一个10.0.0.0/8的网段用掉大半,只要自己规划合理就行。这也是为什么绝大多数企业网络内部都使用私有IP,只有在边界出口才放一两个公网IP做转换。
3. 实操环节:怎么查你的IP是公是私
3.1 Windows下查看本机IP
想确认本机拿到的IP是什么性质,第一个动作就是看网卡地址。Windows系统里,打开命令提示符,输入:
ipconfig回车后能找到IPv4地址一栏,如果显示的是192.168.x.x、10.x.x.x或172.16.x.x到172.31.x.x范围内的地址,那就是私有IP。如果显示的是其他不常见的公网段地址,有可能是设备直接配置了公网IP。
提示:家用电脑几乎都是私有IP,因为电脑接到的是路由器,路由器才是真正连接运营商的那个设备。看到192.168开头完全正常,不用慌。
另外还有几个常用扩展命令:ipconfig /all能查看更详细的信息,包括DHCP服务器地址、网关地址、DNS服务器等;ipconfig /release和ipconfig /renew可以释放并重新获取IP,排查DHCP问题时经常用。
3.2 Linux和macOS下查看
Linux系统的查看方式略有不同,老命令是ifconfig,新系统更推荐用:
ip addr show输出里带inet字样的就是IPv4地址,比如inet 10.0.0.5/24。同样,看它落在哪个网段就知道是不是私有IP。macOS上ifconfig依然好用,另外连上Wi-Fi后也可以在系统设置里看到当前IP地址。
判断私有IP还有一个取巧的办法:不管在哪台设备上,只要IP是10、172.16到172.31、192.168这三个开头之一,基本可以断定是私有地址。这几个网段是有RFC文档规定的,全世界的私有网络都在用,命中概率极高。
3.3 查询你的出口公网IP
知道了本机IP,接下来就该看看你这条宽带真正的公网出口地址是多少。方法很简单,直接在浏览器里访问任意一个"查IP"网站,或者用命令行请求:
curl ifconfig.me curl ip.sb返回的地址就是你当前网络的公网IP。如果你发现这个公网IP和路由器WAN口的IP一致,说明你家宽带是真正拿到了公网IP;如果不一致,说明运营商中间还做了一层网络地址转换,你处在一个运营商级别的大内网里,也就是常说的CGNAT环境。
3.4 怎么判断当前网络有没有公网IP
判断家里宽带是否真有公网IP,有一个非常直观的办法。先查到自己当前的公网IP,然后登录路由器管理页面,看WAN口(互联网接口)获得的IP是多少。如果两者完全一致,恭喜你,你拥有独立的公网IPv4地址。如果路由器WAN口是100.64.x.x、100.65.x.x这类地址,或者是一个私网地址,说明运营商在你家路由器之前又做了一层NAT。
100.64.0.0/10这个网段是运营商级NAT专门使用的共享地址段,看到它基本可以确定你处于大内网环境。在这种环境下,就算你做了端口映射,外网也不一定能访问进来,因为运营商NAT那一层同样会拦截未经过映射的入站连接。遇到这种情况,想远程访问家里设备通常得走其他方案。
4. NAT:私有IP能上网的关键机制
4.1 NAT到底在干什么
既然私有IP在公网上不可路由,那私有网络里的设备是怎么上网的呢?答案就是NAT,网络地址转换。你的路由器在出口处有一个公网IP作为"代言人",局域网内所有设备上网时,路由器会把这个设备的私有IP和端口映射成自己的公网IP加一个新端口,然后发出请求。服务器回应后,路由器再根据记录把数据包转回原来那台内网设备。
这个过程有点像公司前台代收快递:你用的是工位号(私有IP),快递只送到公司前台(公网IP),前台再根据收件人名字转交给你。工位号在外面没有人知道,也没必要知道。因为大多数家庭和中小企业只有一个公网IP,但内部有大量设备,NAT让所有设备共享这一个出口地址,这是IPv4时代解决地址短缺最核心的工程手段。
4.2 端口映射:让外部主动找到内网设备
NAT负责"出站"转换,但"入站"就没那么方便了。外网设备要主动访问你内网的一台服务器,光靠NAT表是不够的,因为路由器不知道这个入站连接该转给谁。这时就需要端口映射,也叫端口转发。在路由器管理页面里找到"端口映射"或"虚拟服务器"选项,设置一条规则:把公网IP的某个端口映射到内网某台设备的某个端口。
举例来说,你在家里一台192.168.1.88的机器上跑了一个Web服务,监听8080端口。在路由器上把外网端口8080映射到192.168.1.88:8080,之后外网用户访问你家公网IP的8080端口,路由器就会把流量转给那台内网机器。这里有两个关键点:第一,内网设备必须设置静态IP或DHCP地址保留,否则IP一变映射就失效;第二,NAT模式和防火墙规则得允许对应端口通行。
4.3 IPv6登场后公私IP还有必要分吗
很多初学者会问:IPv6地址那么充裕,是不是就不需要私有IP和NAT了?答案没那么绝对。IPv6确实为每一台设备都提供了全球唯一地址,理论上每台设备都可以直接拥有一个公网IPv6地址,不需要NAT。但IPv6的世界里依然有私有地址的概念,叫做唯一本地地址,网段是fc00::/7,用途和IPv4私有地址类似,用于局域网内部通信,不上公网路由。
实际部署中,IPv6环境下很多网络仍然会同时配置IPv4的NAT和IPv6的全球地址,形成双栈。对普通用户来说,最直观的感受就是设备上既有IPv4地址,也有IPv6地址。如果想对外提供服务,IPv6地址可以直接用;如果想用IPv4,还是得走映射那套老办法。这个过渡期还会持续相当长的时间。
5. 常见问题与排查技巧实录
5.1 内网设备为什么外网访问不到
这是被问得最多的问题:我在家里搭了个服务,端口映射也设置了,为什么外网还是访问不了?排查思路按顺序来,别跳步骤。
第一步,确认你的公网IP是不是真的。按上一节的判断方法,看看路由器WAN口IP和你查到的出口IP是否一致。如果不一样,说明运营商做了CGNAT,端口映射形同虚设。第二步,确认内网访问正常。先在局域网里用内网IP访问一次服务,如果内网都打不开,那是服务本身或防火墙的问题,和外网无关。第三步,检查端口映射是否正确,包括协议类型、内外端口对应关系。第四步,检查路由器防火墙是否放行了对应端口。
还有个特别容易踩的坑:有些光猫自带路由功能,你又在光猫后面接了自己的路由器,形成了两层NAT。此时端口映射得做两次,先在光猫上映射到路由器的WAN口,再在路由器上映射到内网设备。很多人在第二层路由器上做了半天规则,结果第一层光猫就把流量挡了。
5.2 IP冲突是怎么发生的
IP冲突是局域网里最烦人的问题之一。典型现象是某台设备突然断网,或者两台设备同时弹窗提示IP地址已被占用。原因通常是有人手动了设置了静态IP,而这个地址正好落在DHCP自动分配的池子里,或者两台设备都手动设了同一个IP。
排查方法也不复杂。当发生冲突时,先断开疑似冲突的设备,在正常设备上执行arp -a查看地址表,找到冲突IP对应的MAC地址,再通过交换机端口定位到具体设备。根治办法是管理好DHCP分配池,静态IP设备统一规划段位,放在自动分配池之外,并在路由器里给关键设备做DHCP地址绑定。
5.3 两台路由器串联后的网段规划
家里网络升级时,经常会出现光猫路由器加自己的路由器这种串联拓扑。如果两层路由器都用192.168.1.0/24这个网段,问题就来了:下级设备访问上级路由器时,有可能因为网段相同造成路由混乱。我在实操中见过不少人搞了半天网络不通,一查发现两个路由器默认网段一模一样。
正确的做法是,把第二层路由器的LAN口网段改成其他私有网段,比如192.168.2.0/24或192.168.3.0/24,同时关闭它的DHCP或做好DHCP分配范围规划。如果只是把第二台路由器当作无线AP用,最简单的方案是关闭它的DHCP功能,把网线插到LAN口,让所有设备由第一台路由器统一分配地址。
5.4 运营商大内网环境下的应对思路
前面提到CGNAT,也就是运营商级NAT。在IPv4地址紧张的区域,运营商会让大量用户共享一个公网IP,用户路由器WAN口拿到的是100.64.x.x这样的保留地址。这种环境下,外网主动访问你会非常困难,因为入口NAT不属于你控制,端口映射根本无法穿透。
应对方案主要有两条路。一是联系运营商申请公网IP,有些地区免费开,有些需要走流程甚至付费,每家政策不同。二是放弃IPv4端口映射的思路,改用出站长连接的方式,让内网设备主动维持一条到中继服务器的连接,外部请求通过这条已验证的连接转发进来。这种方法能绕开NAT的限制,也是目前许多远程控制、远程协助类工具的基本原理,对新手来说是更省心的选择。
6. 几点实操心得,送给刚上手的你
说到底,公共IP和私有IP的区分并没有多高深,它的本质就一句话:公共IP属于全球互联网的"公共门面",私有IP属于局域网的"内部暗号"。理解了这层关系,后面再看NAT、端口映射、远程访问这些问题都会顺很多。
我个人在实际排查中最大的体会是,很多网络问题之所以扑朔迷离,都是因为没搞清楚当前环境里到底有几层NAT、每层用了什么网段。建议你拿到一台新设备或新网络时,花两分钟按这个顺序做一遍体检:先ipconfig看本机IP,再查出口公网IP,最后对比路由器WAN口地址。这三步做完,你的网络到底处于什么状态就一目了然了。
最后分享一个小技巧:如果你经常需要远程访问家里的设备,建议优先把家里网络改造成单层NAT——让光猫做纯桥接,由你自己的路由器拨号,这样端口映射只做一次,排查起来简单得多。另外,给每个需要对外服务的设备绑定固定的私有IP,别用DHCP随机分配,否则IP一变,你写的映射规则、访问书签统统失效,那才叫真的欲哭无泪。学会了这些,下次再有人问你"我家IP怎么是192.168开头的",你就可以把这篇文章甩给他了。