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 服务器。

2025年6月19日星期四

BIND 9.20.9 配置 TSIG

主权威DNS



# 生成共享密钥
tsig-keygen sync-key

# 加载新密钥
vim named.conf
key "sync-key" {
    algorithm hmac-sha256; 
    secret               "DAopyf1mhCbFVZw7pgmNPBoLUq8wEUT7UuPoLENP2HY="; 
};

# 指示服务器使用密钥
vim named.conf.local

# 指示从 DNS1 更新zone需要共享密钥
server x.x.x.1 {    
     keys { sync-key ;}; 
}; 

# 指示从 DNS2 更新zone需要共享密钥
server x.x.x.2 { 
     keys { sync-key ;}; 
};

 zone "f78fk.net" { 
     type master; file "/etc/bind/zones/f78fk.net.zone"; 
     allow-transfer { 
            x.x.x.1;           //允许从 DNS1 更新zone
            x.x.x.2;           //允许从 DNS2 更新zone
         }; 
         also-notify {
             x.x.x.1;          //rndc reload后主动通知一次 DNS1 更新zone
             x.x.x.2;          //rndc reload后主动通知一次 DNS2 更新zone
         }; 
 };

从权威DNS 1



# 加载新密钥
vim named.conf
key "sync-key" {
    algorithm hmac-sha256; 
    secret               "DAopyf1mhCbFVZw7pgmNPBoLUq8wEUT7UuPoLENP2HY="; 
};

# 指示服务器使用密钥
vim named.conf.local

# 指定向主 DNS 更新 zone 时使用的共享密钥
server x.x.x.m {    
     keys { sync-key ;}; 
};
zone "f78fk.net" { 
     type slave; masters {
             x.x.x.m;    // 主 DNS 的 IP 地址
}; 
     file "/etc/bind/zones/f78fk.net.zone"; 
};

从权威DNS 2

 

# 加载新密钥
vim named.conf
key "sync-key" {
    algorithm hmac-sha256; 
    secret               "DAopyf1mhCbFVZw7pgmNPBoLUq8wEUT7UuPoLENP2HY="; 
};

# 指示服务器使用密钥
vim named.conf.local

# 指定向主 DNS 更新 zone 时使用的共享密钥
server x.x.x.m {    
     keys { sync-key ;}; 
}; 
zone "f78fk.net" { 
     type slave; masters {
                 x.x.x.m;    // 主 DNS 的 IP 地址
}; 
     file "/etc/bind/zones/f78fk.net.zone"; 
};

官网文档:
https://downloads.isc.org/isc/bind9/9.20.10/doc/arm/html/chapter7.html#generating-a-shared-key

XG-040G-XX SuPassword 解密工具

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