公网 IP 与内网 IP:如何穿透运营商 NAT 访问家里的设备

家里放着摄像头、NAS 或服务器,却怎么也无法从外网连上它们。多数情况下原因只有一个:运营商给你分配的是内网地址,而内网地址不接受外部的入站连接。下面讲清楚它和公网地址的区别、如何判断自己属于哪一种,以及在没有公网 IP 时该怎么办——从向运营商申请,到干脆绕开公网 IP。

当地址变化时,通过互联网用固定名字访问家里的设备

用一个固定的名字访问家里的摄像头、服务器或 NAS 很方便。能否直接做到,取决于运营商给你的地址类型——公网还是内网。

公网地址和内网地址的区别

IPv4 地址早已不够分配:老格式已经耗尽,而给每个用户都配一个独立地址对运营商来说太贵。把几百个用户藏在同一个共享地址后面要便宜得多。地址就是这样分成了公网和内网两类。

公网 IP 在整个互联网上是唯一的,并且绑定在你的线路上。外部可以直接连到它,正好落到你这里——对入站连接没有任何限制。

内网 IP 是运营商内部网络里的地址;它在「大」互联网上并不存在,此刻还有成百上千个邻居用着同一个地址。你打开网站时,运营商会把自己的共享公网地址填到出站请求上,并记住该把响应发回给谁——这就是 NAT。可入站请求却没有明确的归属:它到达运营商的共享地址后,无法判断是发给这几百个用户中的哪一个。所以你在公司想连的那台摄像头,从外面是敲不开的。

公网 IP 内网 IP
浏览网站、看视频可以可以
从外部入站连接可以不行
路由器上的端口转发有效无效
摄像头、NAS、RDP、游戏服务器可直接访问只能经中转
由谁控制地址转换你的路由器运营商的路由器,你无法干预
通常如何获得付费开通或申请默认分配,移动网络尤其如此

如何判断自己是哪种地址

检查只要几分钟,也不需要专门的软件。

  • 在手机或电脑上打开任意一个显示你外网地址的服务——搜索「我的 IP」即可。记下这个数字:互联网看到的就是它。
  • 进入路由器的网页管理界面,找到 WAN 口上的地址,通常就在状态首页。
  • 对比这两个数字。相同,地址就是公网的,剩下的只是配置问题。若路由器上的地址不同,且以 100.64–100.12710.192.168.172.16–172.31 开头,你就在运营商 NAT 之后,地址是内网的。

100.64.0.0/10 这个网段值得单独记住:它专门保留给运营商级地址转换,也就是 CGNAT。它出现在家用路由器上,只有一种可能——运营商把你放到了共享地址后面。地址类型的原理以及它们为何会变化,在动态 DNS 一文里有详细讲解。

动态地址不等于内网地址

很多人在这里搞混。运营商可能分给你一个公网地址,却不把它固定下来:重新拨号或每天都会换一个数字。地址并不因此不再是公网地址——外部照样能连上、端口转发照样有效——只是它不固定。它和内网地址唯一的共同点是都「不省心」,但内网地址根本连不上,而变化的公网地址按当前数字仍然连得上。

同一个检查就能区分两者。路由器 WAN 口和外网地址一致、却时不时变化,那是动态公网地址,用动态 DNS 把变化的数字藏到一个固定名字后面即可,不必换套餐。WAN 口始终和外网地址不同,那就是内网地址,无论 TTL 多低 DDNS 都无能为力。只差一个观察,解决办法却截然相反。

内网地址是怎么来的

原因是算术问题。全球空闲的 IPv4 地址已经用尽:运营商要申请新的地址段,得排上好几年的队,之后还要为每个地址每年付费。而用户比地址多得多,移动运营商尤甚——一个公网地址往往对应着上千个连接。CGNAT 正好摆平这笔账:服务的客户很多,占用的公网地址却很少。

大多数人根本察觉不到——浏览网页和看视频并不需要公网地址。真正撞墙的是那些需要入站连接的人:摄像头、家庭服务器、智能家居的用户,以及需要远程连回办公电脑的人。如果你正是其中之一,下面讲讲该怎么办。

移动网络

如果你通过 SIM 卡上网——手机开热点、USB 上网卡、插卡的路由器——那内网地址几乎是必然。运营商的一个公网地址被上千个用户共用,根本没地方给每个人分一个独立的公网地址。想在普通 SIM 卡上申请公网 IP 通常行不通:多数运营商压根不向个人用户提供,即便提供,也是单独付费的选项或企业套餐。

