DomainNameSystem
🔭DNS基本信息什么是DNS:Domain Name System(域名系统)产生原因 : 因为ip太多了,记不住,所以搞一个域名跟ip进行绑定,方便记忆,随着时代发着ip慢慢拥有了商标属性,具有庞大的商业价值连接方式:知名端口号53,通常DNS是以UDP这个较快速的数据传输协议来查询的,但是UDP没有查询到完整的信息时,就会再次以TCP这个协议来重新查询,所以启动DNS时,会同时启动TCP以及
目录
1.0 简介
🔭DNS基本信息
什么是DNS:Domain Name System(域名系统)
产生原因 : 因为ip太多了,记不住,所以搞一个域名跟ip进行绑定,方便记忆,随着时代发着ip慢慢拥有了商标属性,具有庞大的商业价值
连接方式:知名端口号53,通常DNS是以UDP这个较快速的数据传输协议来查询的,但是UDP没有查询到完整的信息时,就会再次以TCP这个协议来重新查询,所以启动DNS时,会同时启动TCP以及UDP的port53。
2.0 域名

域名的分类
-
国家顶级域名:采用ISO3166的规定,
cn-->中国,us-->美国,uk-->英国……;国家域名又常记为ccTLD(country code top-level domains,cc表示国家代码country-code) -
通用顶级域名:最常见的通用顶级域名有7个,
com-->公司企业,net-->网络服务机构,org-->非营利组织,int-->国际组织,gov-->美国的政府部门,mil-->美国的军事部门 -
基础结构域名:这种顶级域名只有一个,即
arpa,用于反向域名解析,因此称为反向域名
域名服务器的分类
-
根域名服务器:最高层次的域名服务器,也是最重要的域名服务器。他负责告诉用户那些管理顶级域名(.com .net ....)服务器的ip是在哪里
-
顶级域名服务器:负责管理在该顶级域名服务器注册的二级域名。问 顶级域名 的管理xxxx.xxx 的权威域名解析服务器地址是多少
-
权威域名服务器:负责一个“区”的域名服务器。问 权威域名服务器 具体url对应ip地址是多少
-
本地域名服务器:本地域名服务器不属于域名服务器的层次结构,但是它对域名系统非常重要。当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器。
-
主从DNS服务器:为了提高域名服务器的可靠性,DNS域名服务器都把数据复制到几个域名服务器来保存,其中的一个就是主DNS服务器(master),负责解析至少一个域。其他的是辅助(从)DNS服务器(slave):负责解析至少一个域,是主DNS服务器的辅助。
-
缓存DNS服务器:不负责解析域,只是缓存域名解析的结果。
🔭
不同域只知道自己下级的域的IP地址
当主域名服务器出故障时,辅助域名服务器(从)可以保证DNS的查询工作不会中断。主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行。这样就保证了数据的一致性(主从服务器)
3.0 解析流程
🔭解析流程
递归查询、迭代查询

