如何使用主机名完成完整的BIND9 DNS服务器配置?


53

我需要有关如何产生这种服务器配置的完整的分步指南。

谁能帮我?

Answers:


119

在ubuntu服务器12中完成DNS服务器。

首先,使用以下命令将服务器的IP地址从DHCP更改为STATIC。

sudo nano /etc/network/interfaces

并添加:

auto eth0
iface eth0 inet static
address 192.168.1.5
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
# dns-nameservers

重新启动网络守护程序

sudo /etc/init.d/networking restart

在Linux Ubuntu中配置DNS服务器之前,您必须先创建域名,然后再继续。首先,您将检查主机名命令,这是

sudo nano /etc/hostname

 nefitari       

(这是我的Ubuntu服务器主机名,您的主机名可能有所不同。您可以根据需要进行更改)

现在,在主机名之后,您必须为服务器创建域名。假设servername.domain.com是更好的做法,无论何时配置服务器供家庭使用,请勿使用.com,而应使用.hom或.net或任何您喜欢的名称。输入以下命令

  sudo nano /etc/hosts

如果没有,请添加:

  127.0.0.1   localhost

  192.168.1.5     nefitari.autun.hom    nefitari

在我的文件127.0.0.1是本地主机,我已经改变了我的服务器IP的第二个IP地址127.0.1.1是192.168.1.5,现在我进入我有我的主机域名nefitari第一,然后我的域名autun.hom然后别名Nefitari。您可以选择自己的hostname.abc.net或hostname.home.lan等。但是请记住,更改为该文件需要重新启动服务器,然后登录。必须重启

现在安装BIND9

 sudo apt-get install bind9

安装后,只需逐步配置以下文件

  • 命名.conf.options
  • 名为.conf.local
  • /etc/resolv.conf

现在配置文件named.conf.options, 该文件用于DNS IP。这意味着您的服务器必须连接到外部的某些DNS。当您从ISP购买域名时,它们通常会为您提供自己的DNS IP。您可以使用Google的开放DNS IP左右。就我而言,我正在使用自己的ISP DNS IP。

 sudo nano /etc/bind/named.conf.options
 forwarders {
 # Give here your ISP DNS IP’s
192.168.1.1;    # gateway or router   
182.176.39.23;
182.176.18.13;
68.87.76.178;
  };

***保存文件并退出***使用控件x按y键并覆盖文件

现在编辑文件named.conf.local。 这是我们在其中定义正向区域和反向区域的文件。这意味着当我们输入域名时,它将把它转换成IP地址,而当我们输入IP地址时,它将把它转换成名称。

sudo nano /etc/bind/named.conf.local

将会呈现:

# Our forward zone
zone "autun.hom" {
 type master;
 file "/etc/bind/zones/db.autun.hom";
 };

# Our reverse Zone 
# Server IP 192.168.1.5 
zone "1.168.192.in-addr.arpa" {
  type master;
  file "/etc/bind/zones/db.192";
 };

***保存文件并退出***使用控件x按y键并覆盖文件

现在,我们将在zones文件夹中制作这两个数据库文件db.autun.homdb.192

首先在/ etc / bind /中创建目录区域

  sudo mkdir /etc/bind/zones

在制作文件之前,请先让您明确说明我使用的是其他设备

设备IP

  • 服务器本身 192.168.1.5
  • 网关 192.168.1.1
  • Win7pc的 192.168.1.50

现在在zone目录中,我们将创建两个文件,首先是db.autun.hom。我只是将/ etc / bind文件夹中已经存在的db.local更改为db.autun.hom,将其复制到zone文件夹。我将这些IP放在db.autun.hom文件中。开始吧

sudo cp /etc/bind/db.local  /etc/bind/zones/db.autun.hom

现在使用下面的命令编辑文件

sudo nano /etc/bind/zones/db.autun.hom

 ;
 ; BIND data file for local loopback interface
 ;
 $TTL    604800
 @       IN      SOA     nefitari.autun.hom. webuser.autun.hom. (
                          2         ; Serial
                     604800         ; Refresh
                      86400         ; Retry
                    2419200         ; Expire
                     604800 )       ; Negative Cache TTL
  ;
autun.hom.      IN  NS  nefitari.autun.hom.
autun.hom.      IN  A   192.168.1.5
   ;@               IN  A   127.0.0.1
   ;@               IN  AAAA    ::1
