运营商给的网i网访问光猫默认是路由模式,你电脑拿到的现外IP是192.168.x.x这种内网地址。外网想连进来,网i网访问数据包到了光猫就被丢了——它根本不知道往内网哪台机器转。现外这就是网i网访问没公网IP时最直接的困境。
我家里那条宽带就是现外典型例子。装维师傅说现在IPv4地址早分完了,网i网访问普通用户别想拿到公网IP。现外打电话给客服申请,网i网访问对方回复“企业专线才给分配”。现外得,网i网访问那就自己想办法。现外
先搞清楚你处在哪一层内网
打开路由器后台看WAN口IP。网i网访问如果是现外10.x.x.x、100.64.x.x、网i网访问172.16.x.x到172.31.x.x、192.168.x.x这些段,说明你至少被NAT了一层。更惨的情况是光猫拨号,路由器再NAT一次,那就是双重NAT。判断方法很简单:用traceroute,看第一跳之后还有没有私有地址。有,就是多层。
这个判断很重要,因为不同方案对NAT层数敏感。有些方法只能穿透一层,有些能穿透多层。
方案一:IPv6直连
三大运营商现在宽带基本都下发IPv6前缀了。光猫和路由器开启IPv6,电脑能拿到240e开头的公网v6地址。这个地址全球可达,不需要NAT穿透。
问题在于:很多单位、酒店、手机热点只有IPv4。你在外面用4G访问家里的v6设备,大概率不通。除非对方也有v6。所以IPv6适合特定场景,比如你公司和家里都有v6,那直连速度最快。我实测过,从公司连家里NAS,v6直连跑满上传带宽,比任何内网穿透工具都快。
方案二:frp反向代理
这是最通用的做法。你需要一台有公网IP的服务器,阿里云、腾讯云最便宜的轻量应用服务器就行,一年几十块。在服务器上跑frps,家里内网机器跑frpc。frpc主动连接frps,建立一条长连接。外网访问请求先到服务器,服务器通过这条已建立的连接转发到你家内网。
配置不复杂。frps.ini里配好bind_port和token,frpc.ini里写服务器地址、端口、本地服务地址。比如你想远程桌面,本地是192.168.1.100:3389,映射到服务器7001端口。外面用服务器IP:7001就能连上。
我用了两年多,稳定性还行。偶尔断线,frpc有自动重连。带宽取决于你服务器带宽,轻量服务器一般3M到5M,远程桌面够用,传大文件就慢。想快就买按量付费的,带宽拉高,用完释放。
方案三:ZeroTier或Tailscale组网
这类工具走P2P打洞。双方都装客户端,加入同一个虚拟网络,它们会尝试直连。打洞成功,数据不经过中转服务器,速度取决于你家上行带宽。打洞失败,走官方中继,速度就拉胯。
ZeroTier我试过,家里和手机都装上,大部分时候能P2P成功。看NAS里的视频,流畅。但有些运营商NAT类型严格,打洞成功率低。Tailscale基于WireGuard,性能更好,但国内中继服务器少,打洞失败时体验差。
这类方案的好处是零配置门槛低,坏处是你把网络控制权交给第三方。数据加密他们看不到,但元数据瞒不住。
方案四:Cloudflare Tunnel
如果你只是要暴露Web服务,比如家里的博客、监控面板,Cloudflare Tunnel很省事。在服务器上跑cloudflared,它会建立到Cloudflare边缘节点的隧道。你在Cloudflare DNS里加个CNAME指向隧道,外网访问域名就走Cloudflare回源到你家。
免费版够用,还自带HTTPS。缺点是只能走HTTP/HTTPS,SSH这种TCP服务得用Cloudflare Access包装,麻烦。另外Cloudflare在国内访问速度一般,电信尤其慢。
怎么选
看需求。要速度、双方都有v6,优先IPv6。要通用、能接受买服务器,frp最稳。不想买服务器、能接受P2P的不确定性,ZeroTier。只跑Web、图省事,Cloudflare Tunnel。
我现在的组合是:NAS走IPv6直连,主力远程访问;备用frp跑在腾讯云轻量上,v6不通时切过去;临时给朋友分享文件用Cloudflare Tunnel开个临时域名。三套并存,哪套通就用哪套。
没公网IP不是死路。关键是别指望一个方案解决所有问题,根据场景叠着用。