说明
本系列前文中,我记录了 WAN IPv6 的获取和 HTTPS 监听端口模式的更改,为了给后文——在 IPv6 防火墙的保护下——进行端口转发做铺垫,本文记录如何实现 OPNsense 下的阿里云 DDNS 。
目前,网络上流行的、支持阿里云 IPv6 DDNS 解析的成品工具,绝大部分都是 基于 Docker 平台的容器。而基于 FreeBSD 的 OPNsense 在 Docker 的支持上天生残疾,所以建议通过 脚本+计划
的方式实现 IPv6 的 aliddns 。
下载 aliddns 程序
经过在 Gitee 和 Github 上寻找测试,最终选择支持全平台的 GitHub - honwen/aliyun-ddns-cli ,可以便捷识别 WAN 口的 IPv6 地址。
其他要不然就是只支持 IPv4 ,要不就是支持了 IPv6 但无法动态解析。
下载对应 OPNsense x86 平台的 freebsd-amd64
版本压缩包,解压 .tar.gz
得到可执行程序 aliddns
。
chmod +x ./aliddns
赋予执行权限。
编写脚本
编写脚本 aliddns_run.sh
,通过绝对路径执行 aliddns :
#!/bin/sh
/home/ddns/freebsd-amd64/aliddns --id "<阿里云AccessKeyID>" --secret "<阿里云AccessKeySecret>" --ipv6 auto-update --domain <证书域名>
注意,--ipv6
要放在 auto-update
之前,否则报错。无 --ipv6
,则默认解析 IPv4 地址。
计划任务
因为阿里云域名解析的 TTL 为 10 分钟,则可以设定动态解析检查时间为 15 分钟。
在 OPNsense 的 /etc/crontab
文件末尾添加:
#minute hour mday month wday who command
# aliddns
*/15 * * * * root /home/ddns/freebsd-amd64/aliddns_run.sh
/etc/rc.d/cron restart
,重启计划任务执行。