DNS笔记 DNS正反主从服务搭建
==========================理论部分=========================
DNS:Domain Name Service协议,属于应用层协议
使用端口53/TCP 53/UDP
作用:提供域名和IP的解析服务,在互联网中属于非常重要的基础服务
. 根域
.com .edu .gov .org 等等 顶级域,用来指示某个国家或地区或组织使用的名称类型
baidu.com qq.com 等等,二级域名,个人或者组织在互联网上使用的的注册名称
正向解析:将域名解析为IP
反向解析:将IP解析为域名
注意:正向解析和反向解析是两个不同的名称空间,两颗不同的解析树
DNS查询类型
迭代查询 interration
一次,客户机把查询请求发送给DNS,剩下的由DNS来去查询,返回最终结果
递归查询 recursion
多次,查询请求发送给DNS,DNS告诉客户机应该找谁谁谁去查询,然后客户机自己一级级的找
DNS服务器类型:
主DNS
从DNS
缓存DNS
转发器
主DNS:维护所负责的域内解析库,由管理员来维护
从DNS:从主DNS服务器那里或者其他的DNS服务器那里“复制”一份(区域传送)解析库文件
序列号:解析库的版本号,解析库内发生变化,手动增加版本号
刷新时间:主、从服务器同步时间间隔
重试时间:请求失败后,再次请求同步的时间间隔
过期时间:从DNS始终联系不到主DNS服务器,多久后放弃服务器角色停止提供服务
“通知”机制:主DNS更新解析库后,主动通知从DNS进行同步更新
区域传送:
全量传送:传送整个解析库
增量传送:传送变化的部分
FQDN:full qualified domain name 完全合格域名
www.magedu.com.
DNS查询解析过程:
1)客户机提交域名解析请求,并将该请求发送给本地的DNS服务器(提交之前会检查hosts文件)
2)本地DNS会查找本地缓存中有没有,有就返回结果给客户机,没有就把请求发送给根服务器(客户机-->本地DNS :迭代查询)
3)根名称服务器返回给本地DNS服务器一个所查询到的顶级域名服务器的地址(递归查询)
4)本地DNS服务器,再像返回的顶级域名服务器发起请求(递归查询)
5)收到该查询请求的顶级域名服务器查询缓存,有结果则返回,没有结果,则返回下级的域名服务器地址
6)可能要重复上个动作,直至本地DNS查询到结果,最后将结果缓存本地并告知客户机结果
解析答案:
肯定答案:正确解析请求内容
否定答案:请求的条目不存在等原因无法返回结果
权威答案:DNS服务器在自己的区域文件中找到了客户机要查询的记录,返回的就是权威答案
非权威答案:DNS服务器在自己的区域文件中没有找到客户机要的结果,而是通过递归的方法找到结果返回给客户机,这个答案就是非权威答案
区域解析库,由众多RR组成
资源记录 resource record
记录类型 A AAAA CNAME NS SOA MX PTR 等
SOA
Start Of Authority起始授权记录,一个区域解析库中有且只能有一个SOA记录,而且必须出现在解析库的第一条
A
Internet Address,作用将FQDN-->IP
AAAA
ipv6,FQDN-->IP
PTR
PoinTeR IP-->FQDN 反向解析
NS
Name Server,当前区域的DNS服务器
CNAME
Canonical Name 别名记录
MX
Mail eXchanger 邮件交换记录
资源记录定义的格式:
语法:name [TTL] IN RR_TYPE value
注意:TTL可从全局继承,@ 可引用当前区域的名字
SOA记录格式:
name 当前区域的名称,例如"magedu.com."
value 有多部分组成
1)当前区域的主DNS的FQDN,也可以使用当前区域的名称,简写@
2)当前区域管理员邮箱地址,但地址中不能使用@,一般使用.代替,例如:[email protected] --> admin.magedu.com
3)[主从服务协调属性的定义以及否定答案的统一TTL]
例如:
magedu.com. IN SOA ns1.magedu.com. mail.magedu.com. (
20151216001; //序列号
2H; //刷新时间
10M; //重试时间
1W; //过期时间
1D; //否定答案的TTL
)
NS格式:
name 当前区域的名字
value 当前区域主DNS的FQDN,如"ns1.magedu.com."
注意:一个区域中可以有多个NS记录
例如:
magedu.com. IN NS ns1.magedu.com.
IN NS ns2.magedu.com. //如果前面不写名字,则是继承前面的名称
注意:
1)相邻的的连个资源记录name相同时,后面的可省略
2)对NS记录而言,任何一个NS记录后面的服务器名字,都应该有一条A记录 (glue record 粘合记录)
MX
name 当前区域的名字
value 当前区域的某邮件服务器(SMTP服务器)的主机名
一个区域内,MX记录可有有多个,但每个value之前都应该有个0-99的数字,表示优先级,数字越小优先级越高
例如:
magedu.com. IN MX 10 smtp1.magedu.com.
IN MX 20 smtp2.magedu.com.
注意:对于MX而言,任何一个MX记录后面的服务器名字,都应该有一条A记录
A
name 某主机的FQDN,如"www.magedu.com."
value 主机对应的IP地址
例如:
www.magedu.com. IN A 172.20.1.34
注意:
1)同一个名字可以有多个不同的值,但需要有多条记录来实现(轮询解析)
2)同一个值可以有多个不同的名字,通过多个名字来实现,多条记录
3)可以使用泛域名解析
如: *.magedu.com. IN A 10.1.1.1
magedu.com. IN A 10.1.1.1
避免用户写错名称时给出错误答案,可使用泛域名来指向至某特定地址
AAAA
name FQDN
value IPV6
PTR
name IP,有特定的格式,要把IP反过来写,如172.16.100.1要写成1.100.16.172,而且要有特定后缀in-addr.arpa.
value FQDN
例如:
1.100.16.172.in-addr.arpa. IN PTR www.magedu.com.
可简写,网络地址可省,仅写主机地址,如192.168.1.1/24 192.168.1 可省
1 IN PTR www.magedu.com.
注意:网络地址及后缀可省,但主机地址依然要反着写
CNAME
name 别名的FQDN
value 正式名字的FQDN
例如;
web.magedu.com. IN CNAME www.magedu.com.
bind部分
子域授权:
每个域名称服务器,都是通过上级名称服务器在解析库进行授权
bind的安装配置:
程序包叫bind,程序名叫named,由主包和多个支包组成
bind
bind-utils
bind-lib
bind-chroot 不建议安装
bind
服务脚本:/etc/rc.d/init.d/named
主配置文件:/etc/named.conf /etc/named.rfc1912.zones /etc/rndc.key
解析库文件:/var/named/ZONE_NAME.zone
注意:
1)一台物理服务器可以同时为多个区域提供解析
2)必须要有根区域 named.ca
3)应该有两个(如果使用IPV6,应该更多)实现localhost和本地回环地址的解析库
rndc:remote name domain controller 默认与bind安装在同一主机,且只能通过127.0.0.1来连接named进程,提供辅助性的管理
端口:953/TCP
主配置文件:/etc/named.conf
全局配置options{}
里面定义了监听地址、端口、解析库路径等
日志子系统配置logging{}
根"." type hint file named.ca //named.ca在/var/named/下,是个相对路径
区域定义:本机能够为那哪些zones进行解析,就要定义那些zone
zone "ZONE_NAME" in {}
缓存名称服务器的配置:
编辑/var/named.conf
关闭dnssec: dnssec-enable no
all-query 允许那些主机查询 { any; }
recursion yes ; 允许递归
listen-on port 53 { 监听的IP(本机IP); 127.0.0.1; };
主DNS服务器的配置:
1、在缓存名称服务器的基础上,编辑/etc/named.rfc1912.zones(在/etc/named.conf中有写:include "/etc/named.rfc1912.zones";)添加区域
格式:
zone "ZONE_NAME" IN {
type { master|slave|hint|forward };
file "ZONE_NAME.zone"; 文件名要用引号引起来,否则语法错误
};
如:
zone "magedu.com" IN {
type master;
file "magedu.com.zone";
};
2、定义区域解析库文件:/var/named/
/var/named/下手动建立
宏定义:变量定义,自动引用
$TTL 86400 单位是秒,也就是1天 1D
$ORIGIN magedu.com. 区域名的宏定义
@ IN SOA ns1.magedu.com. mail.magedu.com. (
20151216001 序列号
1H 刷新时间
5M 重试时间
7M 过期时间
1D 否定答案的TTL
)
IN NS ns1.magedu.com. .magedu.com. 可省略
IN NS ns2 省略写法
IN MX 10 mx1
IN MX 20 mx2
ns1 IN A 1.1.1.1
ns2 IN A 1.1.1.2
mx1 IN A 1.1.1.1
mx2 IN A 1.1.1.2
www IN A 1.1.1.3
web IN CNAME www
* IN A 1.1.1.5
IN A 1.1.1.5
named-checkconf 命令,检查配置文件语法错误
named-checkzone "ZONE_NAME" /var/named/ZONE_NAME.zone 检查区域解析库
named-checkzone "magedu.com" /var/named/magedu.com.zone
区域解析库文件创建好以后,记得修改权限和属组
chmode 640 ZONE_NAME.zone
chown :named ZONE_NAME.zone
dig 命令
格式;dig [@server] [-t type] name
注意;dig测试DNS系统,因此不会检查hosts文件
查询选项;
+[no]trace 跟踪解析过程
+[no]recurce 进行递归解析
host命令
格式:host [-t type] name [server]
nslookup命令
交互式
nslookup>
server IP 设置使用那台DNS进行查询
set q=RR_TYPE
NAME 解析名称
反向解析:
区域名称:网络地址反写.in-addr.arpa.
172.16.1 --> 1.16.172.in-addr.arpa.
1、定义区域
zone "ZONE_NAME" IN {
type {master|slave|forward};
file "网络地址.zone";
};
2、提供区域解析文件
注意;不需要MX A AAAA,以PTR记录为主
如:
$TTL 86400
$ORIGIN 1.16.172.in-addr.arpa.
@ IN SOA ns1.magedu.com. mail.magedu.com. (
20151216001
1H
5M
1w
1D
)
IN NS ns1.magedu.com. 需要全写,不能像正向中省略,前面有ORIGIN定义,省略了就变成了ns1.1.16.172.in-addr.arpa.
IN NS ns2.magedu.com.
33 IN PTR ns1.magedu.com.
34 IN PTR ns2.magedu.com.
33 IN PTR mail.magedu.com.
注意:依然记得要修改权限和属组
测试反向解析:
dig -x IP @SERVER
模拟区域传送
dig -t axfr magedu.com @172.20.1.33 全量查询
dig -t axfr 1.20.172.in-addr.arpa @172.20.1.33 反向的全量查询
主从复制:
定义从区域服务器的方法
zone "ZONE_NAME" IN {
type slave;
masters { master_ip; };
file "slaves/ZONE_NAME.zone";
};
正向的从服务器:/etc/named.rfc1912.zones
zone "magedu.com" IN {
type slave;
master { 172.20.1.33; };
file "slaves/magedu.com.zone"; slaves目录也是相对于/var/named/,slaves目前权限预先定义好了
};
注意:在主DNS服务器中一定要有ns2.magedu.com.(即从服务器)而且得有ns2的A记录,否则DNS有更新记录时,不会通知到各个从DNS服务器更新
主从复制时注意事项:
1)应该为一台独立的名称服务器
2)主服务的区域解析库中必须有NS记录指向从服务器
3)从服务器只需要定义区域,而无需提供解析库文件,同步的解析库文件放置在/var/named/slaves/下
4)主DNS服务器允许从服务器作区域传送
5)主从服务器时间应该同步,可使用ntp工具进行
6)bind版本应保持一致,否则应该从高主低
反向的从服务器:/etc/named/named.rfc1912.zones
zone "1.20.172.in-addr.arpa" IN {
type slave;
masters { 172.20.1.33; };
file "slaves/172.20.1.zone";
};
rndc命令
953/TCP
格式:rndc COMMAND
COMMAND:
reload 重新加载配置文件和解析库文件
reload zone 重新加载区域解析库文件
retranster zone 手动启动区域传送过程,而无需增加序列号
notify zone 重新对区域传送发通知
reconfig 重新加载配置文件
querylog 开启或关闭查询日志,一般不开启,除非用来定位错误
trace LEVEL 开启程序debug,调试级别越高,记录越详细,0为不开启,正常情况下不应该开启
status 查看运行状态
=========================实验部分========================
规划:
172.20.1.33和172.20.1.34,其中
1.33为正向解析,从服务器为1.34
1.34为反向解析,从服务器为1.33
1.33正向DNS配置:
yum安装bind过程略
#yum install -y bind 即可
编辑配置文件 #vim /etc/named.conf
修改:
options {
listen-on port 53 { 172.20.1.33; 127.0.0.1; }; 修改,增加监听本机IP
// 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 no; 修改,禁止dnssec
// dnssec-validation yes; 注释
// dnssec-lookaside auto; 注释
/* Path to ISC DLV key */ 注释
// bindkeys-file "/etc/named.iscdlv.key"; 注释
// managed-keys-directory "/var/named/dynamic"; 注释
};
编辑/etc/named.rfc1912.zones
增加:
zone "linuxtest.com" IN {
type master;
file "linuxtest.com.zone";
};
新建linuxtest.com的解析库
vim /var/named/linuxtest.com.zone
内容:
$TTL 86400
$ORIGIN linuxtest.com.
@ IN SOA ns1.linuxtest.com. wkp.linuxtest.com. (
20151217001
1H
5M
1W
1D
)
IN NS ns1.linuxtest.com.
IN NS ns2.linuxtest.com.
ns1 IN A 172.20.1.33
ns2 IN A 172.20.1.34
www IN A 172.20.1.33
web IN CNAME www
mail1 IN A 172.20.1.33
mail2 IN A 172.20.1.34
@ IN MX 10 mail1
IN MX 20 mail2
修改区域解析库文件权限
[root@localhost named]# chmod 640 linuxtest.com.zone
[root@localhost named]# chown :named linuxtest.com.zone
至此,主DNS正向解析部分已完成,下面是在1.34上做从DNS
修改主配置文件: /etc/named.conf
options {
listen-on port 53 { 172.20.1.34; 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 yes;
// dnssec-lookaside auto;
/* Path to ISC DLV key */
// bindkeys-file "/etc/named.iscdlv.key";
// managed-keys-directory "/var/named/dynamic";
};
修改配置文件/etc/named.rfc1912.zones
添加:
zone "linuxtest.com" IN {
type slave;
file "slaves/linuxtest.com.zone";
master { 172.20.1.33; };
};
注意:实验时可关闭iptables,或者允许53/TCP,时间也要同步,否则可能会出现不能同步的情况
在1.34上做反向解析的主DNS
修改配置文件:vim /etc/named.rfc1912.zones
添加:
zone "1.20.172.in-addr.arpa" IN {
type master;
file "172.20.1.zone";
};
添加解析库文件/var/named/172.20.1.zone
$TTL 86400
$ORIGIN 1.20.172.in-addr.arpa.
@ IN SOA ns2.linuxtest.com. wkp.linuxtest.com. (
20151218001
1H
5M
1W
1D
)
IN NS ns1.linuxtest.com.
IN NS ns2.linuxtest.com.
33 IN PTR ns1.linuxtest.com.
34 IN PTR ns2.linuxtest.com.
33 IN PTR mail1.linuxtest.com.
34 IN PTR mail2.linuxtest.com.
修改权限以及属组
[root@localhost named]# chown :named 172.20.1.zone
[root@localhost named]# chmod 640 172.20.1.zone
[root@localhost named]# rndc reload
重读配置文件和解析库
测试解析:
[root@localhost named]# dig -x 172.20.1.33 @172.20.1.34
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> -x 172.20.1.33 @172.20.1.34
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22105
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;33.1.20.172.in-addr.arpa.INPTR
;; ANSWER SECTION:
33.1.20.172.in-addr.arpa. 86400INPTRns1.linuxtest.com.
33.1.20.172.in-addr.arpa. 86400INPTRmail1.linuxtest.com.
;; AUTHORITY SECTION:
1.20.172.in-addr.arpa.86400INNSns2.linuxtest.com.
1.20.172.in-addr.arpa.86400INNSns1.linuxtest.com.
;; ADDITIONAL SECTION:
ns1.linuxtest.com.86400INA172.20.1.33
ns2.linuxtest.com.86400INA172.20.1.34
;; Query time: 1 msec
;; SERVER: 172.20.1.34#53(172.20.1.34)
;; WHEN: Fri Dec 18 15:15:42 2015
;; MSG SIZE rcvd: 157
在1.33上做反向解析的从服务器
修改主配置文件:vim /etc/named.rfc1912.zones
zone "1.20.172.in-addr.arpa" {
type slave;
file "slaves/172.20.1.zone";
masters { 172.20.1.34; };
};
[root@localhost named]# rndc reload
server reload successful
[root@localhost named]# tail /var/log/messages
在日中中可以看到同步的日志消息
[root@localhost named]# ll /var/named/slaves/
总用量 4
-rw-r--r-- 1 named named 456 12月 18 15:20 172.20.1.zone
解析库文件已存在,同步成功。