如何设置DNSSEC上NSD域名服务器在Ubuntu 14.04

关于DNSSEC

DNS安全扩展(DNSSEC)是一种旨在保护应用程序和DNS解析器免于使用伪造或操纵的DNS数据的技术。

问题:
这是可能的攻击者可以利用DNS响应篡改或使DNS Cache Poison ,并采取用户恶意网站在他们的地址栏中的合法域名。

解决方案:
DNSSEC配置的权威DNS服务器通过使用私钥对每个资源记录进行数字签名来防止此类攻击。 DNS解析器使用公钥和数字签名来验证区域记录的完整性。

关于NSD

Nameservers守护程序(NSD)是由开发一个开源的仅权威DNS服务器软件NLnet的实验室 它使用BIND样式区域文件,轻松配置。

只有权威的DNS服务器为其负责的区域提供查询的答案。 在本文中,我们将为两个域名设置我们自己的权威NSDNameservers。 我们将配置NSD为这两个域名提供DNSSEC签名的回复。

先决条件

本文要求读者在以下领域具有丰富的知识:

本文将使用两个域名:

域名 Nameservers
example.com master.example.com
slave.example.com
foob​​ar.org master.example.com
slave.example.com

以下两个Droplets将运行NSD:

主机名 IP地址
master.example.com 1.1.1.1
slave.example.com 2.2.2.2

你应该用你的Minion域名服务器的IP地址替换1.1.1.1与主域名服务器的整个教程中的IP地址,2.2.2.2。

本文的目的是展示如何设置一个Nameservers,无论其域名的DNSSEC状态如何,都可以为使用DNSSEC的域提供服务。 example.com用于域名服务器的方便; 没有要求为域名服务器域名配置DNSSEC。 Nameservers可以很容易地设置为master.my-soa.com和slave.my-soa.com。

您还需要考虑到您希望域解析的IP地址。 如果您尚未设置这些域的Web主机,则可以创建另一个测试Droplet,它将运行Web服务器。 选择在Ubuntu 14.04图像灯泡

LAMP在Ubuntu 14.04镜像

灯泡Droplet的IP地址将是3.3.3.3。 此IP将用作这两个域名的A记录,以检查它们是否从Web浏览器解析。 你应该在整个教程中所需的虚拟主机的IP地址(ES)代替3.3.3.3。

DNSSEC术语

DNSSEC工作在概念公钥加密技术 ,并引入新的DNS记录类型。 在本节中,我们将讨论本文中将使用的一些术语。

  • ZSK:Z一个S igningķEY是公/私密钥对。 私钥为所有DNS记录创建数字签名,而DNS解析器使用公钥来验证它。
  • KSK:K EY 小号 igningķEY是公/私密钥对。 私钥对ZSK进行签名,而公钥对其进行验证。

记录

  • DNSKEY:包含KSK和ZSK的公钥。
  • RRSIG: 方案资源ř的eCord 西格自然存在于每一个记录,并提供该记录的数字签名。 RRSIG记录基于记录本身和ZSK。
  • DS:D elegation 小号 igner记录用于验证的DNSKEY记录的完整性。 此记录输入域名注册商的控制面板,并位于TLD的权威域名服务器上。

设置域的DNSSEC需要具有Nameservers和注册器的适当记录。

DNSSEC的工作原理

首先,我们将在站点所有者的角度来看(也就是你!)谈论DNSSEC。 您要确保来自您的Nameservers的所有DNS记录都已签名。 这样,如果有人试图欺骗您的DNS记录,它们将被标识为false,您的访问者可以避免访问恶意网站。

那么如何设置呢? 首先,对于每个域,您必须在Nameservers上生成两个唯一的私钥/公钥对。 域的公钥存储在DNSKEY记录中,该记录列在该域的区域文件中。 另外两种类型的记录,DS记录和RRSIG记录,从DNSKEY记录生成。 这三种类型的记录都是加密链接的。 也就是说,一旦你看到三个中的一个,你可以知道其他两个是否有效。

(注意:为了清楚起见,虽然每个域都有多种类型的记录,但我们将在此解释的其余部分以单数形式提及它们。)

接下来,将DS记录上传到您的注册商,并将其发布到您域的TLDNameservers。 由于发布DS记录的唯一方法是通过注册商,这证明域所有者是发布DS记录的人,这证明了该DS记录的有效性。 在DS记录的目的是为了建立TLD域名服务器和您运行的是您的域的域名服务器之间的验证链 这是因为DS记录基于DNSKEY,所以任何DNS解析器可以检查您的DNSKEY是否匹配DS记录,因此,它是正确的一个域。

