DNS(域名系统),用于解析域名和IP地址之间的映射关系
协议使用端口:
udp 53 正常查询解析情况下使用udp53
tcp53 当进行主从之间的区域传送时使用tcp53
DNS域的空间划分
DNS的查询方式
递归查询
当主机A要向DNS服务器发送查询主机D的请求时,服务器返回给A最终结果,这种方式就是递归查询,如果客户端要查找的内容直接在服务器上得到结果,刚给出的答案是一个权威答案,否则就是一个参考答案。
迭代查询
NS服务器接收到A的请求后,本地没有D的解析,则会通过以下过程获得
1、NS向根域询问D,根域让他去找一级域.com
2、NS向一级域.com询问D,.com让他去找二级域.baidu
3、NS向二级域.baidu询问D,.baidu返回D的结果,NS获得D的解析
以上过程则为迭代查询
资源记录
资源记录是DNS数据库中用于答复客户端的条目,资源记录的格式一般如下:
Name [ttl] IN RRtype Value
RRtype是指资源类型,常见的资源类型有SOA、A、AAAA、CNAME、MX、NS、PTR
资源类型 | 说明 |
SOA | 是指定区域的起点,一般包含区域名、区域管理员的电子邮箱以及设置从服务器如何更新区域数据文件的信息 |
A | 主机记录,将域名映射为ipv4地址 |
AAAA | 主机记录,将域名映射为ipv6地址 |
CNAME | 别名记录,可为一个域名其一个别名,达到一个ip地址对应两个域名的效果 |
MX | 邮件记录,列出了域中的邮件服务器,需要设置优先级 |
NS | 指定负责域中域名解析的服务器 |
PTR | 与A记录相反,将IP地址映射成域名 |
DNS服务器安装和配置
1、安装bind和bind-libs软件包
yum install -y bind #DNS服务器软件包 yum install -y bind-libs #bind软件包所使用的库
2、修改配置文件/etc/named/conf
//设置全局配置 options { listen-on port 53 { 192.168.10.1; }; //设置DNS服务器监听的ipv4地址和>端口 listen-on-v6 port 53 { ::1; }; //设置DNS服务器监听的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 { localhost; }; //指定允许进行查询操作的主机 allow-transfer {none;}; //指定允许接受区域传送的从服务器 allow-recursion {aqlist;}; //指定允许为哪些主机进行递归查询 logging { channel default_debug { file "data/named.run"; //指定日志 severity dynamic; }; }; acl aqlist { //配置acl 202.0.0.0/8; 221.0.0.0/8; }; //设置局部配置内容 zone "." IN { type hint; //指定区域类型 file "named.ca"; //指定该区域的区域文件名称 }; zone "test.com." IN { type master; file "test.com.zone"; }; zone "10.168.192.in-addr.arpa" IN { type master; file "10.168.192.in-addr.local"; };
3、使用named-checkconf命令检查配置文件的语法是否正确
named-checkconf /etc/named.conf
4、编辑正向区域文件
vim /var/named/test.com.zone $TTL 38400 @ IN SOA ns.test.com. admin.test.com. ( 2016082601 #序列号,不能超过10位 10800 #指定从服务器每隔多久到主服务器上刷新一次 3600 #刷新失败时,多久重试 604800 #主服务器down后,从服务器能继续工作多久 38400 #否定答案的ttl ) @ IN NS ns.test.com. ns IN A 192.168.10.1 @ IN MX 90 mail.test.com. mail IN A 192.168.10.3
5、编辑反向区域文件
vim /var/named/10.168.192.in-addr.local $TTL 38400 @ IN SOA ns.test.com. admin.test.com. ( 2016082601 10800 3600 604800 38400 ) @ IN NS ns.test.com. 1 IN PTR ns.test.com. 3 IN PTR mail.test.com.
6、使用named-checkzone命令对区域文件进行检查
语法格式:named-checkzone 域名 区域文件
named-checkzone test.com /var/named/test.com.zone
7、启动服务
service named start
DNS实现后端服务器的负载均衡
在DNS服务器上将一个域名映射成为多个IP地址,客户端请求解析时,DNS服务器会随机选取一个地址回复客户端,从而实现了简单的负载均衡功能
DNS主从同步
从服务器复制主服务器的区域文件,与主服务器一起提供地址解析功能;从服务器上的资源记录只能读取,不能修改和删除。
配置过程:
从服务器端:
vim /etc/named.conf zone "test.com." IN { type slave; masters { 192.168.10.1; }; file "slave/test.com.zone"; }; zone "10.168.192.in-addr.arpa" IN { type slave; masters { 192.168.10.1; }; file "slave/10.168.192.in-addr.local"; };
主服务器端:
1、 为从服务器添加一条NS记录和对应的A或PTR记录。
2、编辑/etc/named.conf
allow-transfer{ 192.168.10.2; };
转发DNS服务器
服务器收到客户端的解析请求后,将请求转发给其他DNS服务器进行解析,称为转发
转发服务器分为完全转发和条件转发
完全转发:服务器会将全部的请求都转发给其他服务器进行解析
编辑/etc/named.conf
forwarders { 192.168.0.30; }; \\转发给192.168.0.30进行解析 forward only \\only表示转发前不进行本地查询;first表示转发前先进行本地查询
条件转发:当客户端请求特定域的解析时才进行转发查询
编辑/etc/named.conf
zone “lzs.com" IN { \\对lzs.com域的查询请求进行转发 type forward; \\类型为forward forwarders { 192.168.0.30; }; \\转发给192.168.0.30进行解析 };
虚拟子域
将父域和子域都配置在同一个服务器上
配置文件不变,修改区域文件即可
vim /var/named/test.com.zone $TTL 38400 $ORIGIN test.com. @ IN SOA ns.test.com. admin.test.com. ( 2016082601 10800 3600 604800 38400 ) @ IN NS ns.test.com. ns IN A 192.168.10.1 @ IN MX 90 mail.test.com. mail IN A 192.168.10.3 $ORIGIN lzs.test.com. @ IN NS ns.lzs.test.com. ns IN A 192.138.20.2
缓存DNS服务器
本地不设置任何DNS信息,只执行查询和缓存的操作,当客户端查询时,如果有,则直接返回结果,提高dns的解析速度,减少网络流量。
编辑/etc/named.conf
datasize 100M; \\启用这个选项即可,局部配置都不用配
注意要点:
1、配置文件中每个语句都要以;结尾
2、DNS服务器的地址必须是静态地址
3、编辑区域文件时,域名最后面要以“.”结尾,而且在SOA记录中管理员电子邮箱和”(“之间有空格