DNS总结:
DNS是应用层协议
本地名称解析的配置文件:/etc/hosts
域名最多有127级
DNS查询类型:递归查询 , 迭代查询
解析类型分为正向解析和反向解析:
域名---> IP
IP ----> 域名
DNS服务器的类型分为:主服务器 , 从服务器 , 缓存DNS服务器(转发器)
主服务器:管理和维护所负责解析的域内解析的服务器。
从服务器:从主服务器或从服务器“复制”解析库副本。
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求失败时再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
区域传输:
完全传输:传递整个解析库
增量传输:传递解析库变化的那部分内容。
DNS解析:
Client --> host文件 --> DNS service local cache --> DNS server --->server cache --> iteration(迭代) ---> 根 ---> 顶级域名DNS ---> 二级域名DNS
解析答案:
肯定答案:
权威答案
非权威答案
否定答案
资源记录:
A:internet address 作用:域名---> IP
AAAA:域名 ---> Ipv6
PTR:PointTeR IP ---> 域名
NS:用于表明当前区域的DNS服务器
CNAME:别名记录
MX:邮件交换器
资源记录定义语法:
语法:name [TTL] IN rr_type value
TTL可从全局继承
@可用于引用当前区域的名字
同一个名字可以通过多条记录电一不同的值;此时DNS服务器会以轮询的方式响应
同一个值也可能有多个不同的定义名字;通过不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机
SOA记录:
name:当前区域的名字 :例如: “magedu.com”
value: 有多部分组成
(1)当前区域的主DNS服务器的域名,也可以使用当前区域的名字;
(2)当前区域管理员的邮箱地址;单地址中不能使用@符号,一般用.替换
例如;linuxdu.mage.com
(3)主从服务区域传输相关定义以及否定的答案的统一的TTL
NS记录:
一个区域可以有多个NS记录
相邻两个资源记录的name相同时,后续的可省略
对NS记录而言,任何一个NS记录的后面的服务器名字,都应该在后续有一个A记录
MX记录:
一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小越优先。
注意:对MX记录而言,任何一个MX记录后面的服务起名字,都应该在后续有一个A记录
A记录:
例如:
www.magedu.com. IN A 1.1.1.1
$GENERATE 1-254 HOST$ A 1.2.3.$
*.magedu.com. IN A 5.5.5.5
magedu.com. IN A 3.3.3.3
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.
别名记录:
name:别名的域名
value:真正名字的域名
例如:www.magedu.com. IN CNAME websrv.magedu.com.
DNS的安装:
程序包:bind unbound
程序名:named, unbound
yum list all bind*
bind: 服务器
bind-libs:相关库
bind-utils:客户端
bind-chroot:/var/named/chroot
部署magedu.com 正反向解析记录
1) [root@centos7 ~]# vim /etc/named.conf listen-on port 53 { localhost; }; allow-query { any; }; include "/etc/named.magedu.zones";
2) [root@centos7 ~]# cp -p /etc/named.rfc1912.zones /etc/named.magedu.zones [root@localhost named]# chgrp named /etc/named.magedu.zones
3) [root@centos7 ~]# vim /etc/named.magedu.zones zone "magedu.com" IN { type master; file "magedu.com.zone"; }; zone "125.168.192.in-addr.arpa" IN { type master; file "192.168.125.zone"; };
4) [root@centos7 ~]# cd /var/named/ [root@centos7 named]# cp -p named.localhost magedu.com.zone [root@centos7 named]# cp -p named.localhost 192.168.125.zone
5) $TTL 1D @ 10D IN SOA @ admin ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS ns1.magedu.com. ns1 A 192.168.125.5 @ A 10.12.11.1 centos6 A 192.168.125.6 www CNAME centos6 *.magedu.com A 8.8.8.9 mail A 2.2.2.2 $GENERATE 100-200 desktop$ A 172.19.0.$
6)
[root@centos7 named]# vim 192.168.123.zone $TTL 1D @ 10D IN SOA ns1.magedu.com. admin.magedu.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ NS ns1.magedu.com. 7 PTR ns1.magedu.com. 100 PTR centos6.magedu.com.
7) root@centos7 named]# named-checkconf 在6中也可以使用 [root@centos6 ~]# /etc/init.d/named configtest [root@centos7 named]# named-checkzone magedu.com /var/named/magedu.com.zone zone magedu.com/IN: loaded serial 0 OK [root@centos7 named]# named-checkzone 123.168.192.in-addr.arpa /var/named/192.168.123.zone zone 123.168.192.in-addr.arpa/IN: loaded serial 0 OK
root@centos7 named]# rndc reload server reload successful 或 [root@centos7 named]# systemctl reload named
查询测试:
[root@centos6 ~]# dig www.magedu.com @192.168.123.7 [root@centos6 ~]# dig -t soa magedu.com @192.168.123.7 [root@centos6 ~]# dig -t ptr 7.123.168.192.in-addr.arpa. @192.168.123.7 或 [root@centos6 ~]# dig -x 192.168.123.7 @192.168.123.7 注释: [root@localhost ~]# dig www.baidu.com 查看DNS [root@localhost ~]# dig -t soa baidu.com 查看序列号 [root@localhost named]# vim magedu.com.zone @ 10D IN SOA @ liu.magedu.com. ( 0 ; serial 序列号 1D ; refresh 刷新时间 1H ; retry 重试时间 1W ; expire 过期时间 3H ) ; minimum 否定答案的TTL值
关于缓存:
LINUX客户端无缓存
服务端清空缓存 :rndc flush
WINDOWS客户端
ipconfig/displaydns 查看缓存
ipconfig/flushdns 清空缓存
dig命令:
dig [-t type] name [@SERVER] [query options]
dig只用于测试DNS系统,不会查询hosts文件进行解析
查询选项:dig +trace magedu.com 跟踪解析过程
dig +[no]recurse magedu.com 进行递归解析
测试反向解析:
dig -x IP = dig -t ptr reverseip.in-addr.arpa
模拟区域传送:
dig -t axfr ZONE_NAME @SERVER
dig -t axfr magedu.com @10.10.10.10
dig -t axfr 125.168.192.in-addr.arpa @172.16.1.1
host测试命令:
host -t NS magedu.com 172.18.0.1
host -t SOA magedu.com
host 1.2.3.4
nslookup命令:
交互式模式:
nslookup>
>server IP :指明使用哪个DNS sever 进行查询
>set q=RR_TYPE :知名查询的紫云记录类型
>NAME :要查询的名称。
访问控制指令:
allow-query {} : 允许查询的主机名单;白名单
allow-transfer {}: 允许区域传送的主机;白名单
allow-recusion {}: 允许递归的主机,建议全局使用
allow-update {} : 允许更新区域数据库中的内容
例如:[root@localhost ~]# nsupdate
> server 192.168.125.5
> zone magedu.com
> update add ftp.magedu.com 7800 IN A 9.9.9.9
> send
> quit
DNS安全工具bind-chroot的应用:
centos5: yum -y install bind bind-chroot caching-nameserver
安装chroot时,会将源目录下的所有conf和zone文件以软连接的方式放到chroot环境,安装后对chroot的改变都应该在chroot下完成。
centos6:yum -y install bind bind-chroot
在启动时会将源目录以 mount -o bind 的方式挂载到chroot环境,在关闭时卸载,但不会自动挂载自定义的扩展文件
centos7:bind bind-chroot
一旦安装bind-chroot,以后将使用named-chroot.service服务,原始的named.service无效,在启动named时,会将源目录以 mount -o bind 的方式挂载到chroot环境,在关闭时卸载,但不会自动挂载自定义的扩conf展文件
主从服务器:
从服务器上: [root@localhost chroot]# vim /etc/named.rfc1912.zones zone "magedu.com" IN { type slave; masters { 192.168.125.5; }; file "slaves/magedu.com.zone"; }; 如果从服务器想动态更新就得在主服务器上做如下操作: 在NS记录上加一条从服务器 NS ns2.magedu.com. ns2 A 192.168.125.9
禁止其他人成为你的辅DNS: 再主上:vim /var/named/chroot/etc/named.conf allow-transfer { 192.168.125.9; }; 在辅上加:vim /var/named/chroot/etc/named.conf allow-transfer { none; };
配置子DNS:
在主DNS上的操作: $TTL 1D @ 10D IN SOA magedu.com. admin.magedu.com. ( 3 ; serial 86400 ; refresh (1 day) 3600 ; retry (1 hour) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS ns1.magedu.com. bj NS ns2.magedu.com. zz NS ns3.magedu.com. ns1 A 192.168.125.5 ns2 A 192.168.125.9 ns3 A 192.168.125.10 注意主的dnssec需要关闭: dnssec-enable no; dnssec-validation no;
子DNS:
vim /etc/named.conf listen-on port 53 { localhost; }; allow-query { any; };
[root@slave1 named]# vim /etc/named.rfc1912.zones zone "bj.magedu.com" IN { type master; file "bj.magedu.com.zone"; };
转发服务器:
在子域上做: forward first; forwarders { 192.168.125.5; }; 注意主的dnssec需要关闭: dnssec-enable no; dnssec-validation no;
第一种:全局 在/etc/named.conf 在options中 forwarders { 192.168.123.7; }; 第二种:部分域的转发 在zone文件中做 zone "bj.magedu.com" IN { type forward; forwarders { 192.168.123.8; }; };
模拟根环境:
根的配置文件:
[root@localhost named]# vim /etc/named.rfc1912.zones zone "." IN { type master; file "root.zone"; }; 删除[root@localhost named]# vim /etc/named.conf 中的"."的zone文件 vim /var/named/root.zone $TTL 1D . IN SOA ns. root. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS ns. ns. A 192.168.123.9 com. NS ns.com. ns.com. A 192.168.123.8
com的配置文件:
vim /etc/named.conf dnssec-enable no; dnssec-validation no; [root@slave1 chroot]# vim /etc/name.rfc1912.zones zone "com" IN { type master; file "com.zone"; }; [root@slave1 named]# vim com.zone $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS ns.com. ns A 192.168.125.9 magedu.com. NS magedu.com. magedu.com. A 192.168.125.5
magedu.com的配置文件:
[root@localhost named]# vim magedu.com.zone $TTL 1D @ 10D IN SOA magedu.com. admin.magedu.com. ( 3 ; serial 86400 ; refresh (1 day) 3600 ; retry (1 hour) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS ns1.magedu.com. NS ns2.magedu.com. ns1 A 192.168.125.5 ns2 A 192.168.125.9 www A 8.8.8.8 [root@localhost chroot]# vim //etc/named.magedu.zones zone "magedu.com" IN { type master; file "magedu.com.zone"; }; [root@localhost chroot]# vim /etc/named.conf allow-query { any; }; allow-transfer { 192.168.125.10; };
DNS加密技术:
1.主DNS生成密钥
[root@centos7 ~]# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST master-slave
2.读取密钥文件获得加密字符串,然后生成transfer.key
[root@centos7 ~]# vim /etc/transfer.key key "master-slave" { algorithm hmac-md5; secret "CieaJpeOw8zCJq9VDO492g=="; }; 并设置权限为440 group为named
3.主DNS配置
[root@centos7 ~]# vim /etc/named.conf include "/etc/transfer.key"; allow-transfer { key master-slave; };
重启服务
4.将transfer.key 发往从DNS,并设置权限为440 group为named
5.编辑从DNS的配置
[root@dns10 slaves]# vim /etc/named.conf include "/etc/transfer.key"; server 192.168.123.7 { keys { master-slave; }; };
6.最后重启从DNS的服务 。
智能DNS:
首先我们需要定义不懂的acl .
1)从完整模板中考出view段使用:[root@localhost ~]# cd /usr/share/doc/bind*/sample/
2)将“.”的zone文件写在:[root@localhost chroot]# vim /etc/named.rfc1912.zones 中。并删除[root@localhost chroot]# vim /etc/named.conf 中的zone文件。
3) 拷贝 cp -p /etc/named.rfc1912.zones /var/named/chroot/etc/named.zz-magedu.com.zones
cp -p /etc/named.rfc1912.zones /var/named/chroot/etc/named.bj-magedu.com.zones
注意:每个zones文件中都要有“.”的zone文件
4)编辑上边拷贝出来的文件:
zone "magedu.com" IN { type master; file "zz.magedu.com.zone"; }; zone "magedu.com" IN { type master; file "bj.magedu.com.zone"; };
5)拷贝出对应的zone文件,最后重新启动服务即可
编译安装bind:
下载软件包
tar xvf bind-9.11.0a3.tar.gz
[root@slave2 app]# cd bind-9.12.1/
编译安装:
[root@slave2 bind9]# ./configure --prefix=/app/bind9 --sysconfdir=/etc/bind9 --without-openssl
[root@slave2 bind9]# make -j 2
[root@slave2 bind9]# make install
配置相关命令文件:
[root@slave2 bind9]# vim /etc/profile.d/env.sh export PATH=/app/bind9/bin:/app/bind9/sbin:$PATH [root@slave2 bind9]# source /etc/profile.d/env.sh 创建/etc/bind9/named.conf 文件:并将权限改为640 所属组为named [root@slave2 bind9]# vim named.conf options { directory "/var/named"; }; zone "." IN { type hint; file "named.ca"; }; zone "test.com" IN { type master; file "test.com.zone"; };
创建用户:
[root@slave2 bind9]# useradd -r -m -d /var/named -s /sbin/nologin named [root@slave2 bind9]# cd /var/named/ [root@slave2 named]# dig -t ns . @172.18.0.1 > named.ca [root@slave2 named]# chgrp named named.ca [root@slave2 named]# chmod 640 *
编辑zone文件:
$TTL 1D @ 10D IN SOA ns.test.com. admin.com. ( 1 ; serial 86400 ; refresh (1 day) 3600 ; retry (1 hour) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NS ns.test.com. ns A 192.168.125.10 www A 7.7.7.7
启动服务: [root@slave2 named]# named -u named -f -g -d 3
压力测试:
先编译安装软件包:
[root@slave2 ~]# cd /app/bind-9.12.1/contrib/queryperf/ [root@slave2 queryperf]# ./configure [root@slave2 queryperf]# make [root@slave2 queryperf]# ./queryperf -d /app/ceshi.txt