Featured image of post OpenWRT上ddns 配置案例 [CloudFlare]

OpenWRT上ddns 配置案例 [CloudFlare]

使用OpenWRT插件 实现动态更新cloudflare中自己的二级域名

前提&背景:

1)家中宽带申请到了公网ipv4,也有自己的域名;

2)平时在外面(旅游、出差)都需要拨vpn回到家中,这样ddns 就成了刚需;

3)之前域名管理注册到dnspod CN上,很稳定。只是因为最近把域名管理迁移到了cloudflare中,所以利用现有的iStoreOS(N1)重新关联vpn域名到公网ipv4。

一开始查了下网上的资料和视频,搞得太复杂。其实两个步骤就可以搞定,所以这里更新下。

准备 cloudflare dns 令牌

  • 登录自己的cloudflare 帐号 (https://dash.cloudflare.com/login)

  • 登录成功后选择自己的域名进入

  • 在域名页面下方,找到“获取API 令牌”的链接

  • 点击进入该页面,选择第一个模板:创建一个可以编辑dns的令牌。该令牌创建成功后,会用于后续openwrt 中插件更新指定域名。

  • 点击创建令牌后,会获取到这样一个令牌值。这个令牌 记得复制下来,一会要用!

    同时,可以在 iStoreOS 命令行中使用下面的curl 命令测试该令牌是否生效:

1
2
curl "https://api.cloudflare.com/client/v4/user/tokens/verify" \
     -H "Authorization: Bearer qx3t1mdQ3hP4oCtR2Yw0usLFev1l1Nh0ipcoMJGA"

​ 这里的信息“Bearer qx3t1mdQ3hP4oCtR2Yw0usLFev1l1Nh0ipcoMJGA” 会在后续 ddns-scripts 中(下面两种方法的第二种)用到。

iStoreOS 中安装ddns插件

经过实测,两个插件都可以实现。不过一个配置一目了然、一个配置项看着复杂一点。

先说简单的:

DDNS-go 插件

1)该插件在 iStoreOS中需要 在应用商店安装(下图第二个):

2)安装成功后,进入ddns-go 插件配置页。先勾选启用选项,然后保存并应用生效:

3)服务启动成功后,进入配置页面:

有常见的 域名服务商。这里选择“Cloudflare”,并在Token中输入上面已经创建好的dns api令牌“qx3t1mdQ3hP4oCtR2Yw0usLFev1l1Nh0ipcoMJGA”

4)下方 IPv4 配置中,输入这里希望管理的二级域名: vpn.nxlan.cn

5)因为,我这里不使用ipv6,其他配置不动,点击“save”保存生效。一定要点击保存才会生效。

​ 生效后,注意观察当前页面右侧的日志:

1
2
3
4
5
6
7
8
2025/07/22 10:41:45 配置文件已保存在: /etc/ddns-go/ddnsgo-config.yaml 
2025/07/22 10:41:45 连接失败! 点击查看接口能否返回IPv4地址 
2025/07/22 10:41:45 错误信息: Get "https://myip4.ipip.net": dial tcp4: lookup myip4.ipip.net on 127.0.0.1:53: no such host 
2025/07/22 10:41:46 你的IP 36.161.39.63 没有变化, 域名 vpn.nxlan.cn 
2025/07/22 10:41:48 配置文件已保存在: /etc/ddns-go/ddnsgo-config.yaml 
2025/07/22 10:41:48 连接失败! 点击查看接口能否返回IPv4地址 
2025/07/22 10:41:48 错误信息: Get "https://myip4.ipip.net": dial tcp4: lookup myip4.ipip.net on 127.0.0.1:53: no such host 
2025/07/22 10:41:49 你的IP 36.161.39.63 没有变化, 域名 vpn.nxlan.cn 

最后一行显示了,目前我们家中宽带的ip地址注册上了。

6)最后测试:

先使用nslookup 验证自己的vpn域名-ip 对应关系是否一样,再使用手机断开wifi 使用4g/5g 移动网络拨VPN 测试。

1
2
3
4
5
6
7
% nslookup vpn.nxlan.cn 223.5.5.5
Server:		223.5.5.5
Address:	223.5.5.5#53

Non-authoritative answer:
Name:	vpn.nxlan.cn
Address: 36.161.39.63

然后是第二种插件配置方法:

ddns-scripts 插件

1)该插件默认在 iStorOS 中有安装。同样,先找到这个配置页面:

2)先启动服务,让ddns 运行:

3)配置页面下方,点击“添加新服务”。dns服务商 选则cloudflare -v4

4)先编辑刚刚创建的服务配置:

5)添加域名信息:

关键一步:输入用户名、密码。 分别对应刚才生成的DNS Token 中 “ Bearer qx3t1mdQ3hP4oCtR2Yw0usLFev1l1Nh0ipcoMJGA” 这块。

6)“高级设置”中添加,IP地址来源为URL,检测ip 用的url为 http://checkip.dyndns.com

​ 其他配置项目,不用改动。最后点击“保存”。

7) 上面保存好后,返回到服务页面,再点击“保存并应用”就生效了。

​ 最后不点击这个按钮,插件不会应用新添加的配置。

8) 检查方法:一种方法是点击编辑中的“日志查看器”:

还有一种方法,是观察当前服务状态中是否已经出现了对应ip。

这样,第二种插件使用方法,也就完成啦。

Q&A:

  1. 服务成功运行后,关联的是国外ip 怎么办?

    1
    2
    3
    4
    5
    6
    
    很可能是上述提到的几个url 走到梯子上去了国外。
    需要检查用于检测ip的几个域名规则是否走到了国外:
    - http://checkip.dyndns.com
    - https://myip4.ipip.net
    - https://ddns.oray.com/checkip
    - https://ip.3322.net
    
  2. 域名关联的ip 是国内ip,可是该ip无法从手机上访问到 怎么办?

    1
    2
    3
    
    首先,排除自己访问的服务不能是 80 443 这种不能发布的服务。
    其次,确认下运营商给你的ip 是可以从外部访问的ip,而不是一个公共ip。例如 我这里举例的ip(36.161.39.63)就是一个公共ip。 
    最后,检查自己光猫上的端口映射。因为,即使外部访问这个ip到了光猫上,光猫没有映射服务到内网主机,仍然是无法从外部访问自己家中服务的。