nefitari            IN  A   192.168.1.5
gateway         IN  A   192.168.1.1
win7pc          IN  A   192.168.1.50
www     IN  CNAME   autun.hom.

保存并退出

  • Webuser.autun.hom。是将访问名称服务器的电子邮件。您可以写任何名称代替网络用户,例如admin,root或host master等。
  • Autun.hom。是我的NS表示名称服务器
  • Autun.hom更改为IP 192.168.1.5
  • 可以将@ IN A 127.0.0.1和AAAA :: 1注释掉,因为您在/ etc / bind中已经存在db.local了,所以它就不需要了,它只是该文件的副本。因此,您无需删除它
  • Nefitari更改为IP 192.168.1.5
  • IP 192.168.1.1的网关
  • Win7pc,您可以将Windows PC或Linux客户端命名为任何名称,但请记住必须将该客户端的IP正确插入文件中。就我而言,我给Windows PC的IP 192.168.1.50
  • 最后,我使用CNAME的意思是规范名称,它只是nefitari的别名。意味着您可以通过输入www.autun.hom而不是nefitari.autun.hom来访问服务器。您可以忽略或评论。这取决于您。

现在创建反向查找区域文件

sudo cp /etc/bind/db.127    /etc/bind/zones/db.192

现在使用下面的命令编辑文件

sudo nano /etc/bind/zones/db.192

   ;
   ; BIND reverse data file for local loopback interface
   ;
   $TTL    604800
   @       IN      SOA     nefitari.autun.hom. webuser.autun.hom. (
                          2         ; Serial
                     604800         ; Refresh
                      86400         ; Retry
                    2419200         ; Expire
                     604800 )       ; Negative Cache TTL
   ;
        IN  NS  nefitari.
1   IN  PTR gateway.autun.hom.
5   IN  PTR nefitari.autun.hom.
50  IN  PTR win7pc.autun.hom.

保存并退出

现在,当您完成区域文件的处理时,您必须通过输入以下用于正向区域文件的命令来检查其是否正常工作

named-checkzone autun.hom /etc/bind/zones/db.autun.hom
zone autun.hom /IN: loaded serial   2
Ok

现在检查反向区域文件

named-checkzone autun.hom /etc/bind/zones/db.192
zone autun.hom /IN: loaded serial   2
Ok 

如果named-checkzone的输出与上面的输出相同,那么它工作正常,否则您在文件中犯了一些错误。

现在编辑文件resolv.conf

sudo nano /etc/resolv.conf

nameserver      192.168.1.5
domain      autun.hom
search      autun.hom

将以下几行输入到您的resolv.conf文件中并保存

重新启动绑定

sudo /etc/init.d/bind9 restart

绑定开始后,检查日志文件中的设置

tail -f /var/log/syslog

它在日志中不能有任何错误

检查前进区域

host –l autun.hom

输出应该这样

 autun.hom name server nefitari.autun.hom.
 autun.hom has address 192.168.1.5
 gateway.autun.hom has address 192.168.1.1
 nefitari.autun.hom has address 192.168.1.5
 win7pc.autun.hom has address 192.168.1.50

现在使用NSLOOKUP

nslookup autun.hom

输出值

Server: 192.168.1.5
Address: 192.168.1.5#53

Name: autun.hom
Address: 192.168.1.5

使用DIG

 dig gateway.autun.hom

 ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35612
 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1

 ;; QUESTION SECTION:
 ;gateway.autun.hom         IN  A

 ;; ANSWER SECTION:
 gateway.autun.hom      604800  IN  A   192.168.1.1

 ;; AUTHORITY SECTION:
 Autun.hom.     604800  IN      NS  nefitari.autun.hom. 

 ;; ADDITIONAL SECTION:
 Nefitari.autun.hom.    604800  IN      A   192.168.1.5

 ;; Query time: 12 msec
 ;; SERVER: 192.168.1.5#53(192.168.1.5)
 ;; WHEN: Thu Aug 8 01:56:25 2013
 ;; MSG SIZE  rcvd: 90

输出应与上面类似,检查状态:NOERROR表示正在解决检查答复部分: gateway.autun.hom被解析为192.168.1.1

检查反向区域

 host 192.168.1.1

输出量

 1.1.168.192.in-addr.arpa domain name pointer gateway.autun.hom

