为什么需要把域名绑到内网穿透上
很多人在家用电脑搭了个网站、监控系统,或者想远程访问NAS,但公网IP这东西现在越来越难搞。就算有,也多半是动态的,今天能连上,明天换个网络就变了。这时候内网穿透就派上用场了,配合一个固定的域名,外网就能稳稳地访问你的本地设备。
比如你有个摄像头系统跑在客厅那台旧电脑上,想出差时用手机看看家里情况。直接连?不可能。但如果你用了内网穿透,并且绑定了一个像 home.yourname.com 这样的域名,不管你在哪,打开浏览器输入这个地址就能看到画面。
常见内网穿透工具支持域名绑定
主流的工具比如 frp、ngrok、花生壳,都支持自定义域名接入。以 frp 为例,你在公网服务器上部署 frps,在家里电脑跑 frpc,中间通过配置打通。关键一步就是让外部访问的域名指向你的 frps 服务器IP。
## frps.ini 配置示例
[common]
bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
subdomain_host = yourdomain.com上面这个配置里,subdomain_host 设成了 yourdomain.com,意味着所有子域名(比如 web.yourdomain.com)都会被识别并转发到对应客户端。
如何把自己的域名指向穿透服务
假设你已经在阿里云或腾讯云买了一个域名,比如 myhome.com。第一步是在域名管理后台添加一条 A 记录,把 *.myhome.com 指向你那台运行 frps 的云服务器公网 IP。这样任何子域名请求都会落到这台服务器上。
接着在 frpc 客户端配置中指定要绑定的子域:
## frpc.ini 配置
[common]
server_addr = x.x.x.x
server_port = 7000
[web-service]
type = http
local_port = 8080
subdomain = web这样一来,只要访问 http://web.myhome.com,流量就会经过 frps 转发到你家电脑的 8080 端口,相当于把内网服务“搬”到了公网上。
HTTPS 怎么办
现在浏览器对非 HTTPS 网站警告越来越严,光 HTTP 不够看。frp 支持自动申请 Let's Encrypt 证书,前提是你的域名已经正确解析,并开放了 443 端口。
[web-secure]
type = https
local_port = 8080
subdomain = web
custom_domains = web.myhome.com
[tls]
cert_file = /path/to/cert.pem
key_file = /path/to/key.pem也可以在 frps 上统一用 Nginx 做反向代理,集中管理 SSL 证书,多个服务共用一个入口更省事。
实际使用中,建议选个好记的二级域名专门用于内网穿透,比如 lab.yourname.com、camera.yourname.com,分类清晰,别人一看就知道用途。
别忘了防火墙和路由器的基本放行规则,虽然走的是穿透,但本地服务要是被拦着,照样打不开。测试时先从局域网确认服务正常,再上外网验证穿透链路。