dns

目录:
bind软件 用来实现dns

DNS:

ip地址与域名一一对应的解析服务
vim /etc/hosts
192.168.91.100 www.baidu.com
0
hosts优先级最高 可以改 /etc/nsswitch.conf
修改dns的优先级:
vim /etc/nsswitch.conf
39 hosts: files dns myhostname
0
#修改 files和 dns的先后 优先级就会改变
 
分散式管理 每个机器都有host文件,不方便管理
集中式管理 集中在一台服务器上
分布式管理 dns服务器太多
 
顶级域名:
com公司 gov政府 org非营利性组织 mil邮件 int系统
 
www.sin.com.cn www是主机名 之后的从右往左数, .cn是顶级域名, .com的二级 .sin是三级
 

DNS服务器类型

缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率
主域名服务器:管理和维护所负责解析的域内解析库的服务器 (权威)
从域名服务器:从主服务器或从服务器"复制"解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
通知机制:主服务器解析库发生变化时,会主动通知从服务器
 

DNS查询类型及原理

查询方式:
迭代:不给你结果,只给你相关信息 需要自己动手
递归:直接反馈给你结果 不需要自己动手
解析过程
(正向解析查询)
当用户 输入www.baidu.com 去访问网页
1、先看你本机的hosts 文件 如果有,直接访问 如果没有,会先去找缓存服务器(电信运营商)
2、缓存服务器 先看缓存 缓存有,直接反馈结果给用户 缓存没有,直接去找根
3、根只知道自己下一级的服务器位置 ,它不会反馈给你直接结果,会透露1个信息→顶级域(一级域)可能知道,去找顶级域试试看
4、缓存服务器 收到这个消息,会再去找顶级域名(一级域)服务器
5、顶级域也不知道,他不会反馈给你直接结果,会透露1个信息→有可能二级域知道,让你去找二级域
6、缓存服务器 收到这个消息,会再去找二级域服务器,二级域知道,会反馈结果给缓存服务器
7、缓存服务收到结果会直接交给用户
 

正向解析查询过程:

①先查本机的缓存记录
②查询hosts文件
③查询dns域名服务器,交给dns域名服务器处理
以上过程成为递归查询:我要一个答案你直接会给我结果
④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
⑤求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
⑥求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
⑦求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
 
windows系统查询dns缓存命令:ipconfig /displaydns
windows系统清理dns缓存命令:ipconfig /flushdns
 
输入www.baidu.com 打开网页 中间经历了哪些过程?
三次挥手 http tcp
四次挥手
dns 解析过程
http
 
114.114.114.114是国内移动、电信和联通通用的DNS,手机和电脑端都可以使用。
8.8.8.8是GOOGLE公司提供的DNS,该地址全球通用,相对来说,更适合国外以及访问国外网站的用户使用
223.5.5.5 和 223.6.6.6:阿里云DNS
 

DNS软件bind

bind:服务器
bind-libs:相关库
bind-utils:客户端
bind-chroot:安全包,将dns相关文件放至/var/named/chroot/
正向解析
rpm -q bind
yum install bind bind-utils.x86_64 -y
rpm -qi bind 相信信息
rpm -ql bind 看文件列表
/etc/named.conf 主配置文件
/etc/named.rfc1912.zone 域名区域 你想解析的域名
/var/name/某某文件 某某文件是你自定义的 记录ip地址与域名对应关系
systemctl start named
 
cat /etc/named.rfc1912.zone
数据库文件
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
  • SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录SOA,是起始授权机构记录,说明了在众多 NS 记录里哪一台才是主要的服务器。在任何DNS记录文件中,都是以SOA ( Startof Authority )记录开始。SOA资源记录表明此DNS名称服务器是该DNS域中数据信息的最佳来源。
  • A(internet Address):作用,域名解析成IP地址
  • AAAA(FQDN): --> IPV6
  • PTR(PoinTeR):反向解析,ip地址解析成域名
  • NS(Name Server):,专用于标明当前区域的DNS服务器,服务器类型为域名服务器
  • CNAME : Canonical Name,别名记录
  • MX(Mail eXchanger)邮件交换器
  • TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮件)记录,https验证等
SOA记录与NS记录的区别:NS记录表示域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析;SOA记录设置一些数据版本和更新以及过期时间等信息。
 

SOA记录

name: 当前区域的名字,例如"kgc.com."
value: 有多部分组成
注意:
当前区域的主DNS服务器的正向解析,也可以使用当前区域的名字
当前区域管理员的邮箱地址;但地址中不能使用@符号,一般用.替换 例如:admin.kgc.com
主从服务区域传输相关定义以及否定的答案的统一的TTL
 
