在OpenWrt上安装和配置DDNS

91 次浏览

1、安装DDNS插件

opkg update
opkg install luci-app-ddns

也可通过Luci安装。

2、添加自定义阿里云脚本

OpenWrt上的新版ddns插件已移除阿里云配置,需自行添加

创建并编辑脚本:

nano /usr/lib/ddns/update_aliyun.sh

内容如下:

#!/bin/sh

# 阿里云 DDNS 更新脚本 for OpenWrt
# 依赖: curl, coreutils-date, coreutils-base64

DOMAIN="$1"
SUBDOMAIN="$2"
IP="$3"
ACCESS_KEY="$4"
ACCESS_SECRET="$5"

API_URL="https://alidns.aliyuncs.com"
TIMESTAMP=$(date -u +"%Y-%m-%dT%H%%3A%M%%3A%SZ")
RAND=$RANDOM

# 生成签名函数
percentEncode() {
    echo -n "$1" | sed -e "s/\+/%20/g;s/\*/%2A/g;s/%7E/~/g;s/ /%20/g"
}

# 生成签名
sign() {
    local StringToSign="GET&%2F&$(percentEncode "AccessKeyId=$ACCESS_KEY&Action=$1&DomainName=$DOMAIN&Format=json&RR=$SUBDOMAIN&SignatureMethod=HMAC-SHA1&SignatureNonce=$RAND&SignatureVersion=1.0&Timestamp=$TIMESTAMP&Type=A&Value=$IP&Version=2015-01-09")"
    local Signature=$(echo -n "$StringToSign" | openssl dgst -sha1 -hmac "${ACCESS_SECRET}&" -binary | base64)
    percentEncode "$Signature"
}

# 执行更新
ACTION="UpdateDomainRecord"
SIGNATURE=$(sign "$ACTION")

curl -s "${API_URL}?AccessKeyId=${ACCESS_KEY}&Action=${ACTION}&DomainName=${DOMAIN}&Format=json&RR=${SUBDOMAIN}&Signature=${SIGNATURE}&SignatureMethod=HMAC-SHA1&SignatureNonce=${RAND}&SignatureVersion=1.0&Timestamp=${TIMESTAMP}&Type=A&Value=${IP}&Version=2015-01-09" >/dev/null 2>&1

为脚本添加执行权限:

chmod +x /usr/lib/ddns/update_aliyun.sh

3、配置DDNS

修改配置文件:

nano /etc/config/ddns

添加ipv4配置块:

config service 'aliyun_ddns'
	option enabled '1'
	option lookup_host 'nas.example.com'      # 替换为你的完整子域名
	option domain 'example.com'               # 主域名
	option username '你的AccessKeyID'
	option password '你的AccessKeySecret'
	option ip_source 'web'
	option ip_url 'https://api.ipify.org'
	option interface 'wan'
	option force_interval '72'
	option retry_interval '60'
	option use_https '1'
	option update_script '/usr/lib/ddns/update_aliyun.sh'

添加ipv6配置块:

config service 'aliyun_ddns_ipv6'
	option enabled '1'
	option lookup_host 'nas.example.com'
	option domain 'example.com'
	option username '你的AccessKeyID'
	option password '你的AccessKeySecret'
	option ip_source 'network'
	option ip_network 'wan6'
	option use_ipv6 '1'
	option update_script '/usr/lib/ddns/update_aliyun.sh'

4、测试

手动触发更新:

/etc/init.d/ddns restart
/usr/lib/ddns/dynamic_dns_updater.sh aliyun_ddns

查看日志:

logread -e ddns

阿里云解析验证:
登录阿里云解析网站确认解析是否更新。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部