4.0 DNS小实验
🔭
这实验大部分都是改文件,命令执行很少
在这重申一下,做实验的时候防上网方式是手动(ipv4.method manual)、火墙、selinux都是关的。
正向解析:域名------------->IP
反向解析:IP---------------->域名
文件解读
查找配置文件
# 查找bind软件生成的软件
[root@Server ~]# rpm -ql bind |grep /etc
/etc/logrotate.d/named
/etc/named
/etc/named.conf # 主配置文件
/etc/named.rfc1912.zones # 域配置文件
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/rwtab.d/named
/etc/sysconfig/named
/usr/share/doc/bind/sample/etc
/usr/share/doc/bind/sample/etc/named.conf
/usr/share/doc/bind/sample/etc/named.rfc1912.zones
主配置文件
/etc/named.conf
[root@Server ~]# vim /etc/named.conf
10 options {
11 listen-on port 53 { 127.0.0.1; }; # DNS监听的端口和IP,如果网卡有多个IP,想全部监听可以写any
12 listen-on-v6 port 53 { ::1; }; # 监听的IPv6地址
13 directory "/var/named"; # 加载、保存DNS映射信息的目录文件
14 dump-file "/var/named/data/cache_dump.db"; # 缓存数据库
15 statistics-file "/var/named/data/named_stats.txt"; # 数据分析文件
16 memstatistics-file "/var/named/data/named_mem_stats.txt"; # 内存分析文件
17 secroots-file "/var/named/data/named.secroots"; # 全域根域名文件
18 recursing-file "/var/named/data/named.recursing"; # 递归文件
19 allow-query { localhost; }; # 允许的请求,可以是IP网段和any
---------
31 recursion yes; #yes:递归查询 no:迭代查询
32
33 dnssec-validation yes; # 加密通讯
34
35 managed-keys-directory "/var/named/dynamic";
36 geoip-directory "/usr/share/GeoIP";
37
38 pid-file "/run/named/named.pid"; # 当前dns服务的进程id号
39 session-keyfile "/run/named/session.key"; # 通话密钥
40
41 /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
42 include "/etc/crypto-policies/back-ends/bind.config";
43 };
# 以下部分是写区域的格式,不建议在主配置文件中写域,建议在专门配域的文件中写,不容易乱,好管理。
52 zone "." IN {
53 type hint;
54 file "named.ca";
55 };
# 以下是主配置文件会加载的文件
57 include "/etc/named.rfc1912.zones"; # 区域配置文件
58 include "/etc/named.root.key";
区域配置文件
/etc/named.rfc1912.zones
[root@Server ~]# vim /etc/named.rfc1912.zones
# 正向解析格式的模板
# localhost.localdomain:写域名的,管理区域叫做localhost.localdomain
# type master:服务器类型(master==主;slave==从)。
# file "named.localhost":加载DNS映射信息文件的路径。
# allow-update { none; }:不允许从DNS服务器更新。
17 zone "localhost.localdomain" IN {
18 type master;
19 file "named.localhost";
20 allow-update { none; };
21 };
# 反向解析的模板
# 1.0.0.127.in-addr.arpa 写要域名解析成的IP网络位(注意是IP的网络位),IP还得倒过来写。
42 zone "1.0.0.127.in-addr.arpa" IN {
43 type master;
44 file "named.loopback";
45 allow-update { none; };
46 };
DNS映射信息文件
/var/named/下的文件
[root@Server ~]# ll /var/named/
# 注意用户组是属于named的,自己创建时记得改所属组,或者直接cp -a 复制模板
total 16
drwxrwx--- 2 named named 6 Jul 10 23:07 data
drwxrwx--- 2 named named 6 Jul 10 23:07 dynamic
-rw-r----- 1 root named 2112 Jul 10 23:07 named.ca
-rw-r----- 1 root named 152 Jul 10 23:07 named.empty
-rw-r----- 1 root named 152 Jul 10 23:07 named.localhost # 正向解析模板
-rw-r----- 1 root named 168 Jul 10 23:07 named.loopback # 反向解析模板
drwxrwx--- 2 named named 6 Jul 10 23:07 slaves # 从服务器内容文件一般在这个目录下
[root@Server named]# vim named.localhost
# 放在修改这个文件中的域名后都加上.是没错的,不加.的话或实验可能会成功,也可能会不成功
# $TTL 1D 生存时间1天。
# 第一个@ 表示当前域,就是这个文件要解析那一个域(域名是在/etc/named.rfc1912.zones中定义的域名,写完域名后,后面要加上.),可以保留@,不写域名
# IN Internet,互联网。
# 第二个@ 指的是权威域名服务器,表示当前文件授权的DNS,也就是它会去读取下面的那个NS后的@记录。
# rname.invalid. 填邮箱为了避免@与前面第一个@冲突,所以换成点,例:admin@163.com ====> admin.163.com
# 0 ; serial 表示这个文件中的DNS映射信息是否有更新,有的话加一,反正比原来的数字大就可以,一遍工作中是拿日期来写的
# 1D ; refresh 刷新时间,配置主从服务器时可能用得到(用手动刷新从服务器的命令更容易看到效果,不必在这里调这个时间)
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial # 序号 当dns配置信息更新时 序号+1
1D ; refresh # 刷新时间
1H ; retry # 重连时间
1W ; expire # 过期时间
3H ) ; minimum # 缓存时间
NS @ # 声明用户名解析服务器
# 在下面配域名解析,每个 解析行 间不可以空开,必须连在一起
A 127.0.0.1 # ipv4格式
AAAA ::1 # ipv6格式
~
~
[root@Client named]# vim named.loopback
# 和正向解析一样,不做赘述
# 值得注意的是反向解析行前的IP地址也是倒过来的
#
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
PTR localhost.
~
~
正向解析
服务端
[root@Server ~]# dnf install bind -y > /dev/null
[root@Server named]# vim /etc/named.conf
10 options {
11 listen-on port 53 { any; };
19 allow-query { any; };
43 };
# 不在这个文件中添加区域,在这个/etc/named.rfc1912.zones文件中添加区域
[root@Server named]# vim /etc/named.rfc1912.zones
17 zone "localhost.localdomain" IN {
18 type master;
19 file "named.localhost";
20 allow-update { none; };
21 };
22
23 zone "xixi.com" IN {
24 type master;
25 file "xixi.com.zone";
26 allow-update { none; };
27 };
[root@Server ~]# cd /var/named/
[root@Server named]# cp -a named.localhost xixi.com.zone
[root@Server named]# vim xixi.com.zone
$TTL 1D
xixi.com. IN SOA ns.xixi.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.xixi.com.
ns.xixi.com. IN A 192.168.126.100
www.xixi.com. IN A 192.168.126.110
bbs.xixi.com. IN A 192.168.126.120
# 可以简写成以下格式
$TTL 1D
@ IN SOA ns.xixi.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.xixi.com.
ns A 192.168.126.100
www A 192.168.126.110
bbs A 192.168.126.120
[root@Server named]# systemctl start named
客户端
[root@Client ~]# dnf install bind -y > /dev/null
# 把DNS改为从服务器的IP再nslookup一下,改DNS用nmtui和nmcli都可以,改为记得起一下会议
[root@Client ~]# nmcli c mod eth0 ipv4.dns 192.168.126.100
[root@Client ~]# nmcli c up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
[root@Client ~]# nmcli device show | grep -i dns
IP4.DNS[1]: 192.168.126.100
# 可以有两个命令看效果host、nslookup
[root@Client ~]# host ns.xixi.com
ns.xixi.com has address 192.168.126.100
[root@Client ~]# host www.xixi.com
www.xixi.com has address 192.168.126.110
[root@Client ~]# host bbs.xixi.com
bbs.xixi.com has address 192.168.126.120
[root@Client ~]# nslookup ns.xixi.com
Server: 192.168.126.100
Address: 192.168.126.100#53
Name: ns.xixi.com
Address: 192.168.126.100
[root@Client ~]# nslookup www.xixi.com
Server: 192.168.126.100
Address: 192.168.126.100#53
Name: www.xixi.com
Address: 192.168.126.110
[root@Client ~]# nslookup bbs.xixi.com
Server: 192.168.126.100
Address: 192.168.126.100#53
Name: bbs.xixi.com
Address: 192.168.126.120
反向解析
服务端
[root@Server ~]# vim /etc/named.rfc1912.zones
35 zone "1.0.0.127.in-addr.arpa" IN {
36 type master;
37 file "named.loopback";
38 allow-update { none; };
39 };
40
41 zone "126.168.192.in-addr.arpa" IN {
42 type master;
43 file "192.168.126.arpa";
44 allow-update { none; };
45 };
[root@Server ~]# cd /var/named/
[root@Server named]# cp -a named.loopback 192.168.126.arpa
[root@Server named]# vim 192.168.126.arpa
$TTL 1D
126.168.192.in-addr.arpa. IN SOA ns.xixi.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.xixi.com.
ns.xixi.com. A 192.168.126.100
110.126.168.192.in-addr.arpa. PTR www.xixi.com.
120.126.168.192.in-addr.arpa. PTR bbs.xixi.com.
# 也可以简写成这样
$TTL 1D
@ IN SOA ns.xixi.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.xixi.com.
ns.xixi.com. A 192.168.126.100
110 PTR www.xixi.com.
120 PTR bbs.xixi.com.
客户端
[root@Client ~]# nslookup 192.168.126.110
110.126.168.192.in-addr.arpa name = www.xixi.com.
[root@Client ~]# nslookup 192.168.126.120
120.126.168.192.in-addr.arpa name = bbs.xixi.com.
主从同步
主服务端
[root@Server ~]# vim /etc/named.conf
10 options {
11 listen-on port 53 { any; };
19 allow-query { any; };
43 };
# 不在这个文件中添加区域,在这个/etc/named.rfc1912.zones文件中添加区域
[root@Server ~]# vim /etc/named.rfc1912.zones
41 zone "1.0.0.127.in-addr.arpa" IN {
42 type master;
43 file "named.loopback";
44 allow-update { none; };
45 };
46
47 zone "126.168.192.in-addr.arpa" IN {
48 type master;
49 file "192.168.126.arpa";
50 allow-update { none; };
51 };
[root@Server ~]# cd /var/named/
[root@Server named]# cp -a named.localhost xixi.com.zone
[root@Server named]# vim xixi.com.zone
$TTL 1D
xixi.com. IN SOA ns.xixi.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.xixi.com.
ns.xixi.com. IN A 192.168.126.100
www.xixi.com. IN A 192.168.126.110
bbs.xixi.com. IN A 192.168.126.120
slave A 192.168.126.101 # 加这个保险一点,不加好像实验也可以成功
[root@Server named]# cp -a named.loopback 192.168.126.arpa
[root@Server named]# vim 192.168.126.arpa
$TTL 1D
@ IN SOA ns.xixi.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.xixi.com.
ns.xixi.com. A 192.168.126.100
110 PTR www.xixi.com.
120 PTR bbs.xixi.com.
101 PTR slave.baidu.com.
# 等从服务端配好文件后再起服务,从服务端会自动把主服务器/var/named/下的映射文件拉(下载)到从服务器/var/named/slaves下
[root@Server named]# systemctl restart named
从服务端
[root@ServerB ~]# dnf install bind -y > /dev/null
[root@Server named]# vim /etc/named.conf
10 options {
11 listen-on port 53 { any; };
19 allow-query { any; };
43 };
[root@ServerB ~]# vim /etc/named.rfc1912.zones
17 zone "localhost.localdomain" IN {
18 type master;
19 file "named.localhost";
20 allow-update { none; };
21 };
22
23 zone "xixi.com" IN {
24 type slave;
25 masters { 192.168.126.100; };
26 file "slaves/xixi.com.zone";
27 };
41 zone "1.0.0.127.in-addr.arpa" IN {
42 type master;
43 file "named.loopback";
44 allow-update { none; };
45 };
46
47 zone "126.168.192.in-addr.arpa" IN {
48 type slave;
49 masters { 192.168.126.100; };
50 file "slaves/192.168.126.arpa";
51 };
# 配置好后等主服务器重新加载/重启服务后再重启服务,重启后可以看到已经把主服务器的映射信息文件拉过来了
[root@ServerB ~]# systemctl start named
[root@ServerB ~]# ll /var/named/slaves/
total 8
-rw-r--r-- 1 named named 382 Nov 8 15:45 192.168.126.arpa
-rw-r--r-- 1 named named 352 Nov 8 15:39 xixi.com.zone
客户端
# 把DNS改为从服务器的IP再nslookup一下,改DNS用nmtui和nmcli都可以,改为记得起一下会议
[root@Client ~]# nmcli c mod eth0 ipv4.dns 192.168.126.101
[root@Client ~]# nmcli c up eth0
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
[root@Client ~]# nmcli device show | grep -i dns
IP4.DNS[1]: 192.168.126.101
[root@Client ~]# nslookup www.xixi.com
Server: 192.168.126.101
Address: 192.168.126.101#53
Name: www.xixi.com
Address: 192.168.126.110
[root@Client ~]# nslookup bbs.xixi.com
Server: 192.168.126.101
Address: 192.168.126.101#53
Name: bbs.xixi.com
Address: 192.168.126.120
[root@Client ~]# nslookup ns.xixi.com
Server: 192.168.126.101
Address: 192.168.126.101#53
Name: ns.xixi.com
Address: 192.168.126.100
[root@Client ~]# nslookup slave.xixi.com
Server: 192.168.126.101
Address: 192.168.126.101#53
Name: slave.xixi.com
Address: 192.168.126.101
[root@Client ~]# nslookup 192.168.126.110
110.126.168.192.in-addr.arpa name = www.xixi.com.
[root@Client ~]# nslookup 192.168.126.120
120.126.168.192.in-addr.arpa name = bbs.xixi.com.
[root@Client ~]# nslookup 192.168.126.101
101.126.168.192.in-addr.arpa name = slave.baidu.com.
主从增量
这个很简单,主服务器添加映射信息后serial值增大,如果客户端没有效果,从服务器手动刷新一下,就可以了
主服务端
[root@Server named]# vim xixi.com.zone
$TTL 1D
xixi.com. IN SOA ns.xixi.com. rname.invalid. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.xixi.com.
ns.xixi.com. IN A 192.168.126.100
www.xixi.com. IN A 192.168.126.110
bbs.xixi.com. IN A 192.168.126.120
slave A 192.168.126.101
fanyi A 192.168.126.130
[root@Server named]# vim 192.168.126.arpa
$TTL 1D
@ IN SOA ns.xixi.com. rname.invalid. (
1 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS ns.xixi.com.
ns.xixi.com. A 192.168.126.100
110 PTR www.xixi.com.
120 PTR bbs.xixi.com.
101 PTR slave.baidu.com.
130 PTR fanyi.baidu.com.
[root@Server named]# systemctl restart named
从服务端
# 客户端没有效果,来从服务端手动更新:"rndc refresh 区域文件中定义的管理区域的名字"
[root@ServerB ~]# rndc refresh xixi.com
zone refresh queued
[root@ServerB ~]# rndc refresh 126.168.192.in-addr.arpa
zone refresh queued
客户端
# 重启named服务,但是从服务端没有刷新状况
[root@Client ~]# nslookup 192.168.126.130
** server can't find 130.126.168.192.in-addr.arpa: NXDOMAIN
[root@Client ~]# nslookup fanyi.xixi.com
Server: 192.168.126.101
Address: 192.168.126.101#53
** server can't find fanyi.xixi.com: NXDOMAIN
# 从服务端手动刷新后情况
[root@Client ~]# nslookup 192.168.126.130
130.126.168.192.in-addr.arpa name = fanyi.baidu.com.
[root@Client ~]# nslookup fanyi.xixi.com
Server: 192.168.126.101
Address: 192.168.126.101#53
Name: fanyi.xixi.com
Address: 192.168.126.130
更多推荐


所有评论(0)