$TTL 1D(统一的ttl定义1天,不写D 是秒)
@ IN SOA master.kgc.com. admin.kgc.com. (
当前服务器的名称 邮箱地址
0 ; serial #是否有更新 版本号 更新文件 手动把 0 加1,用来主从交流
1D ; refresh #刷新时间 拉取时间
1H ; retry #失败后一个小时 后再试一次
1W ; expire #过期时间,老是拉取不了,1周以后过期
3H ) ; minimum #老是去查错误的解析地址,3小时内的缓存下,用户再查直接返回找不到
 
 
$TTL 1D #有效解析记录的生存周期
@ in SOA benet.com. admin.benet.com. ( #“@"符号表示当前的DNS区域名
0 ; serial #更新序列号,可以是10位以内的整数
1D ; refresh #刷新时间,重新下载地址数据的间隔
1H ; retry #重试延时,下载失败后的重试间隔
1W ; expire #失效时间,超过该时间仍无法下载则放弃#
3H) ; minimum #无效解析记录的生存周期,
NS benet.com. #记录当前区域的DNS服务器的名称
A 192.168.80.10 #记录主机IP地址
IN MX 10 mail.benet.com. #MX为邮件交换记录,数字越大优先级越低
www IN A 192.168.80.10 #记录正向解析www.benet.com对应的IP
mail IN A 192.168.80.11 #MX为邮件交换记录,数字越大优先级低
ftp IN CNAME www #CNAME使用别名,ftp 是www的别名
* IN A 192.168.80.100 #泛域名解析,“*"代表任意主机名
 
cat /etc/named.conf
0
listen-on port 53 监听对象(127是自己)可以是any
directory 家目录是在/var
allow-query 权限 →允许谁来问我,可以写any
0
.是根域 根域的地址存在了name.ca /var/name/named/named.ca
 
为什么大家都知道根 因为写进了配置文件
/var/named/named.ca
看配置完dns文件有没有生效:
cat /etc/resolv.conf
0
 

网络 dns 服务器

1、第一步安装软件
yum install bind bind-utils.x86_64 -y
rpm -qi bind
ss -nuap |grep 53
2、开启服务
systemctl start named
3、修改配置文件
vim /etc/named.conf
13行 listen-on port 53 { any; };
21 allow-query { any; };
rndc reload 重新加载服务但是不断
去修改网卡的dns指向自己的搭建dns服务器 IP地址
vim /etc/sysconfig/network-scripts
dns=
做1个内网的dns服务解析(正向解析)
安装和加载
yum install bind bind-utils -y
systemctl stop firewalld.service
setenforce 0
systemctl start named
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=127.0.0.1
systemctl restart network
 
vim /etc/named.conf
listen-on port 53 { any; };
allow-query { any; };
 
rndc reload
首先确定域名:
vim /etc/named.rfc1912.zones //这个文件上面是正向解析,下面 的是反向解析的
5yy
p
zone "kgc.com" IN { //kgc.com是你自己域名
type master; //服务器类型 ;后面别加空格,用set list显示下
file "kgc.com.zone"; //数据库文件位置/var/named/kgc.com.zone 文件是指定ip地址和域名之间的关系
};
 
cd /var/named/
cp -p named.localhost ./kgc.com.zone
vim /var/named/kgc.com.zone
name [TTL] IN rr_type value
域名 生命周期 使用intenet协议 数据类型A PTR IP地址
@ IN SOA master.kgc.com. admin.kgc.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H) ;minium
IN NS master.kgc.com.
master IN A 192.168.63.100
www IN A 192.168.63.101
ftp IN A 192.168.63.111
 
named-checkconf //检查
named-checkzone kgc.com.zone /var/named/kgc.com.zone //检查格式
rndc reload //重启服务
cat kgc.com.zone
host ftp.kgc.com
 
泛域名解析 →@
 
 

反向解析

www.sin.com →.com.sina.www
vim /etc/named.rfc1912.zones
zone "91.168.192.in-addr.arpa" IN {
type master'
file "yun.com.zone";
allow-update { none; };
}
 
cd /var/named
cp -p named.loopback yum
ls
pwd
cp -p named.
 

主从复制

从服务器的配置
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install bind bind-utils.x86_64 -y
#从服务器先安装bind软件
[root@localhost etc]# vim /etc/named.conf
#两段改成any
listen-on port 53 { any; };
allow-query { any; };
[root@localhost etc]# vim /etc/named.rfc1912.zones
#添加从服务器的配置文件
zone "kgc.com" IN {
type slave;
#类型从
file "slaves/kgc.com.zone";
#文件地址在/var/named/slaves/ 下
masters { 192.168.91.100; };
#申明主服务器的地址
};
[root@localhost etc]# ls /var/named/slaves
kgc.com.zone
[root@localhost etc]# systemctl start named
#主服务器配置好后再启动
主服务器配置
[root@localhost etc]# vim /etc/named.rfc1912.zones
zone "kgc.com" IN {
type master;
file "kgc.com.zone";
allow-transfer { 192.168.91.103; };
#添加从服务器的地址
};
[root@localhost etc]#rndc reload
 
验证:
#在从服务器上
[root@localhost etc]# echo "nameserver 192.168.91.103" > /etc/resolv.conf
#将DNS指向自己
[root@localhost etc]#host www.kgc.com
#或者
[root@localhost ~]# dig www.kgc.com @192.168.91.101
解析命令 域名 @你的dns服务器地址
posted @ 2022-10-23 02:02  七分人格  阅读(257)  评论(0编辑  收藏  举报