RRSIG记录是基于记录值本身(例如IP地址)和DNSKEY的其他类型的DNS记录(如A,MX等)附带的签名。

配置DNSKEY,DS和RRSIG记录后,现在可以为您的域设置DNSSEC。

接下来,我们从用户的角度来讨论它。 假设某个用户想要访问您的域,因此他们会查询您域的A记录的DNS解析器。 在此示例中,递归DNS解析器已经针对TLDNameservers上的DS记录检查了此域的DNSKEY的有效性,但是也可以很容易地首次检查这一点。

以下是此查询的工作原理:

  1. 用户发送A记录的查询,该记录到达DNSSEC感知递归DNS服务器。
  2. DNS服务器发现被查询的域通过发现其DS记录来支持DNSSEC。 它发出了与A记录的查询DO位到你的权威域名服务器。
  3. 您的Nameservers将使用A记录和相应的RRSIG记录进行响应。
  4. 递归DNS服务器计算A记录+其在文件上具有的DNSKEY记录的值,并对照解密的RRSIG记录进行检查。 (它可以检查DS记录以首先验证DNSKEY记录,如果它不在文件上)。如果哈希匹配,DNS服务器返回A记录给用户,谁现在可以访问您的网站。

DNSSEC验证

欲了解更多有关DNSSEC如何工作的,你可能需要阅读这篇文章 对于DNSSEC术语的更完整列表,请阅读

步骤零 - 检查域和注册商支持

在决定在您自己的NSDNameservers上设置DNSSEC之前,请确保您的域扩展(.com,.org等)和注册服务商支持DNSSEC。

要检查域扩展是否已准备好DNSSEC,请使用以下命令查询其DNSKEY记录:

dig DNSKEY com. +short

这应该返回公钥如下:

256 3 8 AQPbokupKUJ5LLAtDEs6R3nDOHxF2jQEFtJEFTiDcfbsZia4fg3EK9Wv D9ZIr+7t2n1ddqRGHnTTInHTjduaKFPqm2iKaDHdrc6095o1mzqojnd1 bTtI45XNu61QmT5IU4VPT7HDUSby+53gLAsjLPyNsNEMp7Cc52RVxCHD no9efw==
257 3 8 AQPDzldNmMvZFX4NcNJ0uEnKDg7tmv/F3MyQR0lpBmVcNcsIszxNFxsB fKNW9JYCYqpik8366LE7VbIcNRzfp2h9OO8HRl+H+E08zauK8k7evWEm u/6od+2boggPoiEfGNyvNPaSI7FOIroDsnw/taggzHRX1Z7SOiOiPWPN IwSUyWOZ79VmcQ1GLkC6NlYvG3HwYmynQv6oFwGv/KELSw7ZSdrbTQ0H XvZbqMUI7BaMskmvgm1G7oKZ1YiF7O9ioVNc0+7ASbqmZN7Z98EGU/Qh 2K/BgUe8Hs0XVcdPKrtyYnoQHd2ynKPcMMlTEih2/2HDHjRPJ2aywIpK Nnv4oPo/

没有输出表明缺少对该域扩展的DNSSEC支持。

如果您的TLD支持DNSSEC是不够的; 域注册商还必须具有在其控制面板中输入DS记录的选项。 这可以通过谷歌搜索“ 注册商名 DNSSEC”,或直接要求注册商进行确认。 以下是一些支持DNSSEC的流行注册商:

一旦你确认你都和TLD域名注册机构支持DNSSEC,可以开始设置您的自定义域名服务器。

第一步 - 在两个服务器上安装和设置NSD

在这一步中,我们将安装两个主从服务器上配置NSD。 我们还将域example.com设置了DNS记录。 本节将作为NSD的快速设置。 阅读这篇文章上设置NSD了解详细说明。

主服务器

除了NSD服务器软件包在主服务器需要以下软件包:

  • ldnsutils:对于DNSSEC密钥生成和区域签名。
  • haveged:为了增加熵 安装此包可加快密钥生成过程。

为了避免错误在安装过程中创建一个系统用户名为NSD:

useradd -r nsd

-r选项创建一个系统用户。 更新存储库并安装NSD,ldnsutils和hasged。