如果出现以下错误

 host 1.1.168.192.in-addr.arpa. not found: 3(NXDOMAIN)

这意味着您在反向区域中的/etc/bind/named.conf.local文件中犯了一些错误。如果服务器IP为192.168.1.5,则反向区域如下所示

zone "**1.168.192**.in-addr.arpa" {
 correct ip reversing
};

有时人们在反转IP时会犯错误(仅举一个例子)

zone "**0.168.192**.in-addr.arpa" {
incorrect ip reversing
};

使用NSLOOKUP

nslookup 192.168.1.1

Server: 192.168.1.5
Address: 192.168.1.5#53

1.1.168.192.in-addr.arpa    name=gateway.autun.hom

如果您收到NXDOMAIN或SERVFAIL之类的错误,则表示您的区域文件之一无法正常工作

现在,您可以第一次ping ubuntu.comdig ubuntu.com,解析名称ubuntu.com 会花费毫秒,但是第二次运行时,通常需要1、2或3秒,通常是1到10英里秒是正常的,这意味着您的DNS工作正常

配置客户端

窗户边

  • 打开网络连接
  • 选择更改适配器设置
  • 选择属性
  • 选择互联网协议版本IPv4

并提供IP地址(在我的情况下是192.168.1.50,您还记得win7pc吗)

  • IP地址 192.168.1.50
  • 子网掩码 255.255.255.0
  • 默认网关 192.168.1.1
  • 主DNS 192.168.1.5(我的新BIND DNS服务器IP)
  • 在同一窗口中选择高级
  • 选择DNS选项卡
  • 此连接的DNS后缀中的以下文本框中键入以下内容:autun.hom
  • 点击确定
  • 在退出时单击验证设置
  • 点击确定

并且您已完成打开CMD

ping gateway

它必须给你一些答复

类似地

ping 192.168.1.1 or 5

它必须给你一些答复

测试您的服务器到外界

现在,您可以第一次ping ubuntu.com或dig ubuntu.com,解析名称ubuntu.com会花费几毫秒的时间,但是第二次运行时,它将花费1到10毫秒的时间,正常时间和这表示您的DNS工作正常。

窗户边

打开网络连接选择更改适配器设置选择属性选择Internet协议版本IPv4

并提供IP地址(在我的情况下是192.168.1.50,您还记得win7pc吗)

IP地址 192.168.1.50

子网掩码 255.255.255.0

默认网关 192.168.1.1

主DNS 192.168.1.5(我的新BIND DNS服务器IP)

选择高级(在同一窗口中)

选择DNS选项卡

在此连接的DNS后缀中的以下文本框中键入以下内容:autun.hom

点击确定

在退出时单击验证设置

点击确定

并且您已完成打开CMD

码:

 ping gateway

它必须给你一些答复

类似地

码:

 ping 192.168.1.1 or 5

它必须给您一些答复,您可以使用NSLOOKUP 代码:

 nslookup gateway

LINUX客户

码:

 sudo nano /etc/network/interfaces

输入以下几行

码:

 auto eth0
 iface eth0 inet dhcp

现在重新启动网络恶魔

码:

 sudo /etc/init.d/networking restart

强制客户端更新IP命令

码:

 sudo dhclient -r

现在获取新的IP:

码:

 sudo dhclient

如果您正在网络上运行DHCP服务器,则在dhcpd.conf文件中输入域名和名称服务器;例如,我有一个名为nefitari.autun.hom的DNS服务器,其IP地址为192.168.1.5,如下所示

码:

 option domain-name "nefitari.autun.hom";
 option domain-name-server  192.168.1.5;

资源


7
遗憾的是,此页面具有3726唯一查询视图,而答案只有一个投票。如果对您有帮助,请投票!
fotanus 2013年

12
除有关编辑/etc/resolv.conf的部分外,此答案是正确的。从Ubuntu 12.04开始,您无需手动编辑该文件,而是配置resolvconf进行编辑。在/ etc / default / bind9中设置RESOLVCONF = yes可以使名为BIND 9的BIND 9启动时在resolvconf中注册其本地监听地址127.0.0.1。确保/etc/resolv.conf是指向的符号链接../run/resolvconf/resolv.conf
jdthood 2014年

