在法国用 Freebox 自带 DDNS 连家里 NAS,动态 IP 变了别急着重启
家里 NAS 跑 DSM 7.2,Freebox Pop 光纤,公网 IPv4 不是固定地址。之前用 Freebox OS 自带的 DDNS 功能,域名填的是自己买的 .fr 域名,托管在 OVH。现象是:Freebox 重启或运营商侧租约更新后,外网访问会断十几分钟,DSM 里 QuickConnect 倒是能连上,但走的是中继,速度掉到几百 KB/s。
我的做法是关掉 DSM 里自带的 DDNS,只让 Freebox 更新 A 记录,然后在 NAS 上写个很短的检查脚本,不依赖第三方客户端:
#!/bin/sh
DOMAIN="nas.example.fr"
CUR_IP=$(curl -s https://api.ipify.org)
DNS_IP=$(dig +short $DOMAIN @1.1.1.1 | tail -1)
if [ "$CUR_IP" != "$DNS_IP" ]; then
logger -t ddns "mismatch: cur=$CUR_IP dns=$DNS_IP"
# 这里只记日志,不自动改 DNS,避免和 Freebox 抢着更新
fi
这个脚本每 10 分钟跑一次 cron,只做比对和记录,不写 DNS。真正更新 A 记录还是交给 Freebox OS 里的 DDNS 页面,因为 Freebox 知道自己的公网 IP 变化事件,比轮询更及时。我只需要在日志里确认它到底有没有更新成功。
为什么这样取舍:Freebox 的 DDNS 支持自定义域名,但只认一部分托管商,OVH 的 API 它不直接调,实际是 Freebox 先拿到 IP 再通过 HTTP 请求更新,失败时页面只给一个红点,没有详细错误。我试过让 NAS 自己用 OVH API 更新,结果两边同时写,A 记录偶尔被改回旧 IP,TTL 60 秒也救不了。后来统一成“Freebox 写,NAS 只读校验”,冲突就没了。代价是如果 Freebox 的更新请求被 OVH 限流,我得手动去 OVH 面板改,但这种情况一个月最多一次。
会失效的地方:Freebox 的 DDNS 页面在“模式”里选“自定义主机名”时,有些 .fr 域名要求先做 TXT 验证,Freebox 不提示这一步,只显示更新失败。我是先去 OVH 加了 _ddns 的 TXT 记录才通。另外,如果你的公网 IP 是 CGNAT(Freebox 某些套餐默认开),DDNS 更新的是运营商级 NAT 地址,外网根本连不进来,这时候脚本比对永远一致,但访问就是不通,得先确认 traceroute 第一跳是不是私网地址。
你们在法国用 Freebox 或 Orange 的光纤时,DDNS 更新失败一般先查哪一步?是看托管商的 TXT 验证,还是直接换第三方客户端?
0 条评论
还没有评论,写下第一条。