判断你处在运营商 CGNAT 之后的迹象:

  • 设备或路由器上的地址落在 100.64.x.x100.127.x.x 网段;
  • 外网地址和接口上的地址对不上,而且还会随基站切换而变化;
  • 在摄像头、BT 客户端里做端口转发、「开放端口」,从外面都没有效果。

由此可知:在移动网络上,下面三种方案里真正管用的只有代理访问——它不需要公网地址,也不在乎你处在哪种 NAT 之后。SIM 卡上几乎搞不到公网 IP,而在移动线路上长期维持一条 VPN 隧道又很别扭。

如何获得访问:三种方案

穿透内网地址、连回设备的办法大体有三种。它们并不互斥,适合不同的预算和需求;有些情况下用不上我们的服务,这一点会直说。

方案 能带来什么 何时选它 缺点
向运营商要公网 IP像从前一样直接访问运营商提供公网地址且价格能接受按月付费;并非人人都给;移动网络下往往无法实现
VPN 或自建隧道整体接入家庭网络有一台带公网 IP 的第二服务器,且愿意折腾配置需要一个中转节点;每个客户端都要配置
代理访问无需公网 IP 也能给设备一个固定地址没有公网地址或嫌它太贵,也没时间折腾流量要经过中转

向运营商要公网 IP

最直接的办法就是打电话给运营商,申请一个外网地址(也叫公网地址或静态地址)。有线运营商这通常是付费服务——每月一小笔费用,有时还要一次性开通费。开通之后一切就顺了:路由器上的端口转发重新有意义,摄像头和 NAS 都能直接打开。

当运营商愿意提供、价格合适、而你又希望自己和设备之间中间环节越少越好时,这个方案很好。这种情况下多半用不上我们的服务:一个公网地址,加上动态 DNS(如果地址会变)就够了。

麻烦在于并不总能拿到。很多移动运营商根本不提供公网地址,一部分固网运营商只对企业用户或高档套餐开放。要是听到「暂无此项服务」,那就只剩隧道和代理了。

怎样申请公网 IP、要问清哪些事

各家运营商对这项服务的叫法不一:「外网 IP」「公网地址」「静态 IP」「独享地址」。跟客服沟通时,用大白话说清需求即可——「我要从互联网访问家里的摄像头」——他们就会给你推荐套餐。有三件事值得问清楚。

  • 静态还是动态。 静态地址固定绑定给你、不会变——更方便但更贵。动态公网地址便宜,用来访问设备也毫不逊色:变化的数字交给动态 DNS 去藏。为一台摄像头多花钱买静态没必要。
  • 一次性开通还是按月。 有的运营商每月收固定费用,有的收一次性开通费。长期算下来,一次性的更划算。
  • 线路类型。 GPON 光纤和移动运营商发放公网地址更少——它们在这方面对地址抠得更紧。「技术上无法实现」这个答复,通常说的是运营商的政策而非物理限制,而且是最终结论:再怎么央求也拿不到地址。

当公网地址拿不到或太贵时,隧道和代理就能把事情办成——对它们来说,运营商那一侧已经无关紧要。

VPN 或自建隧道

这里不是把设备暴露到外面,而是自己从里往外打通一条通道。连接始终从你的网络发往外部,而运营商 NAT 并不拦截出站连接,于是内网地址就不再是障碍。

具体是这样:某处有一个带公网地址的节点——租来的 VPS、单位的办公室、另一处网络正常的住所——你的路由器或某台设备与它保持长连接,再经这个节点连回家。当你需要的是像连上自家 Wi-Fi 那样整体进入家庭网络、而不只是发布某一个服务时,VPN 很合适。

代价就是那个带公网地址的中转节点,以及配置上的一番折腾:服务器、各设备上的客户端、密钥。为一台摄像头这么搞是杀鸡用牛刀,为整个家庭网络的访问则很划算。当你没有自己的服务器、也懒得配置时,代理就替你充当这个中转角色。

代理访问:内网 IP 之后的设备与 Alviy 节点保持连接,外部通过固定名字访问

代理访问免去了对公网地址的要求:设备主动连上 Alviy 的节点,你从外面用一个固定名字访问。运营商 NAT 拦不住出站连接,所以内网 IP 也就不再碍事。

无需公网 IP 的代理访问