1
syslog错误- (network unreachable) resolving './NS/IN': 2001:500:3::42#53来自绑定尝试使用ipv6递归解决查询。编辑/etc/default/bind9和使用OPTIONS="-u bind -4"修复它。更多信息:serverfault.com/questions/77325/unreachable-resolving-domain
不是补丁

我刚刚使用Ubuntu服务器16.04进行了设置,但仍然可以使用。与该说明相比,有关DNS的Serverguide教程是一场噩梦。但是,我必须纠正清单中的一个错误db.192之前的文件中缺少IN NS nefitari.@错误。另外我还必须添加FQDN,所以我的工作行看起来像这样,@ IN NS nefitari.autun.hom.我忽略了resolv.conf部分,并遵循了jdthood的建议。默认服务器安装中已经存在该链接。
CatMan '17

1
@fotanus我认为这是因为人们忘了滚动回去
投票太久

1

答案只是上述详细说明的补充。

故障排除提示

小心许多“。”。在每个配置文件中都很重要。缺少一个“。” 可以停止DNS服务器的工作。您不应指望清除错误消息。

我了解了使用更具有说服力的序列号的良好做法。每次修改设置(例如添加新条目)时增加序列号非常重要。如果未增加,则辅助DNS将无法同步新设置。建议的格式为YYYYMMDDss,其中ss为“旧”序列号。因此,当增加时,您应该增加ss+1 并将日期设置为当前日期。我发现这对解决安装程序非常有帮助。在系统日志中,您可以清楚地看到所使用文件的日期和序列。

在Ubuntu 16.04中,不建议更改resolv.conf。正如jdthood在其评论中所写,将步骤替换为以下过程:-更改/ etc / default / bind9:新的内容应如下所示:

   # run resolvconf?
   RESOLVCONF=yes

   # startup options for the server
   OPTIONS="-u bind"

   # use this when you have trouble with IPV6
   #OPTIONS="-u bind -4"

请参阅非补丁对IPV6问题的评论。

  • 将/etc/resolv.conf的符号链接放入/run/resolvconf/resolv.conf

     cd /etc
     sudo ln -s /etc/resolv.conf /run/resolvconf/resolv.conf
    

离线设定

设置完全相同,甚至更简单,因为您可以跳过转发部分。它们不必存在,因此无需编辑/etc/bind/names.con.options

B类网络

要使此功能适用于B级网络,需要进行一些小的更改(在发表评论之前,没有理由为什么本地网络(即使是在家中)也不能成为B级而非C级网络) 。在此示例中,我使用网络号172.20.xx(我认为正式的表示法是172.20.0.0。有关更多信息,请参见google rfc1918)。

使用第一个答案中的描述,将所有IP 192.168.xx替换为172.20.xx,用于服务器IP 172.20.0.100,并按如下所示修改文件:

  • 文件名db.192变为db.172
  • 该文件named.conf.local得到一个不同的反向区域部分:

    zone "20.172.in-addr.arpe" {
    type master;
    file "/etc/bind/zones/db.172";
    }
    
  • 反向区域文件更改为:

    ;
    ; BIND reverse data file for 172.20.x.x
    ;
    $TTL    604800
    @       IN      SOA     nefitari.autun.hom. webuser.autun.hom. (
                 2017022102         ; more intuitive serial YYYYMMDDss, here ss=02
                     604800         ; Refresh
                      86400         ; Retry
                    2419200         ; Expire
                     604800 )       ; Negative Cache TTL
    
    ; note: the '@'was missing from in the initial description
    @       IN  NS  nefitari.autun.hom.    
    
    100.0   IN  PTR nefitari.autun.hom. 
    121.0   IN  PTR client1.autun.hom.
    130.0   IN  PTR client2.autun.hom.
    33.0    IN  PTR client3.autun.hom.
    

其余部分相同。

希望它对某人有用。


如果您要同时使用172.16和172.20地址,此功能是否有效?
kojow7'9

@ kojow7。很好的问题。我不知道,但要找出您可以检查的地方,只包括第二个区域和第二个反向文件。使用nslookup命令可以轻松测试。或者,也许更好一点,就是使用同时包含172.16的Netmask。和172.20。网络掩码不会像255.255.0.0那样简单,而是包含0和255以外的其他数字,但是在网络上,您可以找到教程,以弄清楚在不知道的情况下如何解决该问题。如果您解决了该问题,请考虑将其发布在这里以使他人受益。
CatMan'9
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.