域名系统(英文:Domain Name System,缩写:DNS)是因特网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。DNS 使用TCP和UDP端口53。当前,对于每一级域名长度的限制是63个字符,域名总长度则不能超过253个字符。
开始时,域名的字符仅限于ASCII字符的一个子集。2008年,ICANN通过一项决议,允许使用其它语言作为互联网顶级域名的字符。使用基于Punycode码的IDNA系统,可以将Unicode字符串映射为有效的DNS字符集。因此,诸如“x.台湾”这样的域名可以在地址栏直接输入,而不需要安装插件。但是,由于英语的广泛使用,使用其他语言字符作为域名会产生多种问题,例如难以输入,难以在国际推广等。
BIND(Berkeley InternetName Daemon)是现今互联网上最常使用的DNS服务器软件,使用BIND作为服务器软件的DNS服务器约占所有DNS服务器的九成。BIND现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。
我们实验使用的DNS软件就是BIND。
实验环境:
CentOS release 6.6(Final) 两台
IP地址:
172.16.31.3 DNS1 DNS服务器端
172.16.31.4 DNS2 测试机
我们要架设一个本地DNS服务器一般需要下面三个软件程序包:
bind-libs.x86_64 #提供库文件
bind-utils.x86_64 #提供工具包
bind.x86_64 #提供主程序包
我还没使用安全套件,所以没有使用bind-chroot程序包。
chroot 环境为了系统的安全性考虑,一般来说目前各主要 distributions 都已经自动的将你的 bind 相关程序给他 chroot 了。
一.安装bind程序包
使用yum源安装:
[root@dns1 named]# yum install -y bindbind-libs bind-utils
检查安装情况:
[root@dns1 named]# rpm -qa bind* bind-libs-9.8.2-0.30.rc1.el6.x86_64 bind-utils-9.8.2-0.30.rc1.el6.x86_64 bind-9.8.2-0.30.rc1.el6.x86_64
二.配置Bind
Bind的配置文件存放在/etc/目录下:
/etc/named.conf #主配置文件
/etc/named.rfc1912.zones #正反向区域文件
我们首先配置主配置文件:/etc/ named.conf
[root@dns1 named]# cat /etc/named.conf options { //listen-on port 53 { 127.0.0.1; }; //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 no; dnssec-validation no; dnssec-lookaside no; /* 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 "." IN { type hint; file "named.ca"; }; include"/etc/named.rfc1912.zones"; include "/etc/named.root.key";
接下来我们修改区域配置文件:/etc/named.rfc1912.zones
区域规划:
域名:oracle.com
正向区域:oracle.com
正向区域文件:oracle.com.zone
反向区域:31.16.172.in-addr.arpa
编辑/etc/named.rfc1912.zones文件添加如下内容:
zone "oracle.com" IN { type master; file "oracle.com.zone"; }; zone "31.16.172.in-addr.arpa" IN{ type master; file "172.16.31.zone"; };
接下来我们将配置区域解析库文件。
三.区域解析库文件配置
1.区域解析库文件的简要说明:
常见的正解文件 RR 相关信息
[domain] IN [[RR type] [RR data]]
主机名. IN A IPv4 的 IP 地址
主机名. IN AAAA IPv6 的 IP 地址
区域名. IN NS 管理这个领域名的服务器主机名字.
区域名. IN SOA 管理这个领域名的七个重要参数(如上说明)
区域名. IN MX 顺序数字 接收邮件的服务器主机名字
主机别名. IN CNAME 实际代表这个主机别名的主机名字.
单位:W=周、D=日、H=小时、M=分钟。
$TTL 86400 宏定义全局TTL时间
@ IN SOA ns.oracle.com. root ( # ns.oracle.com. 是DNS服务器的名称
0 ; serial (d. adams) 仅作为序列号而已
1D ;refresh 服务器的更新时间
15M ; retry 重新更新时间间隔
1W ; expiry 多久之后宣布失败
1H ) ;minimum 相当于缓存记忆时间
@ IN NS ns.oracle.com.
@ IN MX 5 mail.oracle.com.(5为优先级别)
ns IN A 172.16.31.3
www IN A 172.16.31.3
www IN A 172.16.31.3
mail IN A 172.16.31.3
2.配置正向解析库文件:
因为上次配置过本地缓存服务器,所以需要删除一些文件:
[root@dns1 named]# rm 127.0.0.zone rm: remove regular file `127.0.0.zone'? y [root@dns1 named]# rm localhost.zone rm: remove regular file `localhost.zone'? y
[root@dns1 named]# vim oracle.com.zone $TTL 600 $ORIGIN oracle.com. @ IN SOA ns.oracle.com. root.oracle.com. ( 2014121001 ;serial 1D ;refresh 5M ;retry 1W ;expiry 1H) ;minimum @ IN NS ns.oracle.com. IN MX 5 mail.oracle.com. ns IN A 172.16.31.3 www IN A 172.16.31.3 www IN A 172.16.31.4 mail IN A 172.16.31.3 pop3 IN A 172.16.31.3 iamp4 IN A 172.16.31.3
3.配置反向解析库文件:
[root@dns1 named]# vim oracle.com.zone $TTL 600 $ORIGIN 31.16.172.in-addr.arpa. @ IN SOA ns.oracle.com. root.oracle.com. ( 2014121001 ;serial 1D ;refresh 5M ;retry 1W ;expiry 1H) ;minimum @ IN NS ns.oracle.com. IN MX 5 mail.oracle.com. 3 IN PTR ns.oracle.com. 3 IN PTR www.oracle.com. 4 IN PTR www.oracle.com. 3 IN PTR mail.oracle.com. 3 IN PTR pop3.oracle.com. 3 IN PTR iamp4.oracle.com.
四.更改目录权限及属组
更改文件属组:
[root@dns1 named]# chown :namedoracle.com.zone [root@dns1 named]# chown :named172.16.31.zone
更改文件权限:
[root@dns1 named]# chmod 640oracle.com.zone [root@dns1 named]# chmod 640 172.16.31.zone
检查防火墙状态:
[root@dns1 named]# service iptables status iptables: Firewall is not running.
检查SELinux状态
[root@dns1 named]# getenforce Disabled
检测区域解析库配置文件语法:
[root@dns1 named]# named-checkzone"oracle.com" oracle.com.zone zone oracle.com/IN: loaded serial2014121001 OK
五.启动服务
[root@dns1 named]# service namedrestart Stopping named: [ OK ] Starting named: [ OK ]
我们可以在本机加入DNS,或者客户端设置DNS指向DNS服务器。
[root@dns1 named]# cat/etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE="eth0" BOOTPROTO="static" NM_CONTROLLED="yes" HWADDR=08:00:27:98:d8:88 ONBOOT="yes" TYPE="Ethernet" IPADDR=172.16.31.3 NETMASK=255.255.0.0 GATEWAY=172.16.0.1 DNS=172.16.31.3
六.测试DNS服务器的域信息是否正常:
dig命令:
测试正向区域解析情况:
[root@dns1 named]# dig -t SOA [email protected] ; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -t SOA [email protected] ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY,status: NOERROR, id: 28220 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1,AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;oracle.com. IN SOA ;; ANSWER SECTION: oracle.com. 600 IN SOA ns.oracle.com.root.oracle.com. 2014121001 86400 300 604800 3600 ;; AUTHORITY SECTION: oracle.com. 600 IN NS ns.oracle.com. ;; ADDITIONAL SECTION: ns.oracle.com. 600 IN A 172.16.31.3 ;; Query time: 0 msec ;; SERVER: 172.16.31.3#53(172.16.31.3) ;; WHEN: Wed Dec 10 07:31:09 2014 ;; MSG SIZE rcvd: 102
测试反向区域解析情况:
[root@dns1 named]# dig -x [email protected] ; <<>> DiG9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> -x 172.16.31.3 @172.16.31.3 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY,status: NOERROR, id: 1421 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 5,AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;3.31.16.172.in-addr.arpa. IN PTR ;; ANSWER SECTION: 3.31.16.172.in-addr.arpa. 600 IN PTR mail.oracle.com. 3.31.16.172.in-addr.arpa. 600 IN PTR pop3.oracle.com. 3.31.16.172.in-addr.arpa. 600 IN PTR iamp4.oracle.com. 3.31.16.172.in-addr.arpa. 600 IN PTR ns.oracle.com. 3.31.16.172.in-addr.arpa. 600 IN PTR www.oracle.com. ;; AUTHORITY SECTION: 31.16.172.in-addr.arpa. 600 IN NS ns.oracle.com. ;; ADDITIONAL SECTION: ns.oracle.com. 600 IN A 172.16.31.3 ;; Query time: 1 msec ;; SERVER: 172.16.31.3#53(172.16.31.3) ;; WHEN: Wed Dec 10 07:27:01 2014 ;; MSG SIZE rcvd: 175
host命令:
检测正向解析库;
[root@dns1 named]# host -t A www.oracle.com 172.16.31.3 Using domain server: Name: 172.16.31.3 Address: 172.16.31.3#53 Aliases: www.oracle.com has address 172.16.31.4 www.oracle.com has address 172.16.31.3
检测反向解析库:
[root@dns1 named]# host -t ptr 172.16.31.3172.16.31.3 Using domain server: Name: 172.16.31.3 Address: 172.16.31.3#53 Aliases: 3.31.16.172.in-addr.arpa domain namepointer pop3.oracle.com. 3.31.16.172.in-addr.arpa domain namepointer iamp4.oracle.com. 3.31.16.172.in-addr.arpa domain namepointer ns.oracle.com. 3.31.16.172.in-addr.arpa domain namepointer www.oracle.com. 3.31.16.172.in-addr.arpa domain namepointer mail.oracle.com.
其实还有个nslookup命令测试。偷懒就不介绍了,下次再说!
至此,本地DNS服务器搭建完毕,正反向解析正常,接下来会在本地DNS服务器的基础上搭建主从DNS服务器。