DNS 服务
DNS域名管理服务
课程目标
- DNS服务的作用及工作原理
- DNS服务的正向和反向解析配置
- DNS服务的主从同步搭建
一、DNS 介绍
DNS(domain name system) 域名管理系统
-
域名:
由特定的格式组成,用来表示互联网中某一台计算机或者计算机组的名称,能够使人更方便地访问互联网,而不用记住能够被机器直接读取的IP地址。
1.DNS的作用
-
域名的正向解析
将主机域名转换为对应的IP地址,以便网络程序能够通过主机域名访问到对应的服务器主机
域名--->IP A记录
-
域名的反向解析
将主机的IP地址转换为对应的域名,以便网络服务程序能够通过IP地址查询到主机的域名
IP ---> 域名 PTR记录
2.DNS的结构

. 根域👇
- 在整个DNS系统的最上方一定是 .(小数点)这个DNS服务器(称为root),也叫“根域”
- 根域<13台> 全世界有13个,1个为主根服务器,放置在美国。其余12个为辅根服务器,其中9个放置在美国,2个在欧洲(英国和瑞典),1个在日本
一级域名<顶级域|国家域>
com edu gov net org cc io| cn uk us ru ja ko
二级域名
qq.com baidu.com google.com
域名机构
收费 <新网|万网>
老牌免费域名:TK顶级域名、TK域名DNS、TK域名商
<www.freehao123.com>
3.DNS工作原理

