BIND9
DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器。DNS中保存了一张域名(domain name)和与之相对应的IP地址 (IP address)的表,以解析消息的域名。 域名是Internet上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。域名是由一串用点分隔的名字组成的,通常包含组织名,而且始终包括两到三个字母的后缀,以指明组织的类型或该域所在的国家或地区。
DNS是计算机域名系统 (Domain Name System 或Domain Name Service) 的缩写,它是由域名解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。其中域名必须对应一个IP地址,一个IP地址可以有多个域名,而IP地址不一定有域名。域名系统采用类似目录树的等级结构。域名服务器通常为客户机/服务器模式中的服务器方,它主要有两种形式:主服务器和转发服务器。将域名映射为IP地址的过程就称为“域名解析”。
总的来说DNS服务器就是负责域名和IP地址之间的转换。
1.Bind9配置文件介绍
Bind的配置文件,放在/etc/bind9/目录下,主要的配置文件有以下4个,分别是:
/etc/bind/
- /etc/bind9/named.conf(主配置文件) //主配置文件,通过include关键字加载其他三个配置文件
- |_ /etc/bind9/named.default-zones; //默认区域
- |_ /etc/bind9/named.conf.options; //转发器配置文件
- |_ /etc/bind9/named.conf.local; //用户配置文件,一般将DNS记录放在这个文件里面
- |_ /var/cache/bind/db.xxx,com //正向配置文件
- |_ /var/cache/bind/db.1.168.192 //反向配置文件
其中,/etc/bind9/named.conf是Bind的主配置文件,不过他并不包含DNS数据。查看/etc/bind9/named.conf文件可以发现,主配置文件里面使用了include关键字来加载其它3个配置文件。
在/etc/bind9/named.conf.options文件中,有一句默认的配置(如下),该语句的所示的目录的作用是存放正向解析以及反向解析的一些配置文件,该配置告诉Bind,到/var/cache/bind目录下去寻找数据文件。
2.完全卸载(如果你是首次安装,请忽略)
在你看这篇文章的时候,也许你已经在DNS配置里面挣扎了很久,然后没有成功,那么,请你执行以下命令(卸载bind9,并且删除配置文件)
$ sudo apt-get purge bind9
安装DNS服务
$ apt-get install bind9
或者
$ sudo apt-get -y install bind9
3.创建正反向Zone(解析)文件路径查找
创建正向Zone文件
正向Zone文件是用来做正向解析的,即将域名解析为IP地址
(1)首先,修改/etc/bind/named.conf.local文件
1$ sudo mv /etc/bind/named.conf.local /etc/bind/named.conf.local-bak //备份原始配置文件,如果配置错误可还可以再替换回来 2$ sudo vim /etc/bind/named.conf.local //使用vim编辑器编辑配置文件
添加下列信息:
1zone "kevin.com" { //DNS服务器的名字 2 type master; 3 file "db.kevin.com"; 4};
该配置指定Bind作为kevin.com域的主域名服务器,db. kevin.com文件包含所有*.kevin.com 形式的域名转换数据。文件 db.kevin.com 没有指定路径,所以默认是/var/cache/bind/。
创建反向Zone文件
反向Zone文件是用来做反向解析的,即把IP地址解析为域名。
1zone "191.168.192.in-addr.arpa" { 2 type master; 3 file "db.192.168.191"; 4};
然后,我们复制一个现有的文件作为Zone文件正向解析的模板:
$ sudo cp /etc/bind/db.local /var/cache/bind/db.kevin.com //模板为db.local
现在,我们来修改该Zone文件:
$ sudo vim /var/cache/bind/db.kevin.com
将其改为如下内容(其中的192.168.191.4是我的局域网IP地址,通过命令行ifconfig可查看主机的局域网IP地址)
1; 2; BIND data file for local loopback interface 3; 4$TTL 604800 5@ IN SOA localhost. root.localhost. ( 6 2 ; Serial 7 604800 ; Refresh 8 86400 ; Retry 9 2419200 ; Expire 10 604800 ) ; Negative Cache TTL 11; 12@ IN NS ns. 13@ IN A 192.168.191.4 14www IN A 192.168.191.4 15@ IN AAAA ::1
再复制一个现有的文件作为Zone文件反向解析的模板
$ sudo cp /etc/bind/db.127 /var/cache/bind/db.191.168.192 //模板为db.127
修改该Zone文件
$ sudo vim /var/cache/bind/db.191.168.192
将其改为如下内容:
1; 2; BIND reverse data file for local loopback interface 3; 4$TTL 604800 5@ IN SOA localhost. root.localhost. ( 6 1 ; Serial 7 604800 ; Refresh 8 86400 ; Retry 9 2419200 ; Expire 10 604800 ) ; Negative Cache TTL 11; 12@ IN NS ns. 134 IN PTR www.kevin.com 141.0.0 IN PTR localhost.
左下角中的4代表IP的最后一个字节号,例如,我的局域网IP地址是192.168.191.4,那么最后一个字节就是4
配置转发器
1options { 2 directory "/var/cache/bind"; 3 4 // If there is a firewall between you and nameservers you want 5 // to talk to, you may need to fix the firewall to allow multiple 6 // ports to talk. See http://www.kb.cert.org/vuls/id/800113 7 8 // If your ISP provided one or more IP addresses for stable 9 // nameservers, you probably want to use them as forwarders. 10 // Uncomment the following block, and insert the addresses replacing 11 // the all-0's placeholder. 12 13 forwarders { 14 15 114.114.114.114; //转发器1 16 114.114.115.115; //转发器2 17 18 }; 19 20 //======================================================================== 21 // If BIND logs error messages about the root key being expired, 22 // you will need to update your keys. See https://www.isc.org/bind-keys 23 //======================================================================== 24 dnssec-validation auto; 25 26 auth-nxdomain no; # conform to RFC1035 27 listen-on-v6 { any; }; 28};
修改主机域名解析地址,重启Bind9
(1)修改主机域名解析地址
1$ sudo vim /etc/resolv.conf 2 3修改为 4search kevin.com 5nameserver 192.168.191.4
(2)重启Bind9
$ sudo service bind9 restart
四、测试
$ ping kevin.com
如果有数据的收发,则表示配置成功。
或者在同一局域网内的另一台主机上设置DNS地址为DNS服务器的地址
使用nslookup命令进行解析测试
# nslookup
如果解析出相应的IP或者域名就表示配置正确