一、DNS简介
1.域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务。
2.权威名称服务器的类型包括:
Master:包含原始区域数据。有时称作‘主要’名称服务器。
Slave:备份服务器"次要",通过区域传送Master服务器获得的区域数据的副本。
3.非权威/递归名称服务器:
仅缓存名称服务器。
客户通过其查找来自权威名称服务器的数据。
4.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。存储并提供某区域(整个DNS域或DNS域的一部分)的实际数据。dns区域采用资源记录的形式存储信息。
每条资源记录均具有一个类型 , 表明其保留的数据类型。
A : 名称至 IPv4 地址。
AAAA : 名称至 IPv6 地址。
CNAME : 名称至 ”规范名称 “( 包含 A/AAAA 记录的另一个名称 )。
PTR : IPv4/IPv6 地址至名称。
MX : 用于名称的邮件交换器 ( 向何处发送其电子邮件 )。
NS : 域名的名称服务器。
SOA :“授权起始 “ , DNS 区域的信息 ( 管理信息 )。
5.DNS查找:
客户端上的 Stub 解析器, 将查询发送至 /etc/resolv.conf 中的名称服务器,如果名称服务器对于请求的信息具有权威性 , 会将权威答案发送至客户端,否则 , 如果名称服务器在其缓存中有请求的信息 , 则会将非权威答案发送至客户端,如果缓存中没有信息 , 名称服务器将搜索权威名称服务器以查找信息 , 从根区域开始 , 按照DNS 层次结构向下搜索, 直至对于信息有具有权威性的名称服务器 , 以此为客户端获得答案。在此情况中,名称服务器将信息传递至客户端并在自己的缓存中保留一个副本 , 以备以后查找。
6.DNS排错
它显示来自DNS查找的详细信息,其中包括为什么查询失败:
NOERROR:查询成功。
NXDOMAIN:服务器提示不能存在这样的名称。
SERVFAIL:DNS服务器停机或DNSSEC响应验证失败。
REFUSED:DNS服务器拒绝回答(也许是出于访问控制)。
二、DNS部署
1.真机连接网络ping 114.114.114.114
开启火墙伪装
2.在虚拟机
设置ip地址
设置ip地址172.25.254.139
设置网关为真机ip:172.25.254.39
3.安装部署dns,
配置yum源仓库
yum install bind -y
systemctl start named ##打开服务
系统中加密字符保存在加密设备里/cat/dev/random
第一次开启服务时,加密字符数不够。需要在虚拟机里敲击键盘或者晃动鼠标。
systemctl enable named
systemctl stop firewalld
systemctl disable firewalld
主配置文件: /etc/named.conf
子配置文件: /etc/name.rfc1912.zones
数据目录: /var/named
a---all
n不做解析只显示ip地址
t---> tcp协议
l活跃的
u--->udp 协议
p进程名称
e扩展信息
netstat -antlupe
4.高速缓存dns
vim /etc/named.conf ##主配置文件,DNS服务主机
第11行
listen-on port 53 { any; }; ##虚拟机打开端口权限为所有,让53接口在任何IP上可以打开
第17行
allow-query { any; }; ##允许任何用户来查询
第18行
forwarders { 114.114.114.114; }; ##访问ip
第33行
dnssec-validation no; ##不发送给网警机构进行检测,yes可能使解析位置发生变化
systemctl restart named ##重启服务
测试:
在客户主机设置服务主机,有网关就注释掉
vim /etc/resolv.conf
nameserver 172.25.254.139
dig www.baidu.com
三、权威dns的正向解析
dns服务器:
vim /etc/named.rfc1912.zones ##子配置文件,如果写在主配置文件中会影响文件的读取
24 zone "dy.com" IN {
25 type master;
26 file "dy.com.zone"; ##file里面是各个域名的解析
27 allow-update { none; };
28 };
cd /var/named/ ##dy.com.zone编写的目录
cp -p named.localhost dy.com.zone ##相同权限复制,如果不复制权限会查询失败
vim dy.com.zone
1 $TTL 1D ##客户可以把信息缓存一天
2 @ IN SOA dns.dy.com. root.dy.com. ( ##@表示引号里域名,可以省略域名
直接写解析的内容,SOA一个域权威记录的相关信息,"."表示字符串结束
0 ; serial
1D ; refresh ##刷新客户主机的时间
1H ; retry ##一小时后可以继续
1W ; expire ##客户查询时最多能查询的时间
3H ) ; minimum ##最小缓存时间,从缓存中调取
NS dns.dy.com. ##NS字符串来源,谁负责维护的
dns A 172.25.254.139
www A 172.25.254.111
bbs A 172.25.254.222
systemctl restart named
##注意:dy.com.zone里面的@表示etc/name.rfc1912.zones里面的zone后面的引号里面的内容,即dy.com。如果没有.会自动补齐dy.com。
/etc/named.rfc1912.zones
/var/named/dy.com.zone ##10为优先级
vim /etc/resolv.conf
写入:nameserver 172.25.254.139
dig xxx.xxx.com
CNAME域名解析记录
又叫别名记录,理解(小时候都有一个小名,大了是学名,学名的符合公安系统,小名只是一个代名词,但也有好处就是不暴露自己,如一个网站在发布的时候,让xxx.com发布出去,这样不容易被用户所察觉,达到隐藏自己的目的,同时是轮播的)
A:地址解析记录
ptr:把ip变成域名
域名转换:
vim /var/named/westos.com.zone
systemctl restart named
vim /var/named/westos.com.zone
systemctl restart named
NS dns.westos.com.
www CNAME bbs.a.westos.com.
bbs.a A 172.25.254.222
bbs.a A 172.25.254.111 ##完成轮换
westos.com. MX 1 mail.westos.com.
mail A 172.25.254.200 ##给westos.com 发送邮件将发送给172.25.254.200
顶级域名(根域名) .
二级域名 .com
三级域名 baidu.com
地址解析记录
ptr:把ip变成域名
MX:邮件解析记录
邮件:smtp协议,简单邮件传输协议,常用软件postfix
全称是邮件交换记录,在使用邮件服务器的时候,MX记录是无可或缺的,比如A用户向B用户发送一封邮件,那么他需要向DNS查询B的MX记录,DNS在定位到了B的MX记录反馈给A用户的MX记录服务器里!
测试:
dig -t mx westos.com
mail root@westos
mailq
postsuper -d XXXXXXXXX
四、权威dns的反向解析
(1)在dns服务器
vim /etc/named.rfc1912.zones写入:
49 zone "254.25.172.in-addr.arpa" IN {
50 type master;
51 file "172.25.254.ptr"; ##file里面是各个域名的解析
52 allow-update { none; };
53 };
(2)
cd /var/named/ ##编写的目录
cp -p named.loopback 172.25.254.ptr ##相同权限复制
vim 172.25.254.ptr写入:
1 $TTL 1D
2 @ IN SOA dns.dzh.com. root.dzh.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.dy.com.
dns A 172.25.254.139
139 PTR dns.dy.com
111 PTR www.dy.com.
222 PTR bbs.dy.com
systemctl restart named
/etc/named.rfc1912.zones
/etc/named/172.25.254.ptr
测试:
dig -x 172.25.254.111
五、权威dns的双向解析
控制域名能被谁解析,不同客户得到不同的地址。
(1)在dns服务器
vim /etc/named.conf
view localnet {
57 match-clients { localhost; };
58 zone "." IN {
59 type hint;
60 file "named.ca";
61 };
62 include "/etc/named.rfc1912.zones";
63 };
64 include "/etc/named.root.key";
65 view internet {
66 match-clients { any; };
67 zone "." IN {
68 type hint;
69 file "named.ca";
70 };
71 include "/etc/named.rfc1912.inters";
72 };
注意:把上面的"."的zone注释掉
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.inters
vim named.rfc1912.inters
zone "dy.com" IN {
type master;
file "dy.com.inter";
allow-update { none; };
};
(3)在/var/named/路径下
cp -p dy.com.zone dy.com.inters
vim dy.com.inters
$TTL 1D
@ IN SOA dns.dy.com root.dy.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns.dy.com.
dns A 192.168.0.139
www CNAME bbs.a.dy.com.
bbs.a A 192.168.0.222
bbs.a A 192.168.0.111
dy.com. MX 1 mail.dy.com.
mail A 192.168.0.139
(4)vim /etc/named.conf
systemctl restart named
注意:
第一个view是针对本机的,读的文件是/etc/named.rfc1912.zones
第二个是针对其他机子的,读的文件是/etc/named.rfc1912.inters
/etc/named.rfc1912.inters
/var/named/dy.com.inter
(5)测试:
在两台虚拟机上测试(dns都设置为172.25.254.139)
dig www.westos.com
在本机,解析出来的是172
在别的机子,解析出来的是192
六、辅助dns
访问dns人过多,访问压力过大,一台主机不能负载。
//注释后表示所有主机都可以访问
dns服务重启的时候同步唯一一次
不对比内容
serial 查看这个值 如果发生改变 立即同步
最多10位
2019021601
dns集群:变一个其他的都变
实验:
准备:还原双向解析
1>主dns的设定
vim /etc/named.rfc1912.zones
24 zone “dy.com” IN{
25 type master;
26 file “dy.com.zone”;
27 allow-update { none; };
28 also-notify { 172.25.254.239; };#写入
29 };
更改解析地址:vim /var/named/westos.com.zone
systemctl restart named
注意:每次在更改A记录文件后必须更改serial的数值,这个数值最大10位
2>辅助dns上
yum install bind -y
systemctl restart named
systemctl stop firewalld
vim /etc/resolv.conf #设置dns
nameserver 172.25.254.239
vim /etc/name.conf
vim /etc/named.rfc1912.zones
写入:
zone “dy.com” IN{
type slave;
masters { 172.25.254.139; };
file “slaves/dy.com.zone”;
allow-update { none; };
};
systemctl restart named
测试:
辅助
vim /etc/resolv.conf
nameserver 172.25.254.239
dig www.dy.com
主dns更改再测试
主DNS更改并重启服务
注意:更改完后要更改serial前的数字
注意规范:表示2019年XX月XX日的第二次修改
七、dns的远程更新
(1)基于ip的
cp -p westos.com.zone /mnt/ ##备份westos.com.zone
vim /etc/named.rfc1912.zones
写入:
zone “dy.com” IN{
type master;
file “dy.com.inter”;
allow-update { 172.25.254.239; };
also-notify { 172.25.254.239; };
};
chmod 770 /var/named #更改目录的权限
systemctl restart named
测试在239
nsupdate
server 172.25.254.139
update add hello.dy.com 86400 A 172.25.254.123
send
quit ##添加
测试:
dig hello.dy.com
nsupdate
server 172.25.254.139
update delete bbs.dy.com
send
quit ##删除
update产生的在139里的/etc/named/dy.com.inter.jnl中
要重启服务才能到dy.con.inter里
解析不出来
status: NXDOMAIN
重启服务后dy.com.zone 文件中没有hello.dy.com的解析
selinux会影响,在主dns端把selinux状态改为disabled
(2)基于key
删除基于ip实验中的设定,先重启服务再还原
在主dns
dnssec-keygen -a HMAC-MD5 -b 128 -n host dy ##-a 加密方式,-b 加密字符长度,-n 加密用途
ls
cp /etc/rndc.key /etc/dy.key -p
vim /etc/dy.key
cat Kwestos.+157+49396.key ##查看加密字符
westos. IN KEY 512 3 157 r6EVAPYy9lRUB415vnNqOQ==
cp -p /etc/rndc.key /etc/westos.key
vim /etc/westos.key
写入:
key “dy” {
algorithm hmac-md5;
secret “s8n0Yly0DTPaM6aislqBkQ==” ##加密字符用cat查看后复制过来
};
vim /etc/named.conf
写入:
42 include “/etc/dy.key”;
vim /etc/named.rfc1912.zones
zone “dy.com” IN{
type master;
file “dy.com.inter”;
allow-update { key dy; }; ##指定dy域可以被dykey更新
also-notify { 172.25.254.239; };
};
systemctl restart named
测试:
将钥匙发送给辅助dns
scp Kdy.+157+52339.* [email protected]:/mnt/
在辅助dns
nsupdate -k Kdy.+157+52339.key
server 172.25.254.139
update add hello.dy.com 86400 A 172.25.254.111
send
quit
在被更新端:dig hello.dy.com
注意:时间不同步时会报错—clocks are unsynchronized,需要设置时间同步,如果遇到两台时间差别很大,需要同步时间
八、ddns(花生壳):
1)实验环境—>搭建dhcp:
yum install dhcp -y
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
7 option domain-name "westos.com";
8 option domain-name-servers 172.25.254.118;
14 ddns-update-style interim; ##开启dhcp更新dns功能,让dhcp通知dns更新,dns里不能有这个域名的记录
32 subnet 172.25.254.0 netmask 255.255.255.0 {
33 range 172.25.254.60 172.25.254.99;
34 option routers 172.25.254.18;
35 }
36
37 key westos { ##dhcp更新dns时用到的key
38 algorithm hmac-md5;
39 secret r6EVAPYy9lRUB415vnNqOQ==;
40 };
41 zone westos.com. { ##指定dhcp更新的域名
42 primary 127.0.0.1; ##指定dns所在的主机ip
43 key westos; ##指定更新这个域时用到的key名称
44 } ##没有分号
解析的ip是固定的,但主机ip可能会发生改变(dhcp分配ip)
更改主机名,让主机名在westos.com 这个域里
hostnamectl set-hostname news.westos.com ##更改主机名为news.westos.com,这个名称在原有的dns服务中是没有解析的
hostname ##确定把ip给了哪台主机
测试:
重启网络查看ip和主机名称的解析否一致
在主dns端:dig new.westos.com
缩小ip范围再测试一次
查看主机ip和解析ip是否一致