很多人会把 pfSense 或 OPNsense 作为家庭、工作室、小型机房的主路由使用。如果公网 IP 是动态变化的,Dynamic DNS 就非常重要:它可以在 WAN 地址变化时,自动把域名解析记录更新到当前公网 IP。
pfSense 和 OPNsense 自带了不少国外 DNS 服务商支持,例如 Cloudflare、GoDaddy、Route53 等,但国内常用的阿里云 DNS 和腾讯云 DNSPod 支持并不完整。为了方便国内用户使用,我整理了三个补丁项目:
- pfSense CE Dynamic DNS 阿里云 / 腾讯云补丁
- pfSense Plus Dynamic DNS 阿里云 / 腾讯云补丁
- OPNsense Dynamic DNS 阿里云 / 腾讯云补丁
补丁安装后,可以在 Web 管理界面的 Dynamic DNS 页面中直接选择阿里云或腾讯云服务,填写 API 密钥、域名和主机记录,自动更新解析。如下图所示:
pfSense上的阿里DNS解析
OPNsnese上的阿里DNS解析
本人没有购买国内的域名解析,经群友测试,在pfSense CE 2.8.1,OPNsense 26.1.10 上可以正常解析。使用过程中有任何问题,欢迎及时反馈。
增加内容
pfSense CE / pfSense Plus 支持以下服务:
- Aliyun DNS
- Aliyun DNS (v6)
- Tencent Cloud DNS
- Tencent Cloud DNS (v6)
OPNsense 支持以下服务:
aliyun:Aliyun DNStencentcloud:Tencent Cloud DNSdnspodcn:保留原 DNSPod 中国服务名,并增强为支持自动新增记录
支持能力包括:
- 自动检测当前公网 IPv4 / IPv6
- 查询 DNS 记录是否存在
- 记录存在时自动更新
- 记录不存在时自动新增
- 支持根域名记录
@ - 支持 TTL 设置
- 腾讯云支持自定义解析线路
安装方法
pfSense CE
项目目录结构大致如下:
pfSense-ce-dyndns/
├── src/
├── install.sh
├── uninstall.sh
├── check_install.sh
└── readme.me
上传到 pfSense CE 后,用 root 执行:
chmod +x install.sh uninstall.sh check_install.sh
./install.sh
安装脚本会自动备份原文件,例如:
/root/dyndns-aliyun-tencent-backup-20260621-090000
并把补丁包复制到持久目录:
/root/dyndns-aliyun-tencent
同时注册开机自愈脚本:
/usr/local/etc/rc.d/dyndns-aliyun-tencent_check
以后如果 pfSense CE 升级覆盖了相关文件,重启后会自动检测并恢复补丁。
pfSense Plus
pfSense Plus 使用单独补丁包,避免和 CE 混用:
pfSense-plus-dyndns/
├── src/
├── install.sh
├── uninstall.sh
├── check_install.sh
└── readme.me
安装方式相同:
chmod +x install.sh uninstall.sh check_install.sh
./install.sh
安装后持久目录为:
/root/dyndns-plus-aliyun-tencent
开机自愈脚本为:
/usr/local/etc/rc.d/dyndns-plus-aliyun-tencent_check
OPNsense
OPNsense 需要安装 os-ddclient 插件, Dynamic DNS 使用 native 后端和 Python ddclient 兼容模块,目录结构与 pfSense 不同。
项目结构:
opnsense-dyndns-aliyun-tencent/
├── src/
├── install.sh
├── uninstall.sh
├── check_install.sh
└── readme.me
上传到 OPNsense 后执行:
chmod +x install.sh uninstall.sh check_install.sh
./install.sh
安装后持久目录为:
/root/opnsense-dyndns-aliyun-tencent
并注册以下自愈入口:
/usr/local/etc/rc.d/opnsense-dyndns-aliyun-tencent_check
/usr/local/etc/rc.syshook.d/start/99-opnsense-dyndns-aliyun-tencent
/usr/local/etc/rc.syshook.d/upgrade/99-opnsense-dyndns-aliyun-tencent
这样 OPNsense 在开机和升级后都会自动检查补丁是否还存在。如果升级覆盖了文件,会自动重新安装。
配置方法
pfSense
进入:
Services > Dynamic DNS > Dynamic DNS Clients
新增一个 Dynamic DNS 客户端。
阿里云配置
选择:
Aliyun DNS
或 IPv6:
Aliyun DNS (v6)
字段填写:
Username: AccessKey ID
Password: AccessKey Secret
Hostname: 主机记录,例如 www;根域名填写 @
Domain name: 域名区域,例如 example.com
TTL: 可选,默认 600
示例:
Hostname: nas
Domain name: example.com
最终会更新:
nas.example.com
如果要更新根域名:
Hostname: @
Domain name: example.com
腾讯云配置
选择:
Tencent Cloud DNS
或 IPv6:
Tencent Cloud DNS (v6)
字段填写:
Username: SecretId
Password: SecretKey
Hostname: 主机记录,例如 www;根域名填写 @
Domain name: 域名区域,例如 example.com
Zone ID: 可选,填写解析线路;不填默认使用 默认
TTL: 可选,默认 600
OPNsense
进入:
Services > Dynamic DNS > Settings
建议使用:
Backend: native
阿里云配置
新增账户:
Service: Aliyun DNS
Username: AccessKey ID
Password: AccessKey Secret
Zone: example.com
Hostname(s): www.example.com 或 @
TTL: 可选,默认 600
腾讯云配置
新增账户:
Service: Tencent Cloud DNS
Username: SecretId
Password: SecretKey
Zone: example.com
Hostname(s): www.example.com 或 @
resourceId: 可选,填写解析线路;不填默认使用 默认
TTL: 可选,默认 600
卸载方法
每个项目都提供 uninstall.sh。
恢复最新备份:
./uninstall.sh
也可以指定备份目录:
./uninstall.sh /root/对应的-backup-目录
卸载时会:
- 恢复原文件
- 清理自愈脚本
- OPNsense 会清理 syshook
- 重新检查语法
- 必要时重启 Dynamic DNS 服务
注意事项
- API 密钥权限要足够。阿里云 AccessKey 需要有 DNS 记录查询、新增、修改权限。腾讯云 SecretId / SecretKey 需要有 DNSPod 记录查询、新增、修改权限。
- 建议使用子账号密钥。不要直接使用主账号 AK/SK。建议创建 RAM 子用户或腾讯云子账号,只授予 DNS 管理相关权限。
- 升级后自动恢复不是强行覆盖。补丁自愈脚本会先检查目标文件结构。如果上游系统升级后 Dynamic DNS 结构变化太大,脚本会停止并提示,避免破坏系统。
- 先测试一个子域名,确认可以正常更新后,再用于正式域名。

