⚠️不能直接把 A 记录填内网 IP (192.168/10/172),公网 DNS 无法路由内网地址。有两套主流方案:
- Cloudflare Tunnel(推荐,无公网 IP、不用端口映射):绝大多数家用宽带首选,免费,不需要光猫 / 路由器做端口转发,不会暴露家里公网 IP。
- DDNS+A 记录端口映射:需要运营商给公网 IP,光猫改桥接,路由器端口转发,适合直连场景 (SSH/RDP)。

方案一:Cloudflare Tunnel(cloudflared)✅推荐
原理:本地电脑运行cloudflared客户端,向外主动建立加密隧道连接 Cloudflare 节点;域名 CNAME 指向隧道地址,外网访问域名流量经隧道转发到你电脑本地服务。
链路:外网用户 → Cloudflare边缘 → Tunnel隧道 → cloudflared → 本机服务
1. 下载 cloudflared
- Windows:winget install cloudflare.cloudflared,或者下载 MSI 安装包
- Linux:
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb && dpkg -i cloudflared-linux-amd64.deb - Mac:
brew install cloudflare/cloudflare/cloudflared
2. 登录授权
cloudflared tunnel login
浏览器弹出页面,授权你的域名,生成cert.pem凭证文件。
3. 创建隧道(名字自定义,示例mylocal)
cloudflared tunnel create mylocal
执行后输出 Tunnel UUID,同时生成UUID.json凭证文件,保存好,不要删除。
4. 绑定域名到隧道(自动生成 DNS CNAME 记录)
假设子域名shturl.cc/ixOldBW3,执行:
cloudflared tunnel route dns mylocal shturl.cc/ixOldBW3
执行成功后,Cloudflare DNS 页面自动生成一条
CNAME记录指向xxx.cfargotunnel.com,不要手动改成 A 记录。
5. 编写配置文件 config.yml
tunnel: mylocal
credentials-file: /path/to/你的UUID.json #Windows写完整绝对路径 D:\cloudflared\uuid.json
ingress:
- hostname: shturl.cc/ixOldBW3
service: http://127.0.0.1:3000 #你电脑本地运行的服务地址端口
- service: http_status:404
6. 启动隧道
cloudflared tunnel --config config.yml run
访问
shturl.cc/ixOldBW3就可以访问本机127.0.0.1:3000的服务。
7. 设置开机自启(可选)
Windows/Linux 可注册系统服务,后台常驻运行,电脑开机自动连接隧道。
💡小提示:
- 隧道默认自动 HTTPS,不需要自己配置 SSL 证书;
- 可以在 Zero Trust 后台配置访问策略,限制访问人邮箱,防止公开访问;
- 不适合 TCP 直连 (SSH/RDP),网页 HTTP/HTTPS 服务完美适配。
方案二:DDNS + A 记录 + 路由器端口映射(需要公网 IP)
前提:宽带必须拿到IPv4 公网 IP,光猫改成桥接模式,路由器拨号。
- 在 Cloudflare DNS 添加 A 记录,代理状态设置为
DNS only(云朵变灰)。 - 使用 DDNS 脚本定时获取本机公网 IP,调用 Cloudflare API 自动更新 A 记录 IP 地址。
- 路由器配置端口转发:外网端口转发到本机内网 IP + 端口。
- 注意:国内运营商封禁 80/443 端口,公网不能直接用 80、443。
缺点:家庭公网 IP 会变动,需要 DDNS 脚本;暴露家庭公网 IP,有安全风险;很多运营商不给公网 IP,此方案不可用。
常见踩坑
- ❌手动填 A 记录写 192.168.x.x:公网无法访问,互联网路由不到内网地址。
- ❌DNS 记录手动删除隧道生成的 CNAME,会直接 502。
- 502 Bad Gateway:本地服务没有启动;config.yml 里面 service 地址写错;cloudflared 没有正常运行。
- 域名代理小云朵:Tunnel 场景保持代理开启(云朵橙色)。
- 内网访问:本机局域网设备直接访问
192.168.x.x:端口,不走 cloudflare 隧道。
两种方案对比
| Cloudflare Tunnel | DDNS + 端口映射 | |
|---|---|---|
| 需要公网 IP | ❌不需要 | ✅必须要 |
| 路由器设置 | 无需任何配置 | 需要端口转发、光猫桥接 |
| 暴露家庭 IP | 不暴露 | 暴露公网 IP |
| 适用服务 | HTTP/HTTPS 网页服务 | TCP 全端口 (SSH/RDP 等) |
| 运营商 80/443 封锁 | 不受影响 | 会被封禁 |
