NAT版动态域名解析(DDNS)能做内网穿透,但只能解决IP变化问题,无法突破端口封锁和运营商NAT限制,真正实现无公网IP环境下的远程访问,必须配合端口映射或内网穿透工具。
动态域名解析和端口映射是什么关系
很多人混淆这两个概念,实际操作中它们经常配合使用,动态域名解析解决的是“找不到你家”的问题,端口映射解决的是“进了门找谁”的问题。
动态域名解析的局限
传统DDNS工作流程如下:
- 路由器或客户端定期向DNS服务器上报当前公网IP
- 用户通过固定域名访问该IP
- 路由器收到请求后根据端口映射规则转发给内网设备
问题在于,国内大部分家庭宽带用户没有独立公网IP,运营商普遍使用CGNAT(运营商级网络地址转换),用户拿到的IP是运营商内网地址,这种情况下,DDNS解析出的IP公网根本路由不到。
端口映射在NAT环境下的表现
端口映射需要公网IP作为前提条件,行业内共识:多数地区电信宽带可拨打客服申请公网IP,移动和部分联通宽带较难获取,获取公网IP后,在路由器设置虚拟服务器或端口映射规则,将外网端口指向内网主机。
没有公网IP时,端口映射规则虽然可以配置,但永远不会生效,因为外部请求根本无法到达你的路由器。
内网穿透工具提供了另一条路径
当DDNS方案走不通时,内网穿透工具通过反向连接绕过NAT限制,原理是内网设备主动向外网服务器建立长连接,外部用户访问该服务器时,数据通过这条链路转发到内网。
frp是自建穿透的首选
frp是目前使用最广泛的开源内网穿透工具,部署分三步:
- 准备一台有公网IP的云服务器,最低配置1核1G即可满足轻量使用场景
- 在服务器上运行frps服务端,配置监听端口和token
- 在内网设备上运行frpc客户端,配置要暴露的服务类型和端口
具体配置示例:
# frps.ini 服务端配置 [common] bind_port = 7000 token = your_token # frpc.ini 客户端配置 [common] server_addr = 你的服务器IP server_port = 7000 token = your_token [web] type = tcp local_ip = 192.168.1.100 local_port = 8080 remote_port = 8080
执行后访问服务器IP:8080即可访问内网设备,frp性能损耗较小,多数场景下延迟增加可控制在20ms以内。
免费穿透服务适合临时场景
不想自建服务器时,可使用花生壳、神卓互联等第三方服务,这些服务一般提供免费映射通道,但存在限速、强制跳转广告等问题,具体选购可咨询当地网络服务商,价格通常在每年几十到几百元不等,且免费套餐不支持自定义域名绑定。
zerotier和tailscale实现异地组网
zerotier和tailscale属于虚拟局域网方案,特点是不需要公网服务器中转,通过P2P直连实现内网设备互访。
安装zerotier后,设备会获得一个私有网段IP,无论设备身处何地,只要安装了客户端就能像在局域网内一样互相访问,tailscale基于WireGuard协议,配置更简单,支持SSO登录。
这两种方案不适合暴露服务给不特定人群访问,但非常适合异地组网访问NAS、远程桌面等个人使用场景。
公网IP下如何配置动态域名解析
拥有公网IP后,配置DDNS才有实际意义,以下是完整的可落地操作路径。
路由器端配置DDNS
TP-Link、小米、华硕等主流路由器均内置DDNS功能,操作路径:
- 登录路由器管理界面
- 找到“动态DNS”或“DDNS”选项
- 选择服务商(一般内置花生壳、DynDNS等)
- 输入注册好的域名和账号信息
- 保存后路由器自动同步IP变化
需要注意的是,路由器重启或断电后,重新拨号获取的IP可能变化,DDNS的更新存在一定延迟,通常在一到五分钟内完成解析更新。
DNS服务商方案
DDNS服务商包括花生壳、No-IP、DuckDNS等,可直接在某些路由器中选择对应的服务商进行绑定,更灵活的做法是使用简米云DNS或酷番云DNS的API接口,在脚本中调用接口更新解析记录。
以简米云为例,可在GitHub上搜索aliyun-ddns项目,下载脚本部署到内网设备上,脚本定时获取本机公网IP,与DNS解析记录比对,不一致时调用API更新,这样不依赖路由器型号,任何能运行脚本的设备都能实现动态域名解析。
DDNS与端口映射的配合
公网IP环境下完成以下配置才能实现远程访问:
- 路由器获取公网IP后开启DDNS,绑定域名
- 在路由器设置端口映射规则,将“外网端口→内网设备IP:端口”
- 确认防火墙允许对应端口通行
- 测试外网通过
域名:端口访问内网设备
完整操作同样适用于NAS、监控摄像头、Web服务器等场景。
没有公网IP时的内网穿透全流程
当无法获取公网IP时,采用frp作为穿透方案,实现原理是借助有公网IP的云服务器中转流量。
服务器端环境准备
云服务器选择标准:
| 配置项 | 最低要求 | 推荐配置 |
|---|---|---|
| CPU | 1核 | 2核 |
| 内存 | 1GB | 2GB |
| 带宽 | 1Mbps | 3-5Mbps |
| 系统 | Debian 11 | Ubuntu 22.04 |
从GitHub Releases页面下载frp对应版本,下载适合自己系统架构的压缩包,解压后编辑配置文件,启动frps服务。
内网客户端配置
内网设备可以为群晖NAS、Windows旧电脑、Linux开发板等,客户端配置核心是指定远程端口和本地服务的对应关系。
实现内网穿透的关键在于:
- 远程端口应选择1024以上的高位端口,80和443端口在家庭宽带中通常被封禁
- 多个服务需要映射时,配置多个section,不同服务使用不同remote_port
- 可通过设置
use_encryption = true和use_compression = true提升安全性和传输效率
通过systemd实现开机自启
配置完成后需确保服务长期运行,创建systemd服务文件,指向frpc路径和配置文件路径,设置开机自启,同时考虑使用systemd的自动重启功能,服务因网络波动退出时自动恢复。
动态域名解析在实战中的应用场景
NAS远程访问配置
群晖、威联通等NAS均支持DDNS和frp两种方式,有公网IP的用户在控制面板中直接启用DDNS,再设置端口转发规则指向NAS的管理端口,无公网IP用户可在套件中心安装frpc套件或使用Docker运行frpc容器,将NAS管理界面和文件服务端口映射到云端服务器。
远程桌面与办公场景
Windows远程桌面(RDP协议)通常使用3389端口,暴露到公网时建议修改默认端口,被扫描攻击的概率可大幅降低,frp可配置allow_ports参数限制可映射的远程端口范围,配合服务端token校验增强安全性。
家庭IoT设备管理
部分用户通过动态域名解析远程管理家中的树莓派或智能家居网关,配置思路相同,需要注意设备优先接入2.4GHz WiFi,在路由器中为设备固定内网IP,避免因DHCP分配变化导致端口映射失效。
Q&A
动态域名解析和DDNS有什么区别?
没有区别,动态域名解析就是DDNS的翻译,动态域名解析的常见实现方式包括路由器内置DDNS服务和DNS服务商提供的API方案,通过客户端自动更新动态IP的解析记录,使用户始终能通过固定域名访问家庭网络。
内网穿透frp需要固定IP的服务器吗?
需要服务器有公网IP,可以是固定IP的云服务器,也可以是动态IP但端口可达的家庭宽带加域名解析,但后者在实践中配置繁琐,且家庭宽带上行带宽有限,实际使用体验较差。
NAT版动态域名解析能不能实现内网穿透?
NAT版动态域名解析本身无法实现内网穿透,必须同时具备端口映射和公网可达条件,对于没有公网IP的网络环境,建议直接部署frp或使用第三方穿透服务,在动态域名解析无法满足需求时,穿透工具才是有效方案。
动态域名解析是内网穿透的经典方案,但受运营商NAT策略影响,适用场景越来越窄,技术选型时先确认自己是否拥有公网IP,再决定走DDNS加端口映射的传统路线,还是直接采用frp等穿透工具实现内网穿透。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/612866.html





