※DNS基础知识:
DNS(Domain Name Service):域名解析服务,应用层协议。
BIND:实现DNS服务的一种软件。
DNS监听的端口:53/TCP,53/UDP
DNS查询类型:递归查询,迭代查询
DNS的两种解析方式:正向解析(FQDN ---> IP),反向解析(IP --->FQDN)
区域解析库:由众多资源记录组成;
资源记录(RR)类型:
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,而必须为解析库的第一条记录;
A:internet Address,作用,FQDN --> IP
AAAA: FQDN --> IPv6
PTR: PoinTeR,IP --> FQDN
NS: Name Server,专用于标明当前区域的DNS服务器
CNAME:Canonical Name,别名记录
MX: Mail eXchanger,邮件交换器(标明域内谁是邮件服务器)
资源记录定义格式:
语法:name [TTL] IN rr_type value
例如:ns1 1D IN A 192.168.1.111
※bind:
bind程序包:
bind: |
主程序 |
bind-libs: |
库文件 |
bind-utils: |
测试程序 |
配置文档:
服务脚本: |
/etc/rc.d/init.d/named |
主配置文件: |
/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key |
解析库文件: |
/var/named/ZONE_NAME.ZONE |
准备实验环境:
操作系统:CentOS 6.6
bind版本:bind-9.8.2-0.37.rc1.el6.x86_64
关闭防火墙:service iptables stop
关闭selinux:setenforce 0
主服务器IP:192.168.1.111(正反解析的主服务器都在此主机)
从服务器IP:192.168.1.200(正反解析的从服务器都在此主机)
◎正向解析配置:(主DNS服务器)
1,对/etc/named.conf稍作修改,使得监听所有本机IP,以及允许任何人解析,并注释掉dnssec的内容。
[root@localhost named]# vim /etc/named.conf
listen-on port 53 { any; }; 监听在本机所有IP地址上
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的内容)
// 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 "." IN {
typehint;
file"/var/named/named.ca";
};
include "/etc/named.rfc1912.zones";
//include"/etc/named.root.key";开始时候无法解析外网域名,注释掉这一行就可以解析了,暂时不知为何。
2,在/etc/named.rfc1912.zones中定义新的区域
[root@localhost named]# vim /etc/named.rfc1912.zones
zone "localhost" IN {
typemaster;
file"named.localhost";
allow-update { none; };
};
zone"1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"IN {
typemaster;
file"named.loopback";
allow-update { none; };
};
zone "1.0.0.127.in-addr.arpa" IN {
typemaster;
file"named.loopback";
allow-update { none; };
};
zone "0.in-addr.arpa" IN {
typemaster;
file"named.empty";
allow-update { none; };
};
//新定义的区域liaobin.com
zone "liaobin.com" IN {
type master; 定义为主DNS服务器,其他可选:(master|slave|hint|forward)
file "liaobin.com.zone"; 区域文件位置
allow-transfer{ 192.168.1.200; };允许192.168.1.200这个服务器区域传送
};
3,创建定义好的区域的区域文件
[root@localhost named]# vim/var/named/liaobin.com.zone
$TTL 1D 宏定义TTL为一天
$ORIGIN liaobin.com.
@ IN SOA ns1.liaobin.com. admin.liaobin.com (
2015112201;序列号
2H ;刷新时间
5M;重试时间
7D ;过期时间
1D ;否定答案的TTL值
)
IN NS ns1;(IN前边省略的部分被$ORIGIN的值替换)
IN NS ns2;(这两行的意思是ns1 ns2是liaobin.com域的DNS服务器)
IN NS mx1;(两个邮件服务器mx1 mx2)
IN NS mx2
ns1 IN A 192.168.1.111;(指定DNS服务器的IP地址)
ns2 IN A 192.168.1.200
mx1 IN A 192.168.1.111;(指定邮件服务器的IP地址)
mx2 IN A 192.168.1.200
www IN A 192.168.1.111;(A记录,解析www.liaobin.com)
web IN CNAME www ;(设置web为www的别名)
4,简单配置完成,重启服务,测试。
◎反向解析配置:
1,在/etc/named.rfc1912.zones 中定义反向解析区域,新增以下配置:
zone "1.168.192.in-addr.arpa." IN {
typemaster;
file"1.168.192.zone";
allow-transfer{ 192.168.1.200; }; 允许192.168.1.200这个服务器区域传送
};
2,在/var/named/下新建1.168.192.zone区域文件:
[root@localhost named]# vim/var/named/1.168.192.zone
$TTL 1D
$ORIGIN 1.168.192.in-addr.arpa.
@ IN SOA ns1.liaobin.com. admin.liaobin.com (
2015112201
2H
5M
7D
1D )
IN NS ns1.liaobin.com.
IN NS ns2.liaobin.com.
111 IN PTR ns1.liaobin.com. ;111后面会自动添加$ORIGIN的值
200 IN PTR ns2.liaobin.com.
111 IN PTR www.liaobin.com. ;定义反向解析192.168.1.111的值为www.liaobin.com.
3.反向解析配置完成,重启服务,测试。
◎主从同步配置:(以上主服务器都已经配置好,接下来只需要配置从服务器即可。)
1,切换到从服务器192.168.1.200操作
2,打开/etc/named.conf稍作配置修改
[root@localhost slaves]# vim /etc/named.conf
options {
listen-on port 53 { any; }; 监听在所有地址端口
//listen-on-v6 port 53 { ::1; }; 注释掉ipv6配置,或者删除掉此行。
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; 注释掉dnssec相关内容
/*Path to ISC DLV key */
//bindkeys-file "/etc/named.iscdlv.key";
// managed-keys-directory "/var/named/dynamic";
};
3,在配置文件/etc/named.rfc1912.zones中添加从服务器的区域
zone "liaobin.com" IN {
type slave; 正向解析的从服务器
masters { 192.168.1.111; }; 主服务器为192.168.1.111
file "/var/named/slaves/liaobin.com.zone"; 区域文件放在slaves目录;因为slaves目录named才有写权限
};
zone "1.168.192.in-addr.arpa." {
type slave; 反向解析的从服务器
masters { 192.168.1.111; }; 主服务器为192.168.1.111
file "/var/named/slaves/1.168.192.zone"; 区域文件放在slaves目录
};
4,配置完成,重启服务,测试。
◎测试命令简单用法:
dig命令:用于测试dns系统,因此,不会查询hosts文件进行解析;
dig[-t type] name [@SERVER] [query options]
查询选项:
+[no]trace:跟踪解析过程
+[no]recurse:进行递归解析
例如:dig -t A www.baidu.com @192.168.1.111 +trace
测试反向解析:
dig-x IP @SERVER
例如:dig -x 192.168.1.111 @192.168.111
模拟区域传送:
dig-t axfr ZONE_NAME @SERVER
例如:dig -t axfr liaobin.com @172.16.100.11
host命令:
host[-t type] name [SERVER]
例如:
nslookup命令:
nslookup[-option] [name | -] [server]
例如:
nslookup交互模式:
nslookup>
serverIP: 指明使用哪个DNS server进行查询;
setq=RR_TYPE: 指明查询的资源记录类型;
NAME:要查询的名称;
例如:
◎ rndc简单用法:
rndcCOMMAND
status:查看dns状态
reload: 重载主配置文件和区域解析库文件
reload zone: 重载区域解析库文件
retransfer zone: 手动启动区域传送过程,而不管序列号是否增加;
notify zone: 重新对区域传送发通知;
reconfig: 重载主配置文件
querylog: 开启或关闭查询日志;(建议关闭,否则大量磁盘I/O产生影响性能,排错时可启动)
trace: 递增debug级别;
trace LEVEL: 指定使用的级别;