「从里往外建立连接」的原理和隧道一样,只是中转方换成了我们的网络,你不用自己搭服务器。设备或路由器与 Alviy 保持连接,你则用一个像 home.example.com 这样的固定名字访问服务。这中间不需要公网地址——在 CGNAT 之后、在移动网络上都照样能用。

和前两种方案相比,它一次解除三重限制:

  • 不需要公网 IP——不用给运营商加钱,不用等待申请,在根本拿不到公网地址的地方也能获得访问;
  • 不必在每台设备上配置 VPN——从浏览器或应用里用一个普通名字就能访问服务,连接方那一侧无需客户端和密钥;
  • 设备地址对外不可见:面向互联网的是网络节点,而不是你家的线路——它不会被扫描,也不会顺着它摸到你的线路。网站代理面向 SaaS 的反向代理用的正是同一招。

这种方式只有一个缺点:流量要经过中转,也就是经过我们的网络。对访问摄像头、NAS 或管理面板来说无关紧要,往往还是好事——家里的线路不会暴露在外。但如果你就是要一条没有任何中间节点的直连、而公网地址又拿得到,那还是拿公网地址更合适。

费用几何

选择往往归结到钱。各项大致的量级如下:

  • 向运营商要公网 IP——一笔固定的经常性费用,通常每月几美元,有时还有一次性开通费。此外再无别的花销,但多花钱也无济于事:运营商不提供这项服务,钱是解决不了的。
  • 自建 VPS 跑隧道或 VPN——租一台带公网地址的服务器,每月花费大致相当,外加你自己配置和维护的时间。当你本来就有服务器、或另有他用时才划算。
  • 代理访问——订阅费用与公网 IP 的月费属同一量级,但它在拿不到公网地址的地方也能用,而且不需要自备服务器。最新资费见价格页

如果运营商能以你能接受的价格给公网地址,那就要——没有更短的路径。如果拿不到公网地址、或它贵得离谱,那么在自建 VPS 和代理之间做选择就归结为一点:你是否愿意自己去运维一台服务器。

IPv6:内网 IPv4 未必是死路

内网 IPv4 有一条常被遗忘的绕行路。有些运营商在发放内网 IPv4 的同时也会发放完整的 IPv6,这样每台家庭设备都会得到自己的全球 IPv6 地址——唯一,且可直接从外部访问,完全不经 NAT。IPv6 地址绰绰有余,没必要把用户藏在共享地址后面。

检查很简单:看路由器有没有在常见的 192.168.x.x 之外,再给设备分配 2a0… 这样的地址。如果有,就可以用 IPv6 地址、或用一个在区域里配了 AAAA 记录的名字来访问摄像头或服务器。

有两点说明,使得 IPv6 并非总能解围。IPv6 的入站通常被路由器防火墙拦住——需要手动放行具体的设备和端口。而且只有对方自己也有 IPv6 才连得上:移动网络上几乎都有,办公和企业网络里则远非处处如此。所以 IPv6 适合作为补充,真正可靠的、随处可用的访问,仍然要靠公网 IPv4 或代理。

内网 IP 上的端口转发:为什么不起作用

这是最常见的翻车点。照着摄像头的说明书,进路由器仔仔细细配好端口转发——结果毫无动静。问题不在配置上:在内网 IP 上,端口转发从原理上就没用

端口转发是你自己路由器上的一条规则:「凡是从外面到达 8080 端口的,都转给 192.168.1.50 的摄像头」。它只有在外部请求能到达你的路由器时才会生效。而在内网地址下,边界更靠上,在运营商的路由器上,那里你根本没有权限。请求止步于运营商的共享地址,压根到不了你的路由器——没有可转发的东西。你配置的是链条上最后一道门,可一切都卡在了第一道。

验证很快:配好转发,然后别在家里连,用移动网络连。在家庭网络内部,很多路由器会自己回应自己,制造出「一切正常」的错觉。要是从外面依然连不上、而地址又是内网的,那端口转发在这里就是无能为力。

出路取决于有没有公网地址。若你确实需要端口转发,先向运营商要一个公网 IP,规则才会生效。没有公网地址时,能把「外面放进来」的不是转发,而是从里往外建立的连接:隧道或代理访问。这时对外暴露设备端口的是中转方,而不是你的路由器,内网地址也就不再碍事。

双重 NAT:有公网地址,却依然连不上

还有一个单独的陷阱,很容易被当成内网 IP。运营商给的地址是公网的、转发也照章配好了,外面却一片寂静。原因是两台路由器串在一起:运营商的设备(光猫或它自带的路由器)工作在路由模式,后面又接着你自己的路由器。公网地址落在第一台设备上,你的转发配在第二台,两者之间又藏了一层 NAT。

