DNS域名解析服务
一、BIND域名服务基础
1、DNS系统的作用
- 正向解析:根据域名查找对应的IP地址
- 反向解析:根据IP地址查找对应的域名
- DNS系统的分布式数据结构
2、DNS系统类型
- 缓存域名服务器
- 也称为DNS高速缓存服务器
- 通过向其他域名服务器查询获得域名——》IP地址记录
- 将域名查询结果缓存到本地,结果重复查询时的速度
只提供域名解析结果的缓存功能,目的在于提高查询速度和效率, 但是没有自己控制的区域地址数据。构建缓存域名服务器时,必须设置根域或指定 其他 DNS 服务器作为解析来源
- 主域名服务器
- 特定DNS区域的权威服务器,具有唯一性
- 负责维护该区域内所有域名——》IP地址的映射记录
- 需要自行建立所负责区域的地址数据文件
管理和维护所负责解析的域内解析库的服务器
- 从域名服务器
- 也称为复制域名服务器,是对主域名服务器的热备份
- 其维护的域名——》IP地址记录来源于主域名服务器
- 需要从主域名服务器自动同步区域地址数据库
从主服务器或从服务器"复制"(区域传输)解析库副本
序列号:解析库版本号,主服务器解析库变化时,其序列递增
刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
过期时长:从服务器联系不到主服务器时,多久后停止服务
通知机制:主服务器解析库发生变化时,会主动通知从服务器
关于host文件的优先级
[root@localhost ~]
192.168.254.11 www.baidu.com
[root@localhost ~]
[root@localhost ~]
PING www.baidu.com (192.168.254.11) 56(84) bytes of data.
64 bytes from www.baidu.com (192.168.254.11): icmp_seq=1 ttl=64 time=0.010 ms
64 bytes from www.baidu.com (192.168.254.11): icmp_seq=2 ttl=64 time=0.027 ms
64 bytes from www.baidu.com (192.168.254.11): icmp_seq=3 ttl=64 time=0.026 ms
64 bytes from www.baidu.com (192.168.254.11): icmp_seq=4 ttl=64 time=0.026 ms
64 bytes from www.baidu.com (192.168.254.11): icmp_seq=5 ttl=64 time=0.024 ms
[root@localhost ~]
hosts: files dns myhostname改为hosts: dns files myhostname
[root@localhost ~]
PING www.wshifen.com (103.235.46.39) 56(84) bytes of data.
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=2 ttl=128 time=225 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=6 ttl=128 time=224 ms
64 bytes from 103.235.46.39 (103.235.46.39): icmp_seq=7 ttl=128 time=222 ms
3.1查询方式
递归查询:不需要自己动手
迭代查询:需要自己动手
3.2查询原理过程
正向解析查询过程: ①先查本机的缓存记录
②查询hosts文件
③查询dns域名服务器,交给dns域名服务器处理
以上过程成为递归查询:我要一个答案你直接会给我结果
④这个dns服务器可能是本地域名服务器,也有个缓存,如果有直接返回结果,如果没有则进行下一步
⑤求助根域服务器,根域服务器返回可能会知道结果的顶级域服务器让他去找顶级域服务器
⑥求助顶级域服务器,顶级域服务器返回可能会知道结果的二级域服务器然他去找二级域服务器
⑦求助二级域服务器,二级域服务器查询发现是我的主机,把查询到的ip地址返回给本地域名服务器
⑧本地域名服务器将结果记录到缓存,然后把域名和ip的对应关系返回给客户端
windows系统查询dns缓存命令:ipconfig /displaydns
windows系统清理dns缓存命令:ipconfig /flushdns
linux清dns缓存需要安装nscd软件,启动、执行nscd -i hosts
Client -->hosts文件 --> Client DNS Service Local Cache --> DNS Server (recursion递 归) --> DNS Server Cache -->DNS iteration(迭代) --> 根--> 顶级域名DNS-->二级域名DNS…
首先访问缓存服务器,缓存服务器有,直接返回到用户;
如果没有则去找根服务器;
根域名服务器不会直接告诉你结果,会让用户去找二级域名服务器;
(以上是迭代查询);
二级域名服务器也不会告诉用户结果,会让用户去找三级域名服务器;
三级域名服务器会去找自己的子域;
子域得到结果后给三级域名服务器;
三级域名服务器再告诉缓存服务器;
缓存服务器再告诉用户;
3.3开启centos的缓存
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
二、使用BIND构建域名服务器
1.1正向解析
各种资源记录
区域解析库:由众多资源记录RR(Resource Record)组成
记录类型: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记录设置一些数据版本和更新以及过期时间等信息。
服务器上安装BIND
[root@localhost ~]
未安装软件包 bind
[root@localhost ~]
[root@localhost ~]
bind-9.9.4-50.el7.x86_64
bind-utils-9.9.4-50.el7.x86_64
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
Permissive
[root@localhost ~]
[root@localhost var]
[root@localhost named]
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]
[root@localhost named]
[root@localhost named]
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 55869/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 55869/named
tcp6 0 0 ::1:53 :::* LISTEN 55869/named
tcp6 0 0 ::1:953 :::* LISTEN 55869/named
[root@localhost named]
DNS1=127.0.0.1
[root@localhost named]
[root@localhost named]
nameserver 127.0.0.1
[root@localhost named]
[root@localhost named]
PING www.a.shifen.com (180.101.49.11) 56(84) bytes of data.
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=1 ttl=128 time=6.03 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=2 ttl=128 time=5.63 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=3 ttl=128 time=5.34 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=4 ttl=128 time=5.06 ms
客户机
[root@localhost ~]
DNS1=192.168.254.11
[root@localhost ~]
[root@localhost ~]
ping: www.baidu.com: 未知的名称或服务
[root@localhost ~]
;; connection timed out; trying next origin
;; connection timed out; no servers could be reached
服务器
[root@localhost named]
listen-on port 53 { any; };
allow-query { any; };
[root@localhost named]
server reload successful
客户机
[root@localhost ~]
Host www.baidu.com not found: 5(REFUSED)
回到服务器
[root@localhost named]
allow-query { any; };
[root@localhost named]
server reload successful
再回到客户机,可以开始解析了
[root@localhost ~]
www.baidu.com is an alias for www.a.shifen.com.
www.a.shifen.com has address 180.101.49.11
www.a.shifen.com has address 180.101.49.12
回到服务器,做CNAME别名记录
[root@localhost named]
zone "rui.com" IN {
type master;
file "rui.com.zone";
allow-update { none; };
};
[root@localhost named]
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@localhost named]
/var/named
[root@localhost named]
[root@localhost named]
-rw-r-----. 1 root named 152 6月 21 2007 rui.com.zone
[root@localhost named]
$TTL 1D
@ IN SOA master.rui.com. admin.rui.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master.rui.com.
master IN A 192.168.254.11
www A 192.168.254.12
MX 10 mail1.rui.com.
MX 20 mail2.rui.com.
mail1 IN A 192.168.254.22
mail2 IN A 192.168.254.23
ftp IN CNAME WWW
[root@localhost named]
server reload successful
回到客户机测试
[root@localhost ~]
mail1.rui.com has address 192.168.254.22
如果再加上这一段
前面的w可以无限多
如果想只输入域名而不输入主机名
注意每次都需要重启服务
打开另一台机器,做以下操作
回到服务器
改成上一台机器的IP地址
开启httpd服务,重启reload
正向解析结束
2.反向解析
[root@localhost named]
zone "254.168.192.in-addr.arpa" IN {
type master;
file "yum.com.zone";
allow-update { none; };
};
[root@localhost named]
[root@localhost named]
$TTL 1D
@ IN SOA master.yun.com. admin.yun.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master.yun.com.
master IN A 192.168.254.11
100 IN PTR www.yun.com.
99 IN PTR db.yun.com.
[root@localhost named]
server reload successful
去客户机验证
[root@localhost ~]
100.254.168.192.in-addr.arpa domain name pointer www.yum.com.
[root@localhost ~]
99.254.168.192.in-addr.arpa domain name pointer db.yun.com.
反向解析结束
3.主从复制
主服务器地址:192.168.254.11
从服务器地址:192.168.254.30
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost named]
listen-on port 53 { any; };
allow-query { any; };
[root@localhost named]
zone "rui.com" IN {
type master;
file "rui.com.zone";
allow-update { none; };
};
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost ~]
[root@localhost named]
// listen-on port 53 { 127.0.0.1; };
// allow-query { localhost; };
[root@localhost named]
zone "rui.com" IN {
type slave;
file "slaves/rui.com.zone";
masters { 192.168.254.11; };
};
[root@localhost ~]
验证
[root@localhost named]
主服务器上修改
[root@localhost named]
$TTL 1D
@ IN SOA master admin.rui.com. (
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.254.11
www A 192.168.254.12
[root@localhost named]
zone "rui.com" IN {
type master;
file "rui.com.zone";
};
[root@localhost named]
server reload successful
从服务器上验证
[root@localhost named]
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> -t axfr rui.com
;; global options: +cmd
rui.com. 86400 IN SOA master.rui.com. admin.rui.com. 0 86400 3600 604800 10800
rui.com. 86400 IN NS master.rui.com.
master.rui.com. 86400 IN A 192.168.254.11
www.rui.com. 86400 IN A 192.168.254.12
rui.com. 86400 IN SOA master.rui.com. admin.rui.com. 0 86400 3600 604800 10800
;; Query time: 1 msec
;; SERVER: 192.168.254.30
;; WHEN: 三 9月 29 18:29:52 CST 2021
;; XFR size: 5 records (messages 1, bytes 160)
4.分离解析
为Linux服务器配置两块网卡,都仅主机模式
ens33:192.168.100.1/24
ens37:12.0.0.1/24
win7作为外网:ip:12.0.0.12 255.0.0.0 dns:12.0.0.1 12.0.0.1
win10作为内网:192.168.100.100
[root@localhost ~]
[root@localhost network-scripts]
IPADDR=192.168.100.1
NETMASK=255.255.255.0
[root@localhost network-scripts]
[root@localhost network-scripts]
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
DEVICE=ens37
ONBOOT=yes
IPADDR=12.0.0.1
NETMASK=255.255.255.0
[root@localhost network-scripts]
将windows网卡模式设置为仅主机模式,并将两台Windows的IP地址配好
回到服务器
[root@localhost network-scripts]
在最下面找到这一段,将其删除,避免麻烦
[root@localhost network-scripts]
view "lan" {
match-clients { 192.168.100.0/24; };
zone "rui.com" IN {
type master;
file "rui.com.lan";
};
zone "." IN {
type hint;
file "named.ca";
};
};
view "wan" {
match-clients { 12.0.0.0/24; };
zone "rui.com" IN {
type master;
file "rui.com.wan";
};
zone "." IN {
type hint;
file "named.ca";
};
};
[root@localhost named]
[root@localhost named]
$TTL 1D
@ IN SOA master.rui.com. admin.rui.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 192.168.100.1
www A 192.168.100.20
[root@localhost named]
[root@localhost named]
$TTL 1D
@ IN SOA master.rui.com admin.rui.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS master
master A 12.0.0.1
www A 12.0.0.1
在Windows7和Windows10上使用nslookup 查看
总结
了解DNS,能够进行正向解析,反向解析,主从解析,和分离解析的操作。
|