一 DNS概念
将将域名(网址)转化为IP地址
将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
每一台 DNS 服务器都只负责管理一个有限范围
域名组成
例如: www.google.com.
从右往左看
.根域
.com 顶级域 一级域
.google 二级域
www 主机名
注:域名与网址区别
根域:
全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本
-
一级域名:Top Level Domain: tld
-
三类:组织域、国家域(.cn, .ca, .hk, .tw)、反向域
-
最多可达到127级域名
DNS服务器类型
缓存域名服务器:只提供域名解析结果的缓存功能,目的在于提高查询速度和效率,但是没有自己控制的区域地址数据。构建缓存域名服务器,必须设置根域或指定其他DNS服务器作为解析来源。
主域名服务器:管理和维护所负责解析的域内解析库的服务器
从域名服务器:从主服务器或从服务器"复制"(区域传输)解析库副本
DNS解析过程
以 访问 www.goole.com 服务器
1 先看我本机的hosts文件,如果有直接访问,如果没有就去找你设置缓存dns
2 如果缓存服务器有,直接反馈结果 (递归),如果没有就需要迭代查询直接去找根域服务
3 由于根域服务器 只能解析根无法解析 www.baidu.com 但是根域服务器让你去找级域服务器
4 一级域发现自己 也解析 不了,让你去找二级域
5 二级域发现这台服务在自己的 管理范围内,直接反馈结果给 缓存服务器
6 缓存服务器 再交给 客户
7其中正向解析是根据域名查找对应的IP地址
打开网页需要经历的过程
1 DNS域名解析
2 三次握手
3 http
4 四次挥手
DNS查询方式?
递归查询:
一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后,若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询。(不需要自己动手)
迭代查询:
一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需要发起多次查询。(需要自己动手)
二 实操:内网搭建dns服务器
目的:内部人员自己使用内网,使用域名访问内网
① 先安装软件
bind 安装包的名字;named 程序的名字
named程序的主要文件:
/etc/named.conf 主配置文件
/etc/named.rfc1912.zones 子配置文件 域名配置文件
/var/named/数据库文件 定义了域名和ip地址的对应关系
root@localhost ~]#rpm -q install bind*
未安装软件包 install
未安装软件包 bind*
[root@localhost ~]#yum install -y bind*
已加载插件:fastestmirror, langpacks
完毕!
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0
setenforce: SELinux is disabled
[root@localhost ~]#systemctl start named
[root@localhost ~]#vim /etc/named.conf
[root@localhost ~]#rndc reload
server reload successful
[root@localhost ~]#
② 主配置文件 /etc/named.conf 配置bind服务
③配置区域文件
[root@localhost ~]#vim /etc/named.rfc1912.zones
若是IP地址需反写
④编辑数据库文件,解析记录对应关系
[root@localhost ~]#cd /var/named
[root@localhost named]#ls
chroot chroot_sdb data dynamic dyndb-ldap named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]#cp named.localhost ./mcb.com.zone -p
[root@localhost named]#ls
chroot chroot_sdb data dynamic dyndb-ldap kgc.com.zone mcb.com.zone named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]#vim mcb.com.zone
⑤在新创建配置文件里面进行设置
SOA 记录类型:
A 正向解析(将域名地址翻译成ip地址)
NS 域名服务器
CNAME 别名
PTR 反向解析(将ip地址解析成域名)
注释
$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 #泛域名解析,“*"代表任意主机名
还没有干完
⑥修改网卡配置重启服务
[root@localhost named]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost named]#systemctl restart network
network-online.target network.service
[root@localhost named]#systemctl restart network
network-online.target network.service
[root@localhost named]#systemctl restart network
network-online.target network.service
[root@localhost named]#systemctl restart network
[root@localhost named]#ping www.goole.com
PING www.goole.com (217.160.0.201) 56(84) bytes of data.
64 bytes from 217.160.0.201 (217.160.0.201): icmp_seq=1 ttl=128 time=53.3 ms
⑦ 验证解析
[root@localhost named]#host www.mcb.com
www.mcb.com has address 20.115.47.189
[root@localhost named]#host mcb.com
mcb.com has address 20.115.47.189
mcb.com mail is handled by 10 mx.usa.net.
mcb.com mail is handled by 50 mx.ct.mbox.net.
研究一下
[root@localhost named]#host abc.mcb.com
Host abc.mcb.com not found: 3(NXDOMAIN)
三 正向解析(还要反复做)
①修改配置文件
#vim /etc/named.rfc1912.zones
②复制正向解析文件
[root@localhost ~]#vim /etc/named.rfc1912.zones
[root@localhost ~]#
[root@localhost ~]#cd /var/named
[root@localhost named]#vim /etc/named.rfc1912.zones (核实路径变化配置文件是否变化)
[root@localhost named]#cp -p mcb.com.zone mcb1.com.zone 保留路径
复制文件模板,注意保留权限,若忘了可以使用chown命令,随后使用ll 查看
[root@localhost named]#chmod 640 mcb1.com.zone ;chgrp named mcb1.com.zone
[root@localhost named]#vim mcb1.com.zone
[root@localhost named]#vim /etc/named.rfc1912.zones
③修改数据库文件
[root@localhost named]#vim mcb1.com.zone
熟知每一个指令意义:
④重新启动
root@localhost named]#rndc reload
rndc: connect failed: 127.0.0.1#953: connection refused
总结:此实验没有成功,有时间找原因
检测一:
检测二:
named-checkconf /etc/named.conf
#检测主配置文件
named-zone mcb.com /var/named/mcb.com.zon
检测命令named-checkzone 域名 数据库文件
rndc 指令
rndc是一个远程管理bind的工具,通过这个工具可以在本地或者远程了解当前服务器的运行状况,也可以对服务器进行关闭、重载、刷新缓存、增加删除zone等操作。
四 反向解析
根据 IP 地址查找对应的主机名(域名)
五 主从复制
“从服务器”可以从主服务器上抓取指定的区域数据文件,起到备份解析记录与负载均衡作用
(设置备胎dns)
添加从服务器
[root@localhost ~]#systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
setenforce: SELinux is disabled
[root@localhost ~]#yum install bind bind-utils.x86_64 -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
[root@localhost ~]# vim /etc/named.conf
主服务器配置
主:192.168.11.9
关闭防火墙 核心防护 下载bind服务
1 [root@localhost named]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
2 查看一下 [root@localhost named]# cat /etc/resolv.conf
[root@localhost ~]# vim /etc/named.rfc1912.zones
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install bind* -y
已加载插件:fastestmirror, langpacks
② [root@localhost ~]# vim /etc/named.conf
③ [root@localhost ~]# vim /etc/named.rfc1912.zones
④ [root@localhost named]# vim mcb2.com.zone
主服务器检测:
[root@localhost named]#dig www.mcb2.com
;; Query time: 0 msec
;; SERVER: 192.168.11.9#53(192.168.11.9)
;; WHEN: 六 1月 13 15:06:34 CST 2024
;; MSG SIZE rcvd: 158
从主机服务配置
从192.168.11.14
[root@localhost ~]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost named]#vim mcb2.com.zone (从服务无需这样)
[root@localhost ~]#vim /etc/named.rfc1912.zones
[root@localhost named]#systemctl restart named
[root@localhost named]#systemctl restart network
[root@localhost named]#dig www.mcb2.com
从服务器检测
六 主从时间同步(当时没有做,后来有人做了)
如果主服务器的DNS解析数据信息发生改变,从服务器无法得知,从服务器的解析地址还是按照旧信息去解析,如果想要同步,需要等到一天以后,因为我们在配置信息的时候refresh(更新时间)为1D(一天)。所以我们需要进行手动更新,注释:每次主服务器解析数据信息文件发生改变后,想要从服务器立即获取新的信息,必须手动向上调整serial数值,可以调整数值为10位数以内的整数
七 搭建分离解析(实验要反复练,会忘)
- 分离解析的域名服务器实际也是主域名服务器,这里主要是指根据不同的客户端提供不同的域名解析记录。比如来自内网和外网的不同网段地址区域的客户机请求解析同一域名时,为其提供不同的解析结果,得到不同的IP地址。
- DNS的分离解析,是指根据不同的客户端提供不同的域名解析记录。来自不同地址的客户机请求解析同一域名时,为其提供不同的解析结果。也就是内外网客户请求访问相同的域名时,能解析出不同的IP地址,实现负载均衡。
- 根据不同客户端提供不同域名解析记录
搭建bind服务
[root@localhost ~]#systemctl stop firewalld
[root@localhost ~]#setenforce 0
setenforce: SELinux is disabled
[root@localhost ~]#yum install-y bind bind-utils #既有bind文件又有bind测试工具
已加载插件:fastestmirror, langpacks
[root@localhost ~]#rpm -ql bind | head #主程序名named,安装包bind
/etc/logrotate.d/named
/etc/named.con
[root@localhost ~]#rpm -qc bind #主配置文件
[root@localhost ~]#systemctl restart named
[root@localhost ~]#ss -natp | grep named #检测named是否开启,并查看端口号
LISTEN 0 10 127.0.0.1:53 *:* users:(("named",pid=5315,fd=21))
修改主配置文件/etc/named.conf,修改权限和监听地址
listen-on port 53 { any; }; #两个any 允许所有网段进行解析
allow-query { any; };
将根配置文件删除或注释
//zone "." IN {
// type hint;
// file "named.ca";
//};
再修改域名配置文件
[root@localhost ~]# vim /etc/named.rfc1912.zones
修改网卡配置
在虚拟机设置添加ens37网卡
#cp ifcfg-ens33 ifcfg-ens37 #复制ens33模板
[root@localhost named]#vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=f29dc91f-b6b3-4698-b2be-899da88177e2
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.11.9
NETMASK=255.255.255.0
GATEWAY=192.168.11.2
DNS1=8.8.8.8
[root@localhost named]#vim /etc/sysconfig/network-scripts/ifcfg-ens37
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
#UUID=f29dc91f-b6b3-4698-b2be-899da88177e2
DEVICE=ens37
ONBOOT=yes
IPADDR=12.0.0.9
NETMASK=255.255.255.0
GATEWAY=12.0.0.2
DNS1=8.8.8.8
PREFIX=24
修改域名配置文件
[root@localhost named]#vim /etc/named.rfc1912.zones
view "lan" {
match-clients {192.168.11.0/24; };
// #匹配网段
zone "mcb.com" IN {
type master;
file "mcb.com.lan";
};
zone "." IN {
type hint;
file "named.ca"; #符号 空格结尾 复制别落下 删除干净
};
};
view "wan" {
match-clients { 12.0.0.0/24; };
zone "mcb.com" IN {
type master;
file "mcb.com.wan";
};
zone "." IN {
type hint;
file "named.ca";
};
};
配置数据库文件
[root@localhost ~]#cd /var/named
[root@localhost named]#cp -a named.localhost mcb.com.wan
[root@localhost named]#cp -a named.localhost mcb.com.lan 两者保留权限
root@localhost named]#vim mcb.com.wan
$TTL 1D
@ IN SOA master rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 12.0.0.9
www A 12.0.0.41
[root@localhost named]#cat mcb.com.wan # 用来查看
[root@localhost named]#cat mcb.com.lan
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.11.9
www A 192.168.11.40
sftp A 192.168.100.99
重启服务
[root@localhost named]#systemctl restart network
[root@localhost named]#systemctl restart named
验证
牛气指令 #named-checkzone mcb.com /var/named/www.mcb.com.zone