DNS:域名解析服务器。基于BIND。分布式数据库,上级仅知道其直接下级,下级只知道根的位置。
主机名:www.baidu.com
域名:baidu.com
FQDN:www.baidu.com.,加上点
组织域:.com .org .net .cc
国家域:.cn .tw .hk
反向域:
/etc/hosts:最早的hostname对应ip的文件
/etc/resolv.conf:运营商的dns服务器ip记录
/etc/nsswitch.conf:这个文件是来决定先使用hosts还是resolv的设置
hosts: file dns #代表先用hosts再用运营商的
★两种查询方式
递归:只发出一次请求,一级一级的查找,一级一级的返回。主机指定的DNS必须可以为主机递归。
迭代:发出多次请求,第一级挨个去查找,最后一级直接返回。根不为任何人递归,迭代方式。
★两种解析方式
正向:FQDN->ip www.baidu.com ->ip:202.108.22.5
反向:ip->FQDN 202.108.22.5->www.baidu.com
★工作内容
接受本地客户端查询请求(递归)
接受外部客户端查询请求权威答案
肯定答案:TTL
否定答案:TTL
接受外部客户端查询请求非权威答案
★工作模式
主DNS服务器:数据修改
从DNS服务器:请求数据同步
缓存DNS服务器:
转发器:
★区域传送类型
完全区域传送:axfr
增量区域传送:ixfr
★区域类型
主区域:master
从区域:slave,负责从主dns同步数据库,并提供查询
提示区域:hint,当服务器不知道某个主机名在哪的时候就得去找根,hint就是根的地址zone
转发区域:forward,也就是缓存DNS服务器
★资源记录格式
DOMAIN [TTL] IN RRtype RRvalue
DOAMIN:待查数据,FQDN,记得加上后面的点
TTL:客户端查询到记录后的有效时间
IN:固定关键词
★RRtype:资源记录类型,下面有写
RRvalue:对应的值
例:
www.abc.com. IN A 1.1.1.1
1.1.1.1 IN PTR www.abc.com.
★正向区域资源记录类型
SOA(start of authority):起始授权记录,就是管理这个域的重要参数,放在首行
格式 ZONENAME TTL IN SOA MASTERFQDN ADMINISTRATOR_MAILBOX (
serialnumber
refresh
retry
expire
nagativeTTL )
MASTERFQDN:该区域内主DNS名称
ADMINISTRATOR_MAILBOX:管理员的邮箱,邮箱格式:admin@abc.com写成admin.abc.com
serialnumber:代表数据库的新旧,判断是否需要下载。通常使用日期,大小不能超过2^32,也就是4294967296
refresh:跟新频率,每个多长时间slave去向master请求数据
retry:当更新时由于某些原因导致失败,尝试更新时间,如果更新成功,时间会恢复成refresh
expire:如果一直更新失败,达到这个时间,就不会在更新了,等待管理员处理
nagativeTTL:如果这个数据的zone文件中,RR记录没有标明有效时间,就以这个时间为主。
时间单位:M(分钟),H(小时),D(天),W(周),默认为秒
refresh>=retry*2
refresh+retry<expire
expire>=retry*10
expire>=7天
例
abc.com. 600 IN SOA ns.abc.com. admin.abc.com (
1
1H
5M
1W
1D )
NS(name server):ZONE NAME->FQDN 权威DNS服务器
例
abc.com. IN NS ns.abc.com.
ns.abc.com. IN A 1.1.1.1
MX(mail exchanger):ZONE NAME->FQDN 邮件服务器,当有邮件发送给到这个区域时,直接转发到这个邮件服务器上
邮件服务器定义格式。有一个优先级,防止邮件服务器挂掉之后邮件无法接收。范围是0-99,数值越低越优先。而且必须对应A记录存在
ZONENAME TTL IN MX PRI VALUE
例
abc.com. 600 IN MX 10 mail.abc.com.
mail.abc.com. 600 IN A 1.1.1.1
A(address):FQDN->ipv4 从主机名到ipv4
AAAA(address):FQDN->ipv6 从主机名到ipv6
PTR(pointer):ip->FQDN 从ip到主机名
CNAME(canonical name):FQDN1->FQDN2 2的别名是1,多用在ip常变化的场景
★反向区域资源记录类型
反解ip要把ip倒着写并且加上.in-addr.arpa.,要加上点
1.168.192.in-addr.arpa. IN SOA..........
1.1.168.192.in-addr.arpa. IN PTR www.a.com.
host 主机名:解析这个地址
-a:显示这个主机的详细信息
nslookup 主机名:解析这个地址
nslookup:不加任何参数,可以进入特殊的查询模式
set type=any:列出所有的信息正解方面配置文件
set type=mx:列出邮件服务器信息
dig 主机名:解析这个地址
dig 主机名 @DNSserver:用指定的dns服务器解析这个地址
dig +trace 主机名:从根开始解析这个地址
dig -t type 主机名:指定数据类型解析
a 主机名:正解
ns 域名:域名解析
dig -x 主机名:查询反向解析
BIND
/etc/named.conf:主配置文件
/etc/sysconfig/named:是否启动chroot及额外的参数,这个文件控制
/etc/rndc.key:密钥文件
/etc/rndc.conf:配置文件
/var/named/:区域数据文件,数据库文件默认路径
/var/run/named/:程序启动后默认放置pid的位置
/etc/rc.d/init.d/named:服务脚本,service named configtest检查语法错误
[root@localhost ~]# yum list installed | grep ^bind bind.x86_64 #主程序 bind-chroot.x86_64 #把bind程序关在家里 bind-libs.x86_64 #库文件 bind-utils.x86_64 #客户端查找主机名的相关命令
缓存DNS服务器
1.dns缓存服务器,只把客户端的请求丢给上层服务器,上层服务器返回结果后,将对应关系缓存下来。
2.设置之前,需要关掉selinux,放开防火墙相应端口。
3.缓存器只需要设置下面这些就可以,之后systemctl start named开启,之后测试就行了
4.启动是成功还是失败可以看下/var/log/message文件
由于只是缓存器,所以不需要数据库文件,更改这一个文件就可以了。
[root@localhost ~]# cat /etc/named.conf #默认情况下这个文件会读取/etc/named.rfc1912.zones区域文件 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; #将自己视为客户端的一种查询方式 forward only; #只把客户端的查询交给上层 forwarders { #上层DNS有哪些,可以写多个,分号结尾 8.8.8.8; };
MasterDNS服务器
1.架设这种服务器需要授权,也就是说也就是自个内网可以使用
2.主配置文件仍然是/etc/named.conf
3.每一个正反解文件都需要一个文件,这个文件名需要与/etc/named.conf相关项匹配
4.dns不能查询时会想根请求
5.一个文件对应一个zoon解析
6.邮件资源记录不要忘记加上优先级
7.启动是否成功在/var/log/message文件中查看
8.涉及到的四个文件是
/etc/named.conf
/var/named/正解文件
/var/named/反解文件
/var/named/named.ca
先要修改主文件配置
[root@localhost named]# cat /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; }; recursion yes; #这上面一段都是一样的,需要把forward only去掉 allow-transfer { none; }; #是否允许其他服务器下载数据库,还没配置slave。所以不允许 }; zone "." IN { #这个就是不知道怎么做时候去找根 type hint; file "named.ca"; #这个文件bind有提供,就在/var/named/named.ca }; zone "a.com" IN { #要正解的区域 type master; file "named.a.com"; #这个文件需要等会新建,名字需要匹配 }; zone "0.168.192.in-addr.arpa" IN { #反解区域,名字格式固定 type master; file "named.192.168.0"; #这个文件名也需要匹配 };
之后编辑对应的正解文件
[root@localhost named]# cat /var/named/named.a.com $TTL 600 #这一行是设定默认的TTL值 @ IN SOA dns1.a.com. 1.qq.com. ( 1 3H 15M 1W 1D ) #固定格式,@代表由主文件传过来的域也就是a.com. @ IN NS dns1.a.com. #NS记录 dns1.a.com. IN A 192.168.0.104 #NS的A记录 @ IN MX 1 mail.a.com. #MX记录,邮件服务器前一定要加上优先级 www.a.com. IN A 192.168.0.105 #这些就是相对应的A记录 aaa.a.com. IN CNAME www.a.com. ftp IN A 192.168.0.106 #写成这样会自动补成ftp.a.com.
编辑反解文件
[root@localhost named]# cat /var/named/named.192.168.0 $TTL 600 #默认TTL @ IN SOA dns1.a.com 2697466566.qq.com. ( 1 3H 15M 1W 1D ) @ IN NS dns1.a.com. #@就是0.169.192.in-arrd.arpa 104 IN PTR dns1.a.com. #这样写会补成104.0.168.192.in-addr.arpa. 105 IN PTR www.a.com. 105 IN PTR aaa.a.com. 106 IN PTR ftp.a.om.
SlaveDNS服务器
1.注意事项同上
2.slave服务器不需要编写数据库文件,它的文件从master传过来
3.master主配置文件/etc/named.conf需要配置相关选项
4.master数据库文件/var/named/name.正反解文件 需要配置相关选项
5.涉及到的4个文件分别是
master的 /etc/named.conf
master的 /var/named/正解文件
master的 /var/named/反解文件
slave的 /etc/named.conf
master的主配置文件
[root@localhost ~]# cat /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; }; recursion yes; allow-transfer { none; }; }; zone "." IN { type hint; file "named.ca"; }; #这上面都一样 zone "a.com" IN { type master; file "named.a.com"; allow-transfer { 192.168.0.104; }; #允许讲这个区域的数据库传送给谁 }; zone "0.168.192.in-addr.arpa" IN { type master; file "named.192.168.0"; allow-transfer { 192.168.0.104; }; #同上 };
master的正解文件
[root@localhost ~]# cat /var/named/named.a.com $TTL 600 @ IN SOA dns1.a.com. 2697466566.qq.com. ( 1 3H 15M 1W 1D ) @ IN NS dns1.a.com. dns1.a.com. IN A 192.168.0.105 @ IN NS dns2.a.com. #增加一个NS记录及正向解析 dns2.a.com. IN A 192.168.0.104 @ IN MX 1 mail.a.com. www.a.com. IN A 192.168.0.200 aaa.a.com. IN CNAME www.a.com. ftp IN A 192.168.0.201
master的反解文件
[root@localhost ~]# cat /var/named/named.192.168.0 $TTL 600 @ IN SOA dns1.a.com 2697466566.qq.com. ( 1 3H 15M 1W 1D ) @ IN NS dns1.a.com. @ IN NS dns2.a.com. #增加一个NS记录及反向解析 105 IN PTR dns1.a.com. 104 IN PTR dns2.a.com. 200 IN PTR aaa.a.com. 201 IN PTR ftp.a.om.
slave的主配置文件
[root@localhost ~]# cat /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; }; recursion yes; allow-transfer { none; }; }; zone "." IN { type hint; file "named.ca"; }; #这上面都是一样的 zone "a.com" IN { type slave; file "slaves/named.a.com"; #在/var/named下有slaves的文件夹 #对应填写接收数据的文件名 masters { 192.168.0.105; }; #这个地方需要填写master 的地址 }; zone "0.168.192.in-addr.arpa" IN { type slave; file "slaves/named.192.168.0"; #同上 masters { 192.168.0.105; }; #填写master地址 };
VIEW 负载均衡