必备条件
- 已刷好OpenWRT的路由
- Openwrt已配置好网络
根据CPU架构下载DDNS-go
我用的是迅雷赚钱宝1代,其CPU是arm7,所以要下载对应的arm7版本
https://github.com/jeessy2/ddns-go/releases
解压文件,将文件复制到openwrt
用WinSCP连接OpenWRT,复制ddns-go进去
如果不知道放到哪里,就用df -h查看空间使用情况:
root@OpenWrt:~# df -h
Filesystem Size Used Available Use% Mounted on
rootfs 75.7M 3.7M 72.0M 5% /
/dev/ubi0_0 75.7M 3.7M 72.0M 5% /
devtmpfs 512.0K 0 512.0K 0% /dev
tmpfs 113.8M 256.0K 113.6M 0% /tmp
tmpfs 512.0K 0 512.0K 0% /dev
SSH client, 终端客户端
安装
命令行进入ddns-go所在文件夹,执行以下命令。
Mac/Linux: ./ddns-go -s install
安装后自启动都是配置好的。 [可选] 服务卸载
Mac/Linux: ./ddns-go -s uninstall
[可选] 支持安装带参数
-l 监听地址
-f 同步间隔时间(秒)
-cacheTimes 间隔N次与服务商比对
-c 自定义配置文件路径
-noweb 不启动web服务
-skipVerify 跳过证书验证
-dns 自定义 DNS 服务器
-resetPassword 重置密码
问题解决
openwrt ddns-go 查询域名信息发生异常! tls: failed to verify certificate: x509: certificate signed by unknown authority
原因:在路由器下运行ddns-go 因为缺少证书报错,由于/etc/ssl 路径被挂载为只读,无法导入证书。
解决办法:1. 安装:ca-certificates,安装后相应证书文件都有了。
申请Cloudflare的API KEY
Cloudfalre 个人资料 -> 创建令牌 -> 编辑区域 DNS (使用模板)
配置ddns-go
配置cloudflare的API Key 配置域名 输入的二级域名记录如果不存在,ddns-go会自动创建。但在删除ddns-go配置时,并不会删除。
IPv6地址选直接从网卡获取,因为IPv6每个设备都有公网IPv6地址。如果主路由想为子网其他设备更新ddns ipv6, 可以使用命令根据MAC地址获取。
例如:
在Linux系统中获取网卡eth1的IPv6地址
ip -6 addr show eth1
获取局域网中的其它设备IPv6地址 其它设备需要支持EUI-64(IPv6后半部分包含ff:fe)
Linux
ip -6 route | awk '{print $1}' | awk '/240:?/' | awk -F::/ '{print $1 ":suffix of other mac"}'
Windows
Get-NetRoute -AddressFamily IPv6 | Where-Object { $_.DestinationPrefix.StartsWith("240") -and $_.DestinationPrefix.endsWith("/64") } | ForEach-Object { ($_.DestinationPrefix -split '::/')[0] + ":suffix of other mac" }
IPv4地址如果设备获取的地址是192.168.*.*这种私有地址,就选择通过接口获取,大多都是这种情况。
验证效果
ping xl2.500599.xyz
相关链接