美文网首页
bind9 实现动态解析域名

bind9 实现动态解析域名

作者: grey_27 | 来源:发表于2020-02-28 18:11 被阅读0次

    之前我们已经完成了bind9的部署 https://www.jianshu.com/p/2330c4fcfe7d

    但是我们本地的外网ip可能会经常变化,这就需要dns具有动态解析的能力,即ddns,而nsupdate命令就是专门用于更新解析记录的命令

    首先安装nsupdate

    sudo apt install dnsutils
    

    为了保证安全对于解析记录需要进行密匙认证,只有经过带密匙的nsupdate才能执行

    • 生成密匙对
    dnssec-keygen -a HMAC-MD5 -b 512 -n HOST ddns
    
    • 查看密匙
    cat Kddns.+157+61025.key
    # 复制最后一串字符
    ddns. IN KEY 512 3 157 3yt7EFwr01uf3XO9kEMJfag3dyFbbDFdgLUnxgkQgCKX0thVd8c/eT5K riEQGcPT8elNm0PR+c2EmmKTJz7BTA==
    
    • 更改bind9配置文件
    >> sudo vim /etc/bind/named.conf.local
    // 增加一个ddns的键值对,将secret改为你刚刚复制的密匙串
    key "ddns" {
            algorithm hmac-md5;
            secret "3yt7EFwr01uf3XO9kEMJfag3dyFbbDFdgLUnxgkQgCKX0thVd8c/eT5K riEQGcPT8elNm0PR+c2EmmKTJz7BTA==";
    };
    
    zone "ubuntu.com" {
            type master;
            file "/etc/bind/db.ubuntu.com";
            // 增加一个参数允许带密匙的命令修改
            allow-update{key ddns;};
    };
    
    • 重启bind9
    sudo service bind9 restart
    

    在本地实验一下是否可以动态修改

    nsupdate -k Kddns.+157+61025.key
    > server 127.0.0.1
    > update delete test1.ubuntu.com A
    > update add test1.ubuntu.com 80000 IN A 192.168.0.2
    > send
    > quit
    

    检查一下是否修改成功

    dig @127.0.0.1 test1.ubuntu.com
    

    最后只需要将Kddns.+157+61025.key文件复制到本地服务器上再写个检测ip变化自动更新的脚本

    sudo vim update_ddns

    #!/bin/bash
    # ddns服务器地址
    dnsserver=127.0.0.1
    # nsupdate密匙路径
    keyfile=Kddns.+157+61025.key
    # 需要更改的解析域名
    domain=test1.ubuntu.com
    while true
    do
        ddnsip=`curl http://www.3322.org/dyndns/getip`
        ip=`cat ddnsip` || ""
        if [ $ddnsip == $ip ]
        then
            echo "当前IP没有更改";
        else
            echo "$ddnsip"                                 > ddnsip
            echo "server $dnsserver"                       >  ddns
            echo "update delete $domain A "               >>  ddns
            echo "update add    $domain 600 A  $ddnsip "  >>  ddns
            echo "send"                                   >>  ddns
            nsupdate -k $keyfile -v ddns
        fi
        sleep 3
    done
    

    将脚本设为可执行

    sudo chmod +x update_ddns
    

    相关文章

      网友评论

          本文标题:bind9 实现动态解析域名

          本文链接:https://www.haomeiwen.com/subject/mmalhhtx.html