服务器只有局域网IP,域名解析到它没用,外网根本找不到这台机器;想发布网站,必须借助公网IP的端口映射、内网穿透隧道或云服务器反向代理,把内网服务“搬”到公网入口上。 这句话先放这儿,下面按不同场景拆开讲,每一步都能照着做。
局域网IP网站如何让外网访问?先判断你手里有没有公网IP
局域网IP,比如192.168.1.100、10.0.0.5、172.16.0.8,属于私有地址,只在内部网络有效,外网用户敲域名或公网IP,请求先到运营商网关,网关不认识“192.168”是谁,自然就断了,想发布网站,第一步不是买域名,而是确认出口有没有公网IP。
判断方法不复杂:
- 登录路由器管理后台,看WAN口地址,如果显示的是10开头、172.16到172.31开头、192.168开头,基本可以判定没有公网IPv4。
- 在服务器上打开浏览器搜“IP”,记下结果;再对比路由器WAN口地址,两者一致,说明有公网IP;不一致,多半处于运营商大内网。
- 直接打运营商客服问“宽带是否分配公网IPv4”,近年来多数家庭宽带和部分企业宽带默认不提供公网IPv4,需要单独申请或升级专线。
业内专家指出,IPv4地址资源紧张是长期现实,中小型办公网络大量处于NAT后面,这不是你路由器设置错了,是 upstream 就没给你公网入口。
没有公网IP怎么发布网站到外网:先分清三种常见场景
- 场景A:公司有固定公网IP,通常是企业专线,WAN口地址固定且与公网查询结果一致,这种最适合端口映射。
- 场景B:只有动态公网IP,拨号后公网地址会变,需要DDNS把域名绑定到变化IP上,再配合端口映射。
- 场景C:纯内网,完全没有公网IP,最常见,只能走内网穿透或云服务器中转。
路由器端口映射,适合有公网IP的场景
端口映射的原理是告诉路由器:外网访问某个端口时,把请求转给内网某台服务器的某个端口,操作路径因路由器品牌不同,但关键词差不多,找“端口映射”“虚拟服务器”“NAT转发”即可。
实操步骤:
- 给内网服务器固定IP,在路由器DHCP里做地址保留,或在服务器网卡里配静态IP,避免重启后IP变化导致映射失效。
- 登录路由器后台,进入“端口映射/虚拟服务器”页面。
- 新增规则:内网IP填服务器地址,内网端口填网站服务端口,比如80或443;外网端口填一个未被占用的端口,协议选TCP。
- 保存后,用外网网络访问“公网IP:外网端口”测试,注意不要在内部网络用公网IP测,部分路由器不支持NAT回流,容易误判。
这里有个坑:80和443端口在部分运营商侧会被封禁,尤其是未备案域名,据工信部数据,未备案网站会被接入商阻断,如果网站要对外公开访问,域名需要完成ICP备案,否则即便映射成功,也可能被拦截,动态公网IP场景还要加DDNS,把域名解析到变化的外网地址,常见做法是在路由器里开启DDNS服务商客户端。
内网穿透,适合没有公网IP的多数场景
内网穿透和端口映射哪个好?一张表看清区别
| 对比项 | 端口映射 | 内网穿透 |
|---|---|---|
| 前提条件 | 必须有公网IP | 不需要公网IP |
| 典型成本 | 专线或公网IP费用 | 开源方案免费,商业服务按月收费 |
| 配置位置 | 路由器NAT规则 | 内网客户端+公网服务端 |
| 稳定性 | 取决于宽带和路由器 | 取决于隧道服务商或自建服务器 |
| 适用场景 | 企业专线、固定IP | 普通宽带、纯内网、临时演示 |
开源方案里frp用得比较多,思路是:准备一台有公网IP的云服务器做服务端,内网服务器跑客户端,把内网端口映射到云服务器端口上。
服务端frps.ini示例:
[common] bind_port = 7000
客户端frpc.ini示例:
[common] server_addr = 你的云服务器公网IP server_port = 7000 [web] type = tcp local_ip = 192.168.1.100 local_port = 80 remote_port = 8080
启动命令:
./frps -c frps.ini ./frpc -c frpc.ini
跑起来后,外网访问“云服务器IP:8080”就能看到内网网站,如果只想临时把本地服务暴露出去,Cloudflare Tunnel也能用,命令大致是:
cloudflared tunnel --url http://192.168.1.100:80
它会生成一个临时公网地址,适合测试和演示,商业内网穿透工具比如花生壳、natapp,优点是开箱即用,缺点是有带宽和端口限制,长期用要算成本。
云服务器反向代理,适合有域名和稳定访问需求
如果网站要长期对外,建议把入口放在云服务器上,而不是直接暴露家庭或公司出口,做法是:云服务器装Nginx,内网通过frp隧道把网站端口映射到云服务器本地端口,Nginx再把域名请求反代过去。
Nginx配置片段:
server {
listen 80;
server_name www.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
这样域名解析到云服务器公网IP,用户访问域名,Nginx转到隧道端口,隧道再到内网服务器,好处是入口稳定、能配HTTPS、能做访问日志和限流,代价是云服务器和域名成本,以及域名需要备案,行业共识认为,对外提供Web服务时,公网入口与内网服务分离是更稳妥的架构。
公司内网服务器发布网站需要多少钱?成本构成拆解
价格没有统一答案,但可以按方案拆:
- 端口映射:如果已有公网IP,成本接近零;如果需要申请公网IP或升级专线,费用因地区和运营商差异较大,多数情况下按月或按年计费。
- 自建frp:云服务器最低配即可,常见入门配置每月几十元;域名每年几十元;开源软件免费,主要成本是运维时间。
- 商业内网穿透:免费版通常限带宽、限端口、限流量;付费版按月收费,带宽越高价格越高,适合不想自己维护服务端的人。
- 云服务器反向代理:云服务器加域名加备案,属于中等成本,但可控性最好。
较大比例的中小团队会先选内网穿透做测试,确认访问量和稳定性后再决定是否上云服务器,别一上来就买高配,先跑通再扩容。
安全与合规别忽略
- 只映射必要端口,网站用80/443,数据库端口不要往外开。
- 管理后台加访问控制,能上HTTPS就上HTTPS。
- 对外网站涉及备案的,提前走ICP备案流程,别等被阻断再补。
- 开日志,定期看异常访问,内网穿透服务端也要设强密码,frp的token别留空。
局域网IP发布网站常见问题Q&A
局域网IP能直接绑定域名吗?
不能,域名解析到192.168.x.x这类私有地址,外网DNS查询能返回结果,但用户网络根本路由不到这个地址,访问必然失败,域名必须解析到公网IP或隧道服务商提供的公网入口。
没有公网IP,不买云服务器能发布网站吗?
可以,用商业内网穿透工具或IPv6方案,商业穿透开箱即用,免费版有带宽和端口限制;IPv6需要运营商分配公网IPv6地址,并且访问端也要支持IPv6,据中国互联网络信息中心近年报告,IPv6规模部署在推进,但访问端兼容性仍是实际落地时要检查的环节,如果访客网络环境复杂,优先选穿透或云服务器中转。
端口映射后外网访问不了,先查什么?
按顺序查:路由器WAN口是否真有公网IP;运营商是否封了80/443;服务器本机防火墙是否放行端口;路由器映射规则的内网IP和端口是否写对;用外网网络而不是内网测试,逐项排除后,多数问题能定位在公网入口或端口封禁上。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/777171.html


