DNS(Domain Name Service) 域名解析服务,就是将域名和ip之间做相应的转换,利用TCP和UDP的53号端口
程序所需的包: bind (DNS服务器软件包) 、bind-utils(DNS测试工具,包含dig、host、nslookup等)、bind-chroot(使BIND运行在指定的目录中的安全增强工具)、caching-nameserver(高速缓存DNS服务器的基本配置文件,建议一定安装)
可执行文件所在目录: /usr/sbin/named (Rhel7) /etc/init.d/named (Rhel6)
配置文件所在目录: /etc/named.conf
区域配置文件所在目录:/var/named/xxx.zone
DNS系统作用:
- 正向解析:根据域名查找对应的ip地址
- 反向解析:根据ip地址查找对应的域名
DNS服务器的分类:
- 主从域名服务器:特定DNS区域的权威解析服务器,具有唯一性、冗余性
- 缓存域名服务器:通过像根或其他服务器查询获得域名到ip的解析关系,将查询结果缓存到本地,提高重复查找速度
DNS域名解析过程:
- 客户机访问域名,先查看自己主机的DNS缓存(有时间限制),如果主机缓存有,则直接访问对应ip
- 如果主机 DNS 缓存没有,则查看主机的 hosts 文件,如果有,则直接访问对应ip
- 如果 hosts 文件没有,则将该请求发送给主机指定的域名服务器。
- 域名服务器收到请求后,先查询本地的缓存,如果有该纪录项,则域名服务器就直接把查询的结果返回。
- 如果本地的缓存中没有该记录,则域名服务器把请求发给根域名服务器,根域名服务器返回给域名服务器一个所查询域(根的子域)的主域名服务器的地址。
- 本地服务器向上一步返回的主域名服务器发送请求,接受请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级域名服务器的地址。
- 一直重复上一步,直到找到访问域名所对应的ip地址。然后DNS服务器把域名对应的ip地址发送给主机,同时DNS服务器本地保存起来。
所以,优先级: 本地DNS缓存 > hosts文件 > DNS服务器
windows中hosts文件存放路径: C:\Windows\System32\drivers\etc\hosts
Linux中hosts文件存放路径: /etc/hosts
DNS服务器的安装与部署
- 安装DNS程序: yum -y install bind*
- 修改主配置文件:/etc/named.conf
- 添加并修改区域配置文件 /var/named/xxx.zone
- 修改文件权限: chown named:named /var/named/xxx.zone
- 开启服务,并验证 systemct start named ; nslookup www.xie.com
修改主配置文件: /etc/named.conf
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; }; //修改行
}
zone "." IN { //系统自定义的根域服务器,必须要有
type hint;
file "named.ca";
};
zone "xie.com." IN{ //自定义的,添加正向解析
type master; //主从DNS
file "xie.com.zone"; //指定区域配置文件名,在/var/named/ 目录下
};
zone "10.168.192.in-addr.arpa" IN{ //自定义的,添加反向解析
type master;
file "xie.com.zone";
};
zone "mi.com." IN { //添加对另一个域名的解析
type master;
file "mi.com.zone"
}
在 /var/named/ 目录下分别创建 xie.com.zone 和 mi.com.zone 文件 ,并且如下配置
// xie.com.zone 文件的配置
$TTL 1D
@ IN SOA www.xie.com. root.xie.com. ( // @代表本机
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS www.xie.com.
MX 10 root.xie.com. //邮箱
www IN A 192.168.10.100 //这个必须写在第一条!!
web IN A 192.168.10.110
root IN A 192.168.10.120
* IN A 192.168.10.130 //添加一个默认匹配,当配置文件中的都没匹配,则匹配此条
ftp IN CNAME www //给www.xie.com添加一个别名 ftp.xie.com
1 IN PTR web1.xie.com. //添加反向解析记录 192.168.10.1 解析为 web1.xie.com
2 IN PTR web2.xie.com.
// mi.com.zone 文件的配置
$TTL 1D
@ IN SOA www.mi.com. root.mi.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS www.mi.com.
MX 10 root.mi.com.
www IN A 192.168.10.100
web IN A 192.168.10.200
主从DNS服务器的搭建:
主DNS服务器在上面配置的基础上,在主配置文件 /etc/named.conf 中加入下面一行,意思是允许转移
allow-transfer { 192.168.10.10; }; // 允许 从DNS服务器的ip地址
然后从DNS服务器要同步哪个域名的就写哪个zone,我们这里只同步 xie.com 这个域名的 ,同步的文件路径默认是 /var/named/slaves 下
zone "xie.com." IN {
type slave;
file "slaves/xie.com.zone"; //指定配置文件目录
masters { 192.168.10.124; }; //指定主DNS IP
};
zone "10.168.192.in-addr.arpa" IN{
type slave;
file "slaves/xie.com.zone";
masters{ 192.168.10.128; };
};
配置完成以后重启 named 服务: systemctl restart named ,然后同步域配置文件: rndc reload
转发DNS服务器的配置
转发DNS服务器就是当你向一个DNS服务器请求DNS解析时,他把DNS请求转发到了另一个DNS服务器上
转发DNS服务器也要求安装bind包: yum -y install bind*
然后修改主配置文件:/etc/named.conf
option{
listen-on port 53 { any; }; #修改
allow-query { any; }; #修改
forwarders { 192.168.10.10; }; # 指定你要把DNS请求转发给哪个DNS服务器
}