如果询问一次得到结果 递归查询 C-S
如果询问多次得到结果 迭代查询 S-S
一次递归
dig +trace www.baidu.com 追踪dns解析过程
dig @server www.baidu.com 正向解析查询
dig -x 192.168.0.1 @server 反向解析查询
dig +trace www.baidu.com 追踪一个域名解析过程
二、DNS服务器搭建
-
DNS的域名解析都是udp/53,主从之间的数据传输默认使用tcp/53
-
DNS软件:
Bind是一款开源的DNS服务器软件,Bind由美国加州大学Berkeley(伯克利)分校开发和维护的,全名是Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS服务器软件,支持各自UNIX平台和Windows平台。Bind现在由互联网系统协会(Internet Systems Consortium)负责开发与维护。
需求1:
搭建DNS服务器,能够将www.misshou.io解析成192.168.1.254--->正向解析
环境:
DNS-server:10.1.1.2
client:10.1.1.3
思路:
- 关闭防火墙和selinux
- 配置yum源
- 软件三步曲
- 查看并安装
- 确认成功安装
- 查看软件文件列表
- 了解配置文件(语法、参数配置)--->man 5 xxx.conf
- 根据需求通过修改配置文件完成服务的搭建
- 启动服务,开机自启
- 测试验证
步骤:
DNS-server上完成:
- 关闭防火墙和selinux
service iptables stop
chkconfig iptables off
getenforce
setenforce 0
vim /etc/sysconfig/selinux
- 配置yum源 略
- 软件三步曲
yum -y install bind
rpm -q bind
/etc/NetworkManager/dispatcher.d/13-named
/etc/logrotate.d/named //日志轮转文件
/etc/named //dns服务配置文件主目录
/etc/named.conf //主配置文件
/etc/named.rfc1912.zones //zone文件,定义域
/etc/rc.d/init.d/named //启动脚本
/usr/sbin/named //二进制命令
/usr/sbin/named-checkconf //检查配置文件的命令 name.conf name.rfc1912.zones
/usr/sbin/named-checkzone //检查区域文件的命令
/usr/share/man/man5/named.conf.5.gz
/usr/share/man/man8/named.8.gz
/var/log/named.log //日志文件
/var/named //数据文件的主目录
/var/named/data
/var/named/dynamic
/var/named/named.ca //根域服务器
/var/named/named.empty
/var/named/named.localhost //正向解析区域文件模板
/var/named/named.loopback //反向解析区域文件模板
/var/named/slaves //从服务器 下载文件的默认路径
/var/run/named //进程文件
主配置文件:
options {
listen-on port 53 { 127.0.0.1; any; }; 监听方式,any表示全网监听
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db"; DNS缓存文件
statistics-file "/var/named/data/named_stats.txt"; 统计
memstatistics-file "/var/named/data/named_mem_stats.txt"; 内存统计
allow-query { localhost; any; }; 允许哪些人可以查询,any任何人
recursion yes; 是否递归
dnssec-enable no; 安全扩展机制(签名认证),默认yes
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
说明:
DNSSEC 域名系统安全,是DNS的安全扩展协议
DLV DNSSEC 后备秘钥
这些安全机制的设定,是为了保护DNS服务器与用户之间的数据安全,避免恶意数据对用户的欺骗
zone "." IN { 根服务器
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
子配置文件:
/etc/named.rfc1912.zones
//正向模板
zone "localhost.localdomain" IN {
type master;
file "named.localhost"; 注意下面会对引号内的文件进行修改配置
allow-update { none; };
};
//反向模板 IP反过来写
zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};
cat /etc/named/named.localhost
$TTL 1D 缓存的生命周期
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
@ = zonename = itcast.com 当前域
IN 互联网
SOA 开始协议
NS dns服务端
A ipv4正向
AAAA ipv6
CNAME 别名
MX 邮件交互记录 5 表示优先级 数字越小越优先
反向
$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.
-
根据需求通过修改配置文件来完成服务的搭建
www.misshou.io——>192.168.1.254
1.修改主配置文件/etc/named.conf————>监听方式和允许谁来查询
options { 修改下面四处地方
。。。
listen-on port 53 { 127.0.0.1;any; };
allow-query { localhost; any; };
dnssec-enable no;
dnssec-validation no;
}
。。。
2.修改子配置文件/etc/named.rfc1912.zones————>定义管理域 misshou.io
在该文件最后面追加以下内容
zone "misshou.io" IN {
type master;
file "misshou.io.zone"; 文件名自己定,没有要求
allow-update { none; };
};
3.在/var/named目录里创建相应的区域文件
[root@server ~]# ll /var/named
total 28
drwxrwx--- 2 named named 4096 Aug 27 2013 data
drwxrwx--- 2 named named 4096 Aug 27 2013 dynamic
-rw-r----- 1 root named 1892 Feb 18 2008 named.ca
-rw-r----- 1 root named 152 Dec 15 2009 named.empty
-rw-r----- 1 root named 152 Jun 21 2007 named.localhost 正向模板
-rw-r----- 1 root named 168 Dec 15 2009 named.loopback
drwxrwx--- 2 named named 4096 Aug 27 2013 slaves
[root@server ~]# cp -p /var/named/named.localhost /var/named/misshou.io.zone 加-p
[root@server ~]# ll /var/named/misshou.io.zone
-rw-r----- 1 root named 152 Jun 21 2007 /var/named/misshou.io.zone
[root@server ~]# vim /var/named/misshou.io.zone
$TTL 1D
@ IN SOA misshou.io. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS dns1.misshou.io. //此处的dns1可以随便指定,abc都行,但是要和后面的A记录保持一致
dns1 A 10.1.1.2 //前两行一定是当前DNS服务器的IP地址
www A 192.168.1.254
4.使用命令检查配置文件的语法
[root@server ~]# named-checkconf /etc/named.conf
[root@server ~]# named-checkconf /etc/named.rfc1912.zones
[root@server ~]# cd /var/named 进入该目录检查.zone文件
[root@server named]# ls
data misshou.io.zone named.empty named.loopback
dynamic named.ca named.localhost slaves
[root@server named]# named-checkzone misshou.io.zone misshou.io.zone //区域文件名写两遍
zone misshou.io.zone/IN: loaded serial 0
OK
- 启动服务,开机自启
[root@server named]# service named start
Generating /etc/rndc.key: [ OK ]
Starting named: [ OK ]
[root@server named]# chkconfig named on
[root@server named]# netstat -nltup|grep 53
tcp 0 0 10.1.1.2:53 0.0.0.0:* LISTEN 2162/named
tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 2162/named
tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 2162/named
tcp 0 0 ::1:53 :::* LISTEN 2162/named
tcp 0 0 ::1:953 :::* LISTEN 2162/named
udp 0 0 10.1.1.2:53 0.0.0.0:* 2162/named
udp 0 0 127.0.0.1:53 0.0.0.0:* 2162/named
udp 0 0 ::1:53 :::* 2162/named
端口已启动
- 测试验证
client:10.1.1.3
www.misshou.io 192.168.1.254
先指定DNS服务器
[root@client ~]# echo nameserver 10.1.1.2 > /etc/resolv.conf
[root@client ~]# cat /etc/resolv.conf
nameserver 10.1.1.2
第一个命令nslookup
[root@client ~]# nslookup
> server
Default server: 10.1.1.2
Address: 10.1.1.2#53
> exit
[root@client ~]# which nslookup
/usr/bin/nslookup
[root@client ~]# rpm -qf /usr/bin/nslookup
bind-utils-9.8.2-0.17.rc1.el6_4.6.x86_64
[root@client ~]# nslookup www.misshou.io
Server: 10.1.1.2
Address: 10.1.1.2#53
Name: www.misshou.io
Address: 192.168.1.254
第二个命令dig
[root@client ~]# dig @10.1.1.2 www.misshou.io
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> @10.1.1.2 www.misshou.io
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22390
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.misshou.io. IN A
;; ANSWER SECTION:
www.misshou.io. 86400 IN A 192.168.1.254
;; AUTHORITY SECTION:
misshou.io. 86400 IN NS dns1.misshou.io.
;; ADDITIONAL SECTION:
dns1.misshou.io. 86400 IN A 10.1.1.2
;; Query time: 1 msec
;; SERVER: 10.1.1.2#53(10.1.1.2)
;; WHEN: Wed Apr 24 18:36:41 2019
;; MSG SIZE rcvd: 83
第三个命令host
[root@client ~]# host www.misshou.io
www.misshou.io has address 192.168.1.254
结果:
1.看到以上信息说明正向解析没问题
2.不能反向解析是因为没有配置
3.如果配置文件没有错误,服务也启动了,还是不能解析,那么检查防火墙、selinux和网络
需求2:
搭建DNS服务器实现正向反向解析192.168.1.254--->www.misshou.io
步骤:
1.修改配置文件
/etc/named.conf 主配置文件 全网监听,任意访问,两个any
/etc/named.rfc1912.zones 定义了一个misshou.io正向域,再定义一个反向域
增加以下内容:
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.zone";
allow-update { none; };
};
2.创建反向192.168.1.zone文件,放到/var/named/目录里
[root@server ~]# cp -p /var/named/named.loopback /var/named/192.168.1.zone
[root@server ~]# vim /var/named/192.168.1.zone
[root@server ~]# cat /var/named/192.168.1.zone
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS abc.misshou.io. //如果abc.misshou.io在正向区域文件存在,就可以不写下面A记录
abc A 10.1.1.2
254 PTR www.misshou.io. //192.168.1.
3.重启服务
[root@server ~]# service named restart
Stopping named: [ OK ]
Starting named: [ OK ]
4.客户端测试验证
[root@client ~]# dig -x 192.168.1.254 @10.1.1.2
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -x 192.168.1.254 @10.1.1.2
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61276
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;254.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
254.1.168.192.in-addr.arpa. 86400 IN PTR www.misshou.io.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400 IN NS abc.misshou.io.
;; Query time: 1 msec
;; SERVER: 10.1.1.2#53(10.1.1.2)
;; WHEN: Thu Apr 25 08:18:46 2019
;; MSG SIZE rcvd: 90
如果用nslookup不行的话,需重新指定dns服务器echo nameserver 10.1.1.2 > /etc/resolv.conf
[root@client ~]# echo nameserver 10.1.1.2 >/etc/resolv.conf
[root@client ~]# cat /etc/resolv.conf
nameserver 10.1.1.2
[root@client ~]# nslookup www.misshou.io
Server: 10.1.1.2
Address: 10.1.1.2#53
Name: www.misshou.io
Address: 192.168.1.254
[root@client ~]# nslookup
> server
Default server: 10.1.1.2
Address: 10.1.1.2#53
> 192.168.1.254
Server: 10.1.1.2
Address: 10.1.1.2#53
254.1.168.192.in-addr.arpa name = www.misshou.io.
[root@client ~]# nslookup 192.168.1.254
Server: 10.1.1.2
Address: 10.1.1.2#53
254.1.168.192.in-addr.arpa name = www.misshou.io.

浙公网安备 33010602011771号