DNS:Domain Name System 应用层协议;C/S,53/udp, 53/tcp
BIND:Bekerley Internat Name Domain
ICANN(The Internet Corporation for Assigned Names and Numbers)互联网名称与数字地址分配机构,负责在全球范围内对互联网通用顶级域名(gTLD)以及国家和地区顶级域名(ccTLD)系统的管理、以及根服务器系统的管理
本地名称解析配置文件:hosts
DNS域名
根域
一级域名:Top Level Domain: tld
com, edu, mil, gov, net, org, int,arpa
三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
二级域名
三级域名
最多127级域
DNS服务器类型
主DNS服务器:管理和维护所负责解析的域内解析库的服务器
从DNS服务器:从主服务器或从服务器“复制”(区域传输)解析库副本
缓存DNS服务器(转发器)
DNS数据库的记录:正向解析、反向解析、zone的意义
正向解析:冲主机名查询到IP的流程
反向解析:从ip解析到主机名的流程
zone:不管是正解还时反解,每个域的记录都是一个区域
资源记录类型
资源记录:Resource Record, RR
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录
A:internet Address,作用,FQDN --> IP
AAAA:FQDN --> IPv6
PTR:PoinTeR,IP --> FQDN
NS:Name Server,专用于标明当前区域的DNS服务器
CNAME : Canonical Name,别名记录 。以淘宝网为例www.taobao.com,宝网站是由N多主机的集群。用CNAME可以实现将www.taobao.com。别名为a.taobao.com......x.taobao.com。每个别名对应一个IP,通过DNS将不同访问分别解析到不同的别名主机上。
MX:Mail eXchanger,邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:
SPF(反垃圾邮件)记录,https验证等
示例:_dnsauth TXT 2012011200000051qgs69bwoh4h6nht4n1h0lr038x
SOA记录
name: 当前区域的名字,例如“magedu.com.”
value: 有多部分组成
(1) 当前区域的主DNS服务器的FQDN,也可以使用当前区域的名字;
(2) 当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换例如:admin.test.com。
(3) 主从服务区域传输相关定义以及否定的答案的统一的TTL
test.com. 86400 IN SOA master.test.com. nsadmin.magedu.com. ( 2015042201 ;序列号 2H;刷新时间 10M;重试时间 1W;过期时间 1D;否定答案的TTL值 )
NS记录
name: 当前区域的名字
value: 当前区域的某DNS服务器的名字,例如ns.magedu.com.
注意:一个区域可以有多个NS记录
例如:
test.com. IN NS ns1.test.com.
test.com. IN NS ns2.test.com.
注意:
(1) 相邻的两个资源记录的name相同时,后续的可省略
(2) 对NS记录而言,任何一个ns记录后面的服务器名字,都应该在后续有一个A记录
ns1 in A 192.168.0.1
ns2 in A 192.168.0.2
MX记录
name: 当前区域的名字
value: 当前区域的某邮件服务器(smtp服务器)的主机名
一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
例如:
test.com. IN MX 10 mx1.test.com. IN MX 20 mx2.test..com. 注意:对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录
A记录
name: 某主机的FQDN,例如:www.test.com.
value: 主机名对应主机的IP地址
例如:
www.test.com IN A 1.1.1.1 www.test.com. IN A 2.2.2.2 mx1.test.com. IN A 3.3.3.3 mx2.test.com. IN A 4.4.4.4 $GENERATE 1-254 HOST$ IN A 1.2.3.$ #比如说有server{1-99}.test.com,此时可以使用这种表达方式,而不是添加server1.test.com~ser99.test.com这99条记录。 *.test.com. IN A5.5.5.5 ##当有人输入wwwwwww.test.com时,会被*.test.com匹配到。 test.com. IN A6.6.6.6 避免用户写错名称时给错误答案,可通过泛域名解析进行解析至某特定地址
AAAA
name: FQDN
value: IPv6
PTR
name: IP,有特定格式,把IP地址反过来写,1.2.3.4,要写作4.3.2.1。有特定后缀:in-addr.arpa.,所以完整写法为:4.3.2.1.in-addr.arpa.
value: FQDN
例如:
4.3.2.1.in-addr.arpa. IN PTR www.magedu.com. 如1.2.3为网络地址,可简写成: 4 IN PTR www.magedu.com. 注意:网络地址及后缀可省略;主机地址依然需要反着写
CNAME
name: 别名的FQDN
value: 真正名字的FQDN
例如:
www.test.com. IN CNAME websrv1.test.com.
www.test.com. IN CNAME websrv2.test.com.
DNS安装和配置
DNS服务器软件:
bind,powerdns,unbound
BIND相关程序包:
yum list all bind*
bind:服务器
bind-libs:相关库
bind-utils:客户端
bind-chroot: /var/named/chroot/
BIND程序名:named
安装
yum –y install bind
重新加载配置
rndc reload rndc
remote name domain controller,默认与bind安装在同一主机,且只能通过127.0.0.1连接named进程提供辅助性的管理功能;953/tcp
systemctl reload named
配置文件
服务脚本和名称:/etc/rc.d/init.d/named /usr/lib/systemd/system/named.service
主配置文件:/etc/named.conf, /etc/named.rfc1912.zones, /etc/rndc.key
解析库文件:/var/named/ZONE_NAME.ZONE
注意:
(1) 一台物理服务器可同时为多个区域提供解析
(2) 必须要有根区域文件;named.ca
主配置文件语法检查:
named-checkconf
解析库文件语法检查:
named-checkzone "magedu.com" /var/named/magedu.com.zone
配置生效:
rndc reload 或 service named reload
主配置文件
全局配置:options {};
日志子系统配置:logging {};
区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
zone "ZONE_NAME" IN {};
一般配置以下三项就可以
listen-on port 53 { localhost; } 默认只监听127.0.0.1所以不对外提供服务。listen-on port 53 { localhost; }。为什么建议配置为localhost,因为localhost代表本机上的所有IP,这样可以再改IP的情况下不该配置文件。 allow-query { any; } any|netip|ip ##允许哪些主机使用dns查询服务
zone "ZONE_NAME" IN { ##本机能够为哪些zone进行解析
type {master|slave|hint|forward};
file "ZONE_NAME.zone";
};
include "/etc/named.rfc1912.zones"; ##上边的zone "ZONE_NAME" IN {};最好配置在此文件中,这是一个专门存放zone的问价。
include "/etc/named.root.key";
include "/etc/named.root.key";
实验一:配置一个正向解析区域"test.com"
/etc/named.conf options { listen-on port 53 { localhost; }; allow-query { any; }; } /etc/named.rfc1912.zones zone "test.com" IN { type master; file "test.com.zone"; }; /var/named/test.com.zone ###注意此配置文件的数组要配置成named,且最少有r权限。 $TTL 1D @ IN SOA dns.test.com. mail.test.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS dns dns IN A 192.168.206.15 www IN CNAME websrv websrv IN A 192.168.206.11 wensrv IN A 192.168.206.12
反向区域
区域名称:网络地址反写.in-addr.arpa.
172.16.100. --> 100.16.172.in-addr.arpa.
(1) 定义区域 zone "ZONE_NAME" IN { type {master|slave|forward}; file "网络地址.zone" }; (2) 定义区域解析库文件 注意:不需要MX,以PTR记录为主
实验二:配置一个反向解析区域
/etc/named.rfc1912.zones zone "206.168.192.in-addr.arpa" IN { type master; file "192.168.206.zone"; }; more /var/named/192.168.206.zone $TTL 1D @ IN SOA @ mail.test.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS dns
dns IN A 192.168.206.15 11 IN PTR websrv.test.come
测试命令
dig -x 192.168.206.11 @192.168.206.15
dig -t ptr 11.206.168.192.in-addr.arpa @192.168.206.15
DNS从服务器配置
各种类型的主从服务器的搭建,都有共性,第一主从服务器得知道彼此的位置;第二必须有一个标识,来区分master和slave;第三主从之间有一定的数据传输机制。
1、应该为一台独立的名称服务器
2、主服务器的区域解析库文件中必须有一条NS记录指向从服务器
3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
4、主服务器得允许从服务器作区域传送
5、主从服务器时间应该同步,可通过ntp进行;
6、bind程序的版本应该保持一致;否则,应该从高,主低
定义从区域的方法:
zone "ZONE_NAME" IN {
type slave;
masters { MASTER_IP; };
file "slaves/ZONE_NAME.zone";
};
实验三配置一个主从dns
主服务器192.168.206.15
/etc/named.conf
allow-tranfwer { 192.268.206.20; };##只允许从服务器从主节点抓取数据。可使用dig -t axfr test.com @192.168.206.15验证。
/var/named/test.com.zone ###注意此配置文件的数组要配置成named,且最少有r权限。 $TTL 1D @ IN SOA dns.test.com. mail.test.com. ( 0 ; serial###当主节点更改了数据库文件时一定要手动更改serial,否则不会同步到从服务器 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS dns IN NS dns2 dns IN A 192.168.206.15 dns2 IN A 192.168.206.20 www IN CNAME websrv websrv IN A 192.168.206.11 wensrv IN A 192.168.206.12
主服务器需要添加一个NS记录,目的时让主节点知道除了自己外还有其他的dns服务器
从服务器192.168.206.20
/etc/named.conf
allow-tranfwer { none; };##从服务器不允许任何人抓取数据。可使用dig -t axfr test.com @192.168.206.20验证。
/etc/named.rfc1912.zones zone "test.com" IN { type slave; masters {192.168.206.15;}; ##主dnsIP file "slaves/test.com.zone"; }; options { listen-on port 53 { localhost; }; allow-query { any; }; }
测试
查看slaves下是否有同步的文件
dig命令测试