DNS综合实验
Posted 落阳٩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DNS综合实验相关的知识,希望对你有一定的参考价值。
DNS
域名解析也叫域名指向、服务器设置、域名配置以及反向IP登记等等。说得简单点就是将好记的域名解析成IP,服务由DNS服务器完成,是把域名解析到一个IP地址,然后在此IP地址的主机上将一个子目录与域名绑定。
互联网中的地址是数字的IP地址,域名解析的作用主要就是为了便于记忆。
关于DNS域
根域: 全球根服务器节点只有13个,10个在美国,1个荷兰,1个瑞典,1个日本(目前通过雪人计划在全球部署IPV6根服务器解决了中国没有根服务器的现象)
在安装DNS服务后可以通过 vim /var/named/named.cd 文件查看根服务器地址
一级域名:Top Level Domain: tld
三类:
组织域
国家域(.cn, .ca, .hk, .tw)
反向域 com, edu, mil, gov, net, org, int,arpa
二级域名:magedu.com
三级域名:study.magedu.com
最多可达到127级域名
DNS的查询与解析
DNS的查询分为俩个类型
递归查询:一般客户机和本地DNS服务器之间属于递归查询,即当客户机向DNS服务器发出请求后, 若DNS服务器本身不能解析,则会向另外的DNS服务器发出查询请求,得到最终的肯定或否定的结 果后转交给客户机。此查询的源和目标保持不变,为了查询结果只需要发起一次查询
迭代查询:一般情况下(有例外)本地的DNS服务器向其它DNS服务器的查询属于迭代查询,如:若对 方不能返回权威的结果,则它会向下一个DNS服务器(参考前一个DNS服务器返回的结果)再次发起 进行查询,直到返回查询的结果为止。此查询的源不变,但查询的目标不断变化,为查询结果一般需 要发起多次查询
DNS的解析类型
FQDN --> IP 正向解析
IP --> FQDN 反向解析
DNS查询过程
Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion递归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…
DNS的各种角色及定义
DNS服务器类型
主DNS服务器:管理和维护所负责解析的域内解析库的服务器
从DNS服务器:从主服务器或从服务器"复制"(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
通知机制:主服务器解析库发生变化时,会主动通知从服务器
缓存DNS服务器(转发器)
DNS的各种资源记录
name [TTL] IN rr_type value
注意:
1. TTL可从全局继承
2. 使用 "@" 符号可用于引用当前区域的域名
3. 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
4. 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机
dns的解析是由众多资源记录RR(Resource Record)组成的
记录类型:A, AAAA, PTR, SOA, NS, CNAME, MX
SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解 析库的第一条记录
A:internet Address,作用,FQDN --> IP
AAAA:FQDN --> IPv6
PTR:PoinTeR,IP --> FQDN
NS:Name Server,专用于标明当前区域的DNS服务器
CNAME : Canonical Name,别名记录
MX:Mail eXchanger,邮件交换器
TXT:对域名进行标识和说明的一种方式,一般做验证记录时会使用此项,如:SPF(反垃圾邮 件)记录
DNS综合实验
实验环境及规划如下图
实验提前准备
关闭SElinux
关闭防火墙
时间同步
在除了WEB服务器和客户端之外全部安装BIND服务
每台设备按照上图要求配置网络(IP地址及DNS地址)
#client配置
root@client-1:/# cat /etc/netplan/eth0.yaml
network:
ethernets:
eth0:
addresses:
- 10.0.0.101/24
gateway4: 10.0.0.2
nameservers:
addresses:
- 10.0.0.27
version: 2
安装WEB服务器
root@web-1:/# apt -y install apache2 #安装http服务
root@web-1:/# echo "hello,word!" > /var/www/html/index.html #重写网页
root@web-1:/# systemctl enable --now apache2 #开启服务并设置开机自启动
root@web-1:/# curl 127.0.0.1 #出现此结果即为正常
hello,word!
配置根域服务器
[root@root ~]# yum -y install bind #安装服务
[root@root ~]# vim /etc/named.conf #打开配置文件按照下方配置修改
#注释下面行
options
# listen-on port 53 127.0.0.1; ;
# allow-query localhost; ;
#修改下面配置
zone "." IN
type master;
file "root.zone";
;
#创建一下配置文件
[root@shicentos8-1 named]# vim /var/named/root.zone #需注意权限问题应与/var/named/named.localhost相同
$TTL 1D
@ IN SOA master rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
com NS coms
master A 10.0.0.8
coms A 10.0.0.18
[root@root named]# chown :named /var/named/root.zone
[root@root named]# chmod 640 /var/named/root.zone
[root@root named]# systemctl enable --now named #开启服务
[root@root named]# rndc reload #若修改配置文件此命令读取配置文件不必重启服务
配置.com服务器
[root@comdns ~]# yum -y install bind #安装服务
[root@comdns ~]# vim /etc/named.conf #打开配置文件按照下方配置修改
#注释下面行
options
# listen-on port 53 127.0.0.1; ;
# allow-query localhost; ;
[root@comdns ~]# vim /etc/named.rfc1912.zones #最下方添加
zone "com" IN
type master;
file "com.zone"; ;
[root@comdns ~]# cp -p /var/named/named.localhost /var/named/com.zone
[root@comdns ~]# vim /var/named/com.zone
$TTL 1D
@ IN SOA master rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
test NS test1
test NS test2
master A 10.0.0.18
test1 A 10.0.0.7
test2 A 10.0.0.17
[root@comdns ~]# systemctl enable --now named #开启服务
[root@comdns ~]# rndc reload #若修改配置文件此命令读取配置文件不必重启服务
test.com主DNS服务器
[root@test.com ~]# yum -y install bind #安装服务
[root@test.com ~]# vim /etc/named.conf #打开配置文件按照下方配置修改
#注释下面行添加最后一行
options
# listen-on port 53 127.0.0.1; ;
# allow-query localhost; ;
allow-transfer 10.0.0.17; ; #只允许从服务器同步数据库
[root@test.com ~]# vim /etc/named.rfc1912.zones #最下方添加
zone "test.com" IN
type master;
file "test.com.zone";
;
[root@test.com ~]# cp -p /var/named/named.localhost /var/named/test.com.zone
[root@test.com ~]# vim /var/named/test.com.zone
$TTL 1D
@ IN SOA master rname.invalid. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
NS slave
master A 10.0.0.7
slave A 10.0.0.17
www A 10.0.0.100
[root@test.com ~]# systemctl enable --now named #开启服务
[root@test.com ~]# rndc reload #若修改配置文件此命令读取配置文件不必重启服务
test.com从DNS服务器
[root@test.com-slave ~]# yum -y install bind #安装服务
[root@test.com-slave ~]# vim /etc/named.conf #打开配置文件按照下方配置修改
#注释下面行添加最后一行
options
# listen-on port 53 127.0.0.1; ;
# allow-query localhost; ;
allow-transfer none;; #从服务器不允许主机同步数据库
[root@test.com-slave ~]# vim /etc/named.rfc1912.zones #最下方添加
zone "test.com" IN
type slave;
masters 10.0.0.7;;
file "slaves/test.com.salave";
;
[root@test.com-slave ~]# systemctl enable --now named #开启服务
[root@test.com-slave ~]# rndc reload #若修改配置文件此命令读取配置文件不必重启服务
[root@test.com-slave ~]# ls /var/named/slaves/ #查看区域数据库是否形成
test.com.salave
转发目标服务器
[root@forward-dns ~]# yum -y install bind #安装服务
[root@forward-dns ~]# vim /etc/named.conf #打开配置文件按照下方配置修改
#注释下面行并修改
options
# listen-on port 53 127.0.0.1; ;
# allow-query localhost; ;
dnssec-enable no; #关闭DNS安全扩展
dnssec-validation no; #关闭DNS安全扩展
[root@forward-dns ~]# vim /var/named/named.ca # 修改根配置文件
;; ANSWER SECTION:
. 518400 IN NS a.root-servers.net.
;; ADDITIONAL SECTION:
a.root-servers.net. 518400 IN A 10.0.0.8
[root@forward-dns ~]# systemctl enable --now named #开启服务
[root@forward-dns ~]# rndc reload #若修改配置文件此命令读取配置文件不必重启服务
本地缓存服务器
[root@local-dns ~]# yum -y install bind #安装服务
[root@local-dns ~]# vim /etc/named.conf #打开配置文件按照下方配置修改
#注释下面行
options
# listen-on port 53 127.0.0.1; ;
# allow-query localhost; ;
#修改下面行
dnssec-enable no; #关闭DNS安全扩展
dnssec-validation no; #关闭DNS安全扩展
#添加下面行
forward only; #设置全局转发first模式
forwarders 10.0.0.28; ; #设置转发ip
#first:先转发至指定DNS服务器,如果无法解析查询请求,则本服务器再去根服务器查询
#only: 先转发至指定DNS服务器,如果无法解析查询请求,则本服务器将不再去根服务器查询
[root@local-dns ~]# systemctl enable --now named #开启服务
[root@local-dns ~]# rndc reload #若修改配置文件此命令读取配置文件不必重启服务
测试
建议在测试之前每台主机清除DNS缓存避免错误传递测试结果
root@client:~# systemd-resolve --flush-caches
#centos默认没有启用缓存安装nscd包可以支持
[root@centos7 ~]#yum -y install nscd
[root@centos7 ~]#systemctl enable --now nscd
#查看缓存统计信息
[root@centos7 ~]#nscd -g
#清除DNS客户端缓存
[root@centos7 ~]#nscd -i hosts
客户端配置
root@client:~# cat /etc/netplan/eth0.yaml
network:
ethernets:
eth0:
addresses:
- 10.0.0.101/24
gateway4: 10.0.0.2
nameservers:
addresses:
- 10.0.0.27
version: 2
root@client:~# systemd-resolve --flush-caches
root@client:~# dig www.test.com
; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.8 <<>> www.test.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9664
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.test.com. IN A
;; ANSWER SECTION:
www.test.com. 85078 IN A 10.0.0.100
;; AUTHORITY SECTION:
test.com. 85078 IN NS test2.com.
test.com. 85078 IN NS test1.com.
;; ADDITIONAL SECTION:
test1.com. 85078 IN A 10.0.0.7
test2.com. 85078 IN A 10.0.0.17
;; Query time: 0 msec
;; SERVER: 10.0.0.27#53(10.0.0.27)
;; WHEN: Sun Jan 02 07:16:10 CST 2022
;; MSG SIZE rcvd: 129
root@client:~#
以上是关于DNS综合实验的主要内容,如果未能解决你的问题,请参考以下文章
Linux Centos7 综合实验(DNS+DHCP+WEB)
实验综合实验(VLAN间通信,ACL技术,DNS/WEB服务器架设,RIP路由)
DNS服务器综合实验(包含view下主从+子域授权+转发域)
linux系统管理综合实验之翻江倒海(http,dhcp,dns)崩溃