apt-get update
apt-get install nsd ldnsutils haveged

从主服务器到从服务器DNS区域传输是通过一个共享的秘密安全。 使用以下命令随机生成秘密:

dd if=/dev/random count=1 bs=32 2> /dev/null | base64

记下输出字符串。 我们将两个主从服务器的配置文件中使用它。

sHi0avMk1bME89cnJdHkYzFBbvQmQ8YZ

为区域文件创建单独的目录:

mkdir /etc/nsd/zones

编辑NSD的配置文件:

nano /etc/nsd/nsd.conf

首先是服务器部分,它指定了区域文件,日志和PID(进程ID)文件的位置:

server:
    username: nsd
    hide-version: yes
    zonesdir: "/etc/nsd/zones"
    logfile: "/var/log/nsd.log"
    pidfile: "/run/nsd/nsd.pid"

隐藏版的指令防止NSD从返回其版本时CHAOS类查询完成。

按键部分,我们定义了一个名为关键的myKey,输入先前生成的秘密。

key:
    name: "mykey"
    algorithm: hmac-sha256
    secret: "sHi0avMk1bME89cnJdHkYzFBbvQmQ8YZ"

每个区域部分将包含域名,区文件名,它的从属服务器的详细信息:

zone:
    name: example.com
    zonefile: example.com.zone
    notify: 2.2.2.2 mykey
    provide-xfr: 2.2.2.2 mykey
zone:
    name: foobar.org
    zonefile: foobar.org.zone
    notify: 2.2.2.2 mykey
    provide-xfr: 2.2.2.2 mykey

通知: 提供-XFR:线应该从服务器的IP地址 保存文件并创建example.com区域文件。

nano /etc/nsd/zones/example.com.zone

我们将把以下数据添加到区域文件中。 变量都没有标明,因为你需要自定义所有条目:

$ORIGIN example.com.
$TTL 1800
@       IN      SOA     master.example.com.    email.example.com. (
                        2014080301
                        3600
                        900
                        1209600
                        1800
                        )
@       IN      NS      master.example.com.
@       IN      NS      slave.example.com.
master  IN      A       1.1.1.1
slave   IN      A       2.2.2.2
@       IN      A       3.3.3.3
www     IN      CNAME   example.com.
@       IN      MX      10 aspmx.l.google.com.
@       IN      MX      20 alt1.aspmx.l.google.com.
@       IN      MX      20 alt2.aspmx.l.google.com.
@       IN      MX      30 aspmx2.googlemail.com.
@       IN      MX      30 aspmx3.googlemail.com.

保存此文件并创建foob​​ar.org区域文件。

nano /etc/nsd/zones/foobar.org.zone

第二个区域文件:

$ORIGIN foobar.org.
$TTL 1800
@       IN      SOA     master.example.com.    email.example.com. (
                        2014080301
                        3600
                        900
                        1209600
                        1800
                        )
@       IN      NS      master.example.com.
@       IN      NS      slave.example.com.
@       IN      A       3.3.3.3
www     IN      CNAME   foobar.org.
@       IN      MX      0 mx.sendgrid.com.

保存文件,并检查使用NSD-checkconf命令配置错误:

nsd-checkconf /etc/nsd/nsd.conf

有效的配置不应该输出任何内容。 重新启动NSD服务器:

service nsd restart

检查DNS记录都在使用dig命令域效果。

dig ANY example.com. @localhost +norec +short

此命令的输出示例:

master.example.com. email.example.com. 2014080301 3600 900 1209600 1800
master.example.com.
slave.example.com.
3.3.3.3
10 aspmx.l.google.com.
20 alt1.aspmx.l.google.com.
20 alt2.aspmx.l.google.com.
30 aspmx2.googlemail.com.
30 aspmx3.googlemail.com.

重复dig命令第二个领域:

dig ANY foobar.org. @localhost +norec +short

我们已经在主服务器上成功安装和配置了NSD,并且还创建了两个区域。

从服务器

从属服务器只需要NSD包,因为没有密钥生成或签名。

创建一个系统用户名为NSD:

useradd -r nsd

更新存储库并安装NSD:

apt-get update
apt-get install nsd

为区域文件创建目录:

mkdir /etc/nsd/zones

编辑NSD配置文件:

nano /etc/nsd/nsd.conf

添加配置指令:

server:
    username: nsd
    hide-version: yes
    zonesdir: "/etc/nsd/zones"
    logfile: "/var/log/nsd.log"
    pidfile: "/run/nsd/nsd.pid"

