2025年6月21日星期六

BIND 9.20.9 配置 DDNS 实现动态更新记录


这次例子为 home.example.com 动态更新 A 记录

主权威DNS:


首先增加home子域
vim /etc/bind/zones/example.com.zone
# 增加下面 2 行 
$TTL 600 ; 10 minutes
home.example.com.     A    1.2.3.4

序列号记得加 1

# 使此 zone 增加的记录生效
rndc reload example.com
# 生成 SHA512 key
tsig-keygen -a HMAC-SHA512 ddnskey > /etc/bind/keys/ddnskey.key
# 配置文件里载入 key
vim /etc/bind/named.conf.local 
# 包含刚刚的 key 文件
include "/etc/bind/keys/ddnskey.key";
# 修改 zone 策略, 允许使用 key 动态更新
zone "example.com" {
    type master;
    file "/etc/bind/zones/example.com.zone";
    allow-transfer {
        x.x.x.x;
    };
    also-notify {
        x.x.x.x;
    }; 
    allow-update { key ddnskey; };     // 增加这一句,表示允许使用 ddnskey.key 动态更新
};
# 使配置生效
rndc reconfig
然后把 /etc/bind/keys/ddnskey .key 文件拷贝到没有固定IP的主机

动态IP的主机:


# 测试更新 A记录 是否能成功
nsupdate -k ./ddnskey .key <<EOF
server ns1.f78fk.net
zone example.com
update  delete  home.example.com.   A
update  add home.example.com.   600   A   6.6.6.6
send
EOF
# 验证
dig home.example.com 
A 记录看到已经变成 6.6.6.6 了

全自动化:

git clone https://github.com/liuyuf78fk/F78FK-DDNS.git
cd F78FK-DDNS
根据 README 去做 。

# 修改 auto_ddns_update.sh 
ZONE="zone 名,在本例中此值为 example.com"
FQDN="需要更新的完整域名 (  本例中此值为 home.example.com.  )"
KEY="ddnskey.key 的绝对路径"
TYPE="A 记录或者 AAAA 记录"
TTL="TTL 值,DDNS 一般设置为 600 也就是10分钟"
DDNS_SCRIPT="f78fk.ddns_update.sh 的路径"
GET_IP_SCRIPT="getip.sh 的路径"
LOG=true 或 false 调试期间设置为 true,测试稳定后设置为 false
# 添加定时任务(每 15 分钟执行一次)
crontab -e
添加以下内容( 路径根据实际修改 ):
*/15 * * * * /home/<your_username>/F78FK-DDNS/auto_ddns_update.sh
之后系统会每隔15分钟检查IP如果有变化的话会自动更新 A记录 到 DNS 服务器。

没有评论:

发表评论

XG-040G-XX SuPassword 解密工具

 买了新光猫 XG-040G-TF ,  所以写了一个 SuPassword 解密工具, 以备不时之需 . 点击下载