为 Openwrt 配置 ddns-go
看了网上的教程,配置动态 DNS 非常简单。当时还是遇到了一些问题,故此记录一下。
1. 安装 ddns-go
在 Openwrt 的 Web 界面中,进入 系统 -> 软件包,使用链接进行安装
luci-app-ddns-go
在 Release 中找到最新版本,安装本体,luci,语言包
2. 配置防火墙
网上很多配置 DDNS-Go 的教程都没有提到防火墙的配置,或许是因为教程大多是19年22年的,那个时候 Openwrt 的主流版本是 19.x 和 21.x
现在我使用的是 23.x 的版本,防火墙的配置和之前的版本有些不同
在 Openwrt 的 Web 界面中,进入 网络 -> 防火墙
点击暴露至公网,添加自定义的端口,以及勾选暴露后台至公网,协议:TCP
也可以手动编写通行规则
手动编写通信规则
我发现上面的这种方法不是所有固件都适用,所以还有一种手动编写防火墙规则的方法
/etc/config/uhttpd 找到以下内容
1 | config uhttpd 'main' |
把443改成你的端口号,然后重启 /etc/init.d/uhttpd restart
然后编写防火墙规则 vi /etc/config/firewall
1 | config rule |
把 dest_port 改成你设置的端口号
然后重启防火墙 /etc/init.d/firewall restart
为啥要改掉 443 呢?因为 ISP 封禁了 80、443、8080 端口的访问,导致无法访问 Openwrt 的后台,所以需要改成其他端口
3. 配置 Cloudflare
在 Cloudflare 的后台,添加一个新的域名解析记录
类型:AAAA
名称:自定义
IPv6 地址:随便,填写
fe80::1或者::1都可以TTL:自动
代理状态:关闭
然后退出域名,在个人中心的 API Tokens 中,点击 Create Token,选择 Edit zone DNS 的模板,指定你的域名,点击 Continue to summary,然后点击 Create Token
4. 配置 ddns-go
在 Openwrt 的 Web 界面中,进入 服务 -> DDNS-Go,点击启用
跳过证书验证,配置完成后,点击 保存并应用
打开 ddns-go 的后台,设置账号密码
DNS 服务商:Cloudflare
填入CloudFlare提供的Token
IPv4 地址: 取消勾选
IPv6 地址: 通过命令获取
1
ip -6 addr | grep inet6 | awk -F '[ \t]+|/' '$3 == "::1" { next;} $3 ~ /^fe80::/ { next;} /inet6/ {print $3}' | head -n 1 | awk '{print "[" $1 "]:你的端口号"}'
这条命令会获取本机的 IPv6 地址,格式为 [IPv6地址]:端口号,但是好像又多此一举了,CF的后台并没有变化,可以使用前两种方式获取IP地址。
5. 测试
先ping域名,若无IP返回,检查DNS配置,如果没问题,
访问 域名:端口号,如果能访问到 Openwrt 的后台,说明配置成功;
否则检查防火墙配置。
因为大部分 CF 都配置了强制 HTTPS,所以访问时需要使用 HTTPS 协议。
参考
OpenWrt配置和使用DDNS-GO
正确地配置 IPv6 防火墙和 DDNS 以在公网访问设备