key:
    name: "mykey"
    algorithm: hmac-sha256
    secret: "sHi0avMk1bME89cnJdHkYzFBbvQmQ8YZ"

zone:
    name: example.com
    zonefile: example.com.zone
    allow-notify: 1.1.1.1 mykey
    request-xfr: 1.1.1.1 mykey
zone:
    name: foobar.org
    zonefile: foobar.org.zone
    allow-notify: 1.1.1.1 mykey
    request-xfr: 1.1.1.1 mykey

的myKey 秘密应该是完全一样的一个在主服务器中输入。 允许-通知请求XFR线使用主服务器的IP地址

检查配置错误:

nsd-checkconf /etc/nsd/nsd.conf

重新启动NSD服务:

service nsd restart

力既与NSD控制命令域的区域传输:

nsd-control force_transfer example.com
nsd-control force_transfer foobar.org

现在,检查这台服务器可以回答域example.com的查询。

dig ANY example.com. @localhost +norec +short

如果这返回与master相同的结果,则此区域设置正确。 重复dig命令的foorbar.org域,以验证其是否区设置正确。 我们现在有一个对它们的权威域example.comfoob​​ar.org NSD DNS服务器。

此时,您应该可以在网络浏览器中访问您的域名。 他们将解决到我们设置的默认LAMP服务器,或者您指定的任何主机。

第二步 - 生成密钥并签名区域

在这一步中,我们将生成区域签名密钥(ZSK)和密钥签名密钥(KSK),为每个域的一对(私人和公共)。 在节中的命令应该在主服务器上,除非另有规定执行。

将当前目录更改为NSD的区域目录:

cd /etc/nsd/zones

LDNS-keygen命令生成密钥文件和格式打印他们的名字K<domain>+<algorithm>+<key-id> 而不是记下这个名称,我们将它分配给变量,以便它可以很容易地引用。

产生在RSASHA1-NSEC3-SHA1算法ZSK:

export ZSK=`ldns-keygen -a RSASHA1-NSEC3-SHA1 -b 1024 example.com`

接着加入-k选项相同的命令生成KSK:

export KSK=`ldns-keygen -k -a RSASHA1-NSEC3-SHA1 -b 2048 example.com`

此目录现在将有以下六个附加文件:

  • .private扩展2私钥。
  • 2公钥与.KEY扩展。
  • 2 DS记录用的.ds扩展名。

第三步 ,我们将生成一个不同的消化类型的DS记录,所以,为了避免混淆,删除这些记录DS文件。

rm $ZSK.ds $KSK.ds

重复的foob​​ar.orgLDNS-凯基命令:

export ZSK2=`ldns-keygen -a RSASHA1-NSEC3-SHA1 -b 1024 foobar.org`
export KSK2=`ldns-keygen -k -a RSASHA1-NSEC3-SHA1 -b 2048 foobar.org`
rm $ZSK2.ds $KSK2.ds

LDNS-signzone将命令用来签署DNS区域。 此命令的-s选项接受一个Salt值。 我们生成随机charaters,计算一个SHA1哈希,并将此值作为Salt。

ldns-signzone -n -p -s $(head -n 1000 /dev/random | sha1sum | cut -b 1-16) example.com.zone $ZSK $KSK

创建名为example.com.zone.signed一个新文件。

执行的foob​​ar.orgLDNS-signzone将命令:

ldns-signzone -n -p -s $(head -n 1000 /dev/random | sha1sum | cut -b 1-16) foobar.org.zone $ZSK2 $KSK2

NSD必须被配置为使用.signed区域文件。 编辑配置文件:

nano /etc/nsd/nsd.conf

修改zone数据文件中: 区域选项下这两个域部分。

zone:
    name: example.com
    zonefile: example.com.zone.signed
    notify: 2.2.2.2 mykey
    provide-xfr: 2.2.2.2 mykey
zone:
    name: foobar.org
    zonefile: foobar.org.zone.signed
    notify: 2.2.2.2 mykey
    provide-xfr: 2.2.2.2 mykey

要应用更改并重新加载区域文件,请执行以下命令:

nsd-control reconfig
nsd-control reload example.com
nsd-control reload foobar.org

通过执行DNS查询检查DNSKEY记录:

dig DNSKEY example.com. @localhost +multiline +norec

这应该打印ZSK和KSK的公共密钥如下:

