linux下DNS服务器配置

吃梅干菜变超人 2018-10-29 05:03:35
前期准备:linux系统、bind安装包,网络IP的配置
第一步:安装bind
本人下载的是 bind-9.12.2-P2.tar.gz
第二步:修改配置文件
主机名称修改:vim /proc/sys/kernel/hostname

     本人服务器主机的ip地址是:192.168.240.139

Linux下的dns功能是通过bind软件实现的。bind软件安装后,会产生几个固有文件,分为两类,一类是配置文件在/etc目录下,一类是dns记录文件在/var/named目录下。加上其他相关文件,共同设置dns服务器。下面是所有和dns设置相关文件的列表与说明。
 
第一类:在/etc下的配置文件
(1)/etc/hosts文件,定义了主机名和ip地址的对应,其中也有将要运行dns这台电脑的ip地址和主机名。内容为:
127.0.0.1                localhost
192.168.240.139             netfinity
 
(2)/etc/host.conf文件,内容为
    order hosts,bind
multi on
nospoof on
,"order hosts bind"语句,指定了对主机名的解析顺序是先到hosts中查找,然后到dns服务器的记录里查找。“multi on”则是允许一个主机名对应多个ip地址。
(3)/etc/resolv.conf文件,内容为:
; generated by /sbin/dhclient-script
nameserver 192.168.240.139
“nameserver 192.168.240.139”指定了dns服务器的地址。注意,这个文件对普通非dns服务器的电脑(非windows的系统;Windows系统是在“网络属性”中设置这项的)来说,是必不可少的。你如果没有设置本机为dns服务器,你又要能够解析域名,就必须指定一个dns服务器的地址。你可以最多写上三个地址,作为前一个失败时的候选dns服务器。
(4)/etc/named.conf文件,是dns server配置的核心文件。内容如下:
[root@netfinity named]# vim /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//