还是那个地址检查能揭穿它:你路由器的 WAN 口上不是公网地址,而是 192.168.x.x 之类的东西——也就是来自第一台设备网络的地址,而非来自互联网。表面上地址看着像内网的,但过错不在运营商,而在家里多出的那一环。

解决办法有两种。把第一台设备切到桥接(bridge)模式——公网地址就会直接到达你的路由器,转发随之恢复。或者在两台设备上按顺序各配一次转发,但这很脆弱,地址一变就会失灵。桥接更可靠;具体怎么开,问运营商客服或查它设备的说明书即可。

保护家庭设备:密码、防火墙、限制外部访问

对外开放的端口会被自动扫描器全天候探测。直接暴露在互联网上的设备越少,就越省心。

该不该把设备直接暴露到互联网上

即便有了公网 IP、转发也正常,把设备直接暴露到互联网上依然有风险,最好事先心里有数。任何对外开放的端口都会被自动扫描器全天候翻查:机器人一个接一个地扫地址,搜寻带出厂密码和已知漏洞的摄像头、路由器和 NAS。一台还用着默认 admin/admin 的摄像头,很快就会落入别人的僵尸网络。

所以采用直连时,至少要做到:

  • 改掉出厂密码,能开二次验证的地方就开;
  • 不要把标准的管理端口原样留在外面;
  • 如果你总是从固定的几个地方连接,就按地址白名单限制访问;
  • 及时更新固件——自动扫描器盯上的正是旧版本。

这也是一条支持代理访问的理由,哪怕你有公网地址:设备真实的地址和端口对外都看不见,也就无从扫描。「门」后站着的是网络节点,而不是摄像头本身。

按你的需求来选

选哪种办法,不只看地址类型,还要看你到底要连的是什么。

要连接的东西 有公网 IP 只有内网 IP
监控摄像头端口转发 + DDNS代理访问
NAS、文件服务器端口转发 + DDNS代理访问或 VPN
远程桌面(RDP)到办公电脑转发 + 地址限制VPN 或代理访问
整个家庭网络在路由器上跑 VPN经自建节点的 VPN 或隧道
从家里对外发布网站宜用代理而非转发代理
和朋友联机的游戏服务器按协议做端口转发代理访问或隧道

从哪里开始

Alviy 负责的是第三种方案:用一个固定名字访问内网 IP 之后的设备,无需公网地址,也不必在每个客户端上配置 VPN。当地址是公网的、只是会变时,事情更简单——交给动态 DNS 即可,而名字和区域可以在 DNS 托管里方便地管理。

在设备这一侧,配置无非就是上报地址的更新,最省事的地方是路由器。常见型号有现成的教程——KeeneticPadavan,适用于任意路由器的通用步骤见配置指南。当路由器固件和你需要的服务合不来时,同样的客户端也可以装在电脑、服务器或 NAS 上——可选项列在客户端文档里。

常见问题

公网 IP 能免费获得吗? 通常不能:有线运营商一般要收费,移动运营商则大多根本不提供。想免费访问内网设备,可以用代理访问;若运营商恰好分配了 IPv6,也能派上用场。

内网 IP 安全吗? 恰恰相反:躲在运营商 NAT 后面反而更不容易被攻击,外部无法直接连到你,端口扫描也会略过。内网地址唯一的不便,就是无法从外网访问。

「查我的 IP」显示的地址看起来正常,却连不上,为什么? 这类服务显示的是你的请求发出时所用的地址,也就是运营商的共享地址,而不是你自己的地址。要和路由器 WAN 口上的地址对比;两者不同,说明你拿到的是内网地址。

换路由器或刷固件有用吗? 没用。地址类型由运营商在其一侧分配,家里的设备对此没有影响。换台路由器只是改变配置的便利程度,并不能把内网地址变成公网地址。

为什么用移动网络时什么都转发不出去? 移动网络的地址几乎都是内网地址,位于 CGNAT 之后。端口转发在这里失效的原因和任何内网 IP 一样,能救场的是代理访问。

简而言之:先弄清地址类型——路由器的 WAN 口和外网地址是否一致。公网地址意味着端口转发就够了,若地址会变再加上动态 DNS。内网地址则把转发彻底堵死:要么向运营商讨一个公网 IP,要么绕开它——用自建隧道,或经我们的网络做代理。在移动网络上,这几样里真正管用的只有最后一种。