; <<>> DiG 9.9.5-3-Ubuntu <<>> DNSKEY example.com. @localhost +norec +multiline
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14231
;; flags: qr aa; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.                IN DNSKEY

;; ANSWER SECTION:
example.com.            1800 IN DNSKEY 256 3 7 (
                                AwEAAbUfMzOJWWWniRSwDb2/2Q6bVpVoEPltPj0h5Qu6
                                hzBdYA4HJYlVXTJ6veNENI/5lV1y84Dhc47j4VAoA66F
                                j7xuTTZjzcuu0KAkQg8Jr2uCmmOuI/rZR7sWZMooHFZ1
                                JPPJZak8HKSNGvHXlMJiz9JPOA3ebJ/liG6lCGJshPah
                                ) ; ZSK; alg = NSEC3RSASHA1; key id = 2870
example.com.            1800 IN DNSKEY 257 3 7 (
                                AwEAAeMDpaVQJixHg1deUDBRRwVldJadgyRZPlieSoVf
                                ps3tYPvTD0nVBOQxenf+m4N/ALpnC5TH4GpxZLYS9IFc
                                rujudQrqA0UuTXBvIWP+XvuJ1yoyZCxO9PHV+GsefjI7
                                kvnmBD1V9UJlGVlHlB3YXHa3f/J5E0RujMnE4a19KG7b
                                HkYebK/2zjzhqXan9442VAG6jhw0lUUJZrCpZjMDEi9n
                                LhJOUSymxglQv1BftALmYnYcuHId9NCwZbvZMb7bS239
                                bm6ONjwqSHqW2slNhBnDVnng2tDfNwjR+eDz5oUbtw4b
                                LMtVACx1WzJEKbIN4rHY7aRe7Ao+4jvSJ8ozVrM=
                                ) ; KSK; alg = NSEC3RSASHA1; key id = 17385

;; Query time: 5 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Sep 04 01:37:18 IST 2014
;; MSG SIZE  rcvd: 467

重复dig命令第二个域和验证响应:

dig DNSKEY foobar.org. @localhost +multiline +norec

主服务器现在提供签署的DNS响应。

Minion

此区域现在必须传输到从属服务器。 登录到从服务器并强制转移这两个区域。

nsd-control force_transfer example.com
nsd-control force_transfer foobar.org

查询此服务器上的DNSKEY记录:

dig DNSKEY example.com. @localhost +multiline +norec

这应该返回我们在主服务器上看到的相同的DNSKEY。 无论是DNS服务器被配置为提供DNS签署的答复

第三步 - 生成DS记录

在此步骤中,我们将生成两个DS记录,在下一步中,您将在域注册器的控制面板中输入。 DS记录将具有以下规格:

算法 摘要类型
DS记录1 RSASHA1-NSEC3-SHA1 SHA1
DS记录2 RSASHA1-NSEC3-SHA1 SHA256

以下命令将在主服务器上执行。

LDNS-key2ds命令生成自签名的区域文件的DS记录。 切换到区域文件目录并执行命令:

cd /etc/nsd/zones
ldns-key2ds -n -1 example.com.zone.signed && ldns-key2ds -n -2 example.com.zone.signed

-1选项使用SHA1作为哈希函数,而-2使用SHA256为同一个。 -n选项并将结果写入DS记录到标准输出而不是一个文件。

这返回两行输出:

example.com. 1800    IN      DS      17385 7 1 c1b9f7f1425bc44976dc19165e48c60032e7820d
example.com. 1800    IN      DS      17385 7 2 98216f4d66d24dbb752c46523a747a97bbad49d5846bbaa6256b6950b4a40995

下表显示了这些DS记录的每个字段:

键标签 算法 摘要类型 消化
DS记录#1 17385 7 1 [...]
DS记录#2 17385 7 2 98216f4d [..]

生成的foob​​ar.org DS记录:

cd /etc/nsd/zones
ldns-key2ds -n -1 foobar.org.zone.signed && ldns-key2ds -n -2 foobar.org.zone.signed

记下所有四个DS记录(每个域两个)的所有部分,如上表所示。 我们将需要他们在下一步。

第四步 - 使用注册器配置DS记录

在本节中,我们将在域名注册商的控制面板中添加DS记录。 这会将DS记录发布到顶级域名(TLD)的Nameservers。 此步骤将使用GoDaddy的控制面板作为示例。