options {
listen-on port 53 { any; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";

managed-keys-directory "/var/named/dynamic";
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
//正向解析
zone "linuxidc.com" IN { # 指定区域名
type master; # 指定工作模式 为主dns服务器
file "named.linuxidc.com"; # 指定配置文件

};

//反向解析
zone "240.168.192.in-addr.arpa" IN { # 指定区域名
type master; # 指定工作模式 为主dns服务器
file "named.linuxidc.com.rev";
};

zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";


 
 “directory”指定了dns记录文件的存放目录是/var/named。“//”开头的文字是说明文字,不用管它。接着的两个“zone”语句定义了dns服务器的根和对应的反向查询域,并指出根的记录文件是“name.ca”,根的反向查询域的记录文件是“named.local”。这两个记录文件也是系统自带的,不用去改动它。named.conf文件的这一部分内容,我们不必去改动它。
其中,红色部分是自己手工添加的内容。定义了“Linuxidc.com”这个域和对应的反向查询域。“type master”说明本机是“Linuxidc.com”和“0.168.192.in-addr.arpa”这两个域的主dns服务器(primary name server)。“named.Linuxidc.com”和“named.Linuxidc.com.rev”是域的记录文件。这两个文件也是自己创建的,下面我们就来看看这两个文件。
 
第二类:在资源记录文件,位于/var/named目录下。这个目录是named.conf中定义的。
(1)   named.linuxidc.com文件内容如下:


$TTL 1D
@ IN SOA @ netfinity.root.netfinity (
20181019 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS netfinity.linuxidc.com.



netfinity IN A 192.168.240.139

mail IN CNAME linuxidc.com.
www IN CNAME linuxidc.con.



在这个记录文件中,出现了5种类型的记录。SOA 是授权起始(Start Of Authority)的缩写,后面接着写你的dns服务器的主机名,这里是“netfinity.Linuxidc.com.”。(注意,主机名称后面的小圆点。凡是出现在记录文件了的主机名,记得都要加上这各小圆点。)NS 是名称服务器资源记录,指明域中的名称服务器,这里就是dns服务器。MX是邮件交换者资源记录,指明这个域的邮件服务器。你可以写多个MX记录,指明多个邮件服务器,优先级别由MX后的数字决定,数字越小,邮件服务器优先权越高。A是主机记录,把主机和ip地址对应起来。CNAME是别名记录,它赋予一个主机不同的名称,如www.Linuxidc.com、pop3.Linuxidc.com其实都是指向同一台主机netfinity.Linuxidc.com。
 
注意:
(1)在网上的很多资料,发现了一个错误,就是第一行中,如果按照网上的写法,会出错。
@               IN SOA  @       netfinity. root.netfinity.(
错误信息:
dns_rdata_fromtext: com.zone:2: near 'root.netfinity.': not a valid number
zone linuxidc.com/IN: loading master file com.zone: not a valid number
结果把“.”去了之后,正常运行。
(2)在该文件中的写法是由严格的格式的,不能随便写。否则会出现下面的错误
如果将上面的netfinity对应行变为下面的格式:
@               IN NS           netfinity.linuxidc.com.
netfinity       IN A            192.168.0.10
mail            IN CNAME        netfinity.linuxidc.com.
www             IN CNAME        netfinity.linuxidc.com.
错误信息:
dns_master_load: com.zone:10: unknown RR type 'netfinity'
 
(2)   named.linuxidc.com.rev文件内容如下:
 

$TTL 1D
@ IN SOA @ netfinity.root.netfinity. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS netfinity.
139 IN PTR netfinity.linuxidc.com.

A 127.0.0.1
AAAA ::1
这是“Linuxidc.com”的反向域记录文件,它让dns服务器提供由ip地址查找主机名的服务。PTR记录把ip和主机名对应起来。由于一些程序会要求反向查询,所以反向查询域的记录文件最好不要省略。
注意:
   (1) 这个文件中的第一行,可以写成带dot的格式。
  (2)netfinity. root.netfinity. 这个中间不能有空格。
错误信息:
dns_rdata_fromtext: named.linuxidc.com.rev:2: near 'root.netfinity.': not a valid number
zone 240.168.192.in-addr.arpa/IN: loading from master file named.linuxidc.com.rev failed: not a valid number
zone 240.168.192.in-addr.arpa/IN: not loaded due to errors.
_default/240.168.192.in-addr.arpa/IN: not a valid number

第三步:DNS服务器的服务是named,可以使用:
    Service named start|stop|restart来操作。
第四步:学会查错和修改错误:
Apr 13 12:32:34 mail named[18701]: zone 0.168.192.in-addr.arpa/IN: loading maste
r file named.linuxidc.com.rev: file not found
Apr 13 12:32:34 mail named[18701]: zone linuxidc.com/IN: loading master file nam
ed.linuxidc.com: file not found
测试时报错:

server can't find 139.240.168.192.in-addr.arpa.: NXDOMAIN

 
   解决方法:
(1)       在/var/named下
touch named.linuxidc.com;(或者cp localhost.zone named.linuxidc.com)
ls –l named.linuxidc.com,可以看到它属于root组的root用户
而看看其它系统自动产生的,都是属于named组的named用户,所以要修改:
chown named.named named.linuxidc.com,这样它就属于named组的named用户了。
 
(2)       在/var/named/文件夹下,创建named.linuxidc.com的软连接
ln –s var/named/named.linuxidc.com  named.linuxidc.com
        /var/named/下的named.linuxidc.com属于root组的root用户。

碰到过以下两个问题,原因不明:
dns_master_load: named.linuxidc.com:18: www.linuxidc.com: CNAME and other data
zone linuxidc.com/IN: loading from master file named.linuxidc.com failed: CNAME and other data
zone linuxidc.com/IN: not loaded due to errors.
_default/linuxidc.com/IN: CNAME and other data
zone 240.168.192.in-addr.arpa/IN: not loaded due to errors.
_default/240.168.192.in-addr.arpa/IN: not a valid numbe

dns_rdata_fromtext: 240.168.192:2: near '1D': not a valid number

 
第五步:测试DNS
    使用nslookup命令。
关机之后需重启service named start



...全文
880 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

19,614

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