登录GoDaddy并选择您的域名。

首次设置Nameservers:

主机名部分需要做一次设置了域名服务器的第一次。 如果你的域名服务器域不同的东西像my-soa.com,你应该做到这一步用于域名服务器域。

单击管理中的主机名部分。

GoDaddy主机名

一些注册商可能将其称为“子域名服务器”。 单击添加主机名 ,并创建一个主机名高手。example.com指向第一Droplet的IP。

添加主机名

单击添加 重复此第一步次,并创建一个主机名Minion。example.com指向第二Droplet的IP。

所有域:

这两个主机名必须设置为此域的Nameservers。 单击管理域名服务器部分并添加他们两个。

添加Nameservers

单击管理DS记录部分。

GoDaddy管理DS记录

在相应字段中填写详细信息。 如果需要,请参考上一步中的图表。

输入第一个DS记录的键标签,算法,摘要类型和摘要。

输入第二个DS记录的键标签,算法,摘要类型和摘要。

保存两个记录。

几分钟后,查询DS记录。

dig DS example.com. +trace +short | egrep '^DS'

输出应包含DS记录。

DS 17385 7 2 98216F4D66D24DBB752C46523A747A97BBAD49D5846BBAA6256B6950 B4A40995 from server 192.55.83.30 in 1 ms.
DS 17385 7 1 C1B9F7F1425BC44976DC19165E48C60032E7820D from server 192.55.83.30 in 1 ms.

为第二个域执行这些步骤时,请确保将Nameservers设置为适当的Nameservers域。

第二个域名服务器

不必为此域创建主机名。

第五步 - 验证DNSSEC操作

DNSSEC可以在以下网站进行验证:

从第一个网站成功测试显示以下结果:

DNSSEC测试

记下标记线。 他们读了:

  1. DS记录#2(摘要类型SHA256)验证KSK(密钥ID 17385)
  2. KSK(密钥ID 17385)验证其他DNSKEY(ZSK)
  3. ZSK(密钥ID 2870)验证A记录的签名

主服务器和从服务器现在都提供DNSSEC响应。

您还应该能够在Web浏览器中查看两个域。 他们应该指向默认的Apache / Ubuntu的页面中,我们成立了3.3.3.3任何Web你@项域“中指定的主机测试Web服务器或上。

修改区域记录

要修改的区域记录非签名的文件(example.com .zone)必须进行编辑。 一旦修改,SOA序列号必须递增,并且必须再次签署区域才能使更改生效。

SOA序列的格式如下。

YYYYMMDDnn

更改区域文件时,请将其设置为当前日期。 因此,当在2014年9月22日进行第一次更改时,序列将是:

2014092201

前两位数字应在同一天进行后续更改时递增。 如果您忘记增加SOA序列,对区域文件所做的更改将不会传输到从属服务器。

注意:使更改.signed文件将直接导致签名无效,并导致验证失败。

而不是每次输入长的命令签署区域,我们将创建一个shell脚本。 创建主DNS服务器上的文件进行编辑。

nano /usr/local/bin/dnszonesigner

粘贴以下代码:

#!/bin/bash
PDIR=`pwd`
ZONEDIR="/etc/nsd/zones" #location of your zone files
DOMAIN=$1
cd $ZONEDIR
KSK=$(basename $(grep -r "`grep '(ksk)' $DOMAIN.zone.signed | cut -f3-10`" K$DOMAIN.*.key | cut -d':' -f1) .key)
ZSK=$(basename $(grep -r "`grep '(zsk)' $DOMAIN.zone.signed | cut -f3-10`" K$DOMAIN.*.key | cut -d':' -f1) .key)
/usr/bin/ldns-signzone -n -p -s $(head -n 1000 /dev/random | sha1sum | cut -b 1-16) -f $ZONEDIR/$DOMAIN.zone.signed $DOMAIN.zone $ZSK $KSK
/usr/sbin/nsd-control reload $DOMAIN
/usr/sbin/nsd-control notify $DOMAIN
cd $PDIR

你应该从教程的前面手册中认出大多数这些行。

将此文件设置为可执行文件:

chmod +x /usr/local/bin/dnszonesigner

现在添加,删除或修改DNS记录后,一定要增加SOA序列 ,并执行该脚本。

dnszonesigner example.com

当我们把它在$ PATH变量定义的目录这个shell脚本从任何目录工作。

附加阅读

另外副本由Sharon Campbell

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