DNS域名管理服务
一、DNS介绍
- 域名:
有特定的格式组成,用来表示互联网中某一台计算机或者计算机组的名称,能够是人更方便的访问互联网,而不用记住能够被机器直接读取的IP地址。
1.DNS的作用
-
域名的正向解析
将主机域名转换为对应的IP地址,以便网络程序能够通过主机域名访问到对应的服务器主机
域名——>IP A记录
-
域名的方向解析
将主机的IP地址转换为对应的域名,以便网络(服务)程序能够通过IP地址查询到主机的域名
IP——>域名 PTR记录
2.DNS协议及端口
- TCP 53(主从同步)
- UDP 53(正常查询)
- 启动脚本:/etc/init.d/named
3.DNS的结构
根域.
- 在整个DNS系统的最上方一定是.(小数点)这个DNS服务器(称为root),也叫“根域”。
- 根域<13台 全世界只有13台;1个位主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本
一级域名<顶级域|国家域>
com :顶级域,由ICANN组织指定和管理
分类:
- 国家地区域名:cn(中国)、hk(香港)、sg(新加坡)等
- 通用顶级域名:com(商业机构)、org(非营利组织)、edu(教育机构)等
- 新通用顶级域名:red(红色、热情)、top(顶级、高端)
baidu:二级域(注册域),可由个人或组织申请注册
www:三级域(子域),服务器网站名代表
域名机构
收费:新网|万网
免费域名:TK顶级域名、TK域名DNS、TK域名商
3.DNS工作原理
-
客户机首先查找本地hosts文件,如果有则返回,否则进行下一步
-
客户机查看本地缓存,是否存在本条目的缓存,如果有则直接返回,否则进行下一步
-
将请求转发给指向的DNS服务器
-
查看域名是否本地解析,是则本地解析返回,否则进行下一步
- 本地DNS服务器首先在缓存中查找,有则返回,无则进行下一步
如果询问一次得到结果 递归查询 C-S
如果询问多次得到结果 迭代查询 S-S
dig +trace www.baidu.com --追踪dns解析过程
dig @server www.baiducom --正向解析查询
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——>正向解析
思路:
-
关闭防火墙和selinux
[root@localhost ~]# vim /etc/sysconfig [root@localhost ~]# vim /etc/sysconfig/network [root@localhost ~]# service iptables stop [root@localhost ~]# chkconfig iptables off [root@localhost ~]# getenforce Permissive [root@localhost ~]# vim /etc/sysconfig/selinux [root@localhost ~]# grep ^SELINUX /etc/sysconfig/selinux SELINUX=disabled SELINUXTYPE=targeted
-
配置yum源
已配,略
-
软件三部曲
-
查看并安装软件
[root@server ~]#yum -y install bind
-
确定成功安装
[root@server ~]# rpm -q bind bind-9.8.2-0.30.rc1.el6.x86_64
-
查看软件列表
/etc/logrotate.d/named --日志轮转文件 /etc/named --配置文件的主目录 /etc/named.conf --主配置文件 /etc/named.rfc1912.zones --Zone文件,定义域 /etc/rc.d/init.d/named --启动脚本 /usr/sbin/named --二进制命令 /usr/sbin/named-checkconf --检查配置文件的命令 named.conf named.rfc1912.zones /usr/sbin/named-checkzone --检查区域文件的命令 /var/log/named.log --日志文件 /var/named --数据文件的主目录 /var/named/data /var/named/named.ca --根域服务器 /var/named/named.empty /var/named/named.localhost --正向解析区域文件的模板 /var/named/named.loopback --反向解析区域文件的模板 /var/named/slaves --从dns服务器下载文件的默认路径 /var/run/named --进程文件
-
-
了解配置文件(语法、参数配置)——>man 5 xxx.conf
- 主配置文件:
[root@server ~]# vim /etc/named.conf 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 yes; --dns安全扩展机制(签名认证) 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";
- 子配置文件:
[root@server ~]# vim /etc/named.rfc1912.zones //定义正向域的模板 zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; //定义反向域的模板 zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; [root@server named]# cd /var/named/ [root@server named]# ll -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 Oct 15 2014 slaves #解释: # $ITL --缓存的生命周期 # @ = zonename = cnpcic.com --当前域 # IN --互联网 # SOA --开始授权 # NS --DNS服务端 nameserver # A --ipv4正向 # AAAA --ipv6 # CNAME --别名 # MX ---邮件交互记录 5 代表数字优先级 数字越小优先级越高 [root@server named]# cat 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
-
根据需求通过修改配置文件完成服务的搭建
dnl.cnpcchad.cot——>10.184.162.99
#1.修改主配置文件/etc/named.conf——>监听方式和允许谁来查询 [root@server ~]# vim /etc/named.conf 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"; 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 yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; #2.修改子配置文件/etc/named.rfc1912.zones ——>定义管理域 cnpcchad.cot [root@server ~]# vim /etc/named.rfc1912.zones 在该文件最后面添加如下内容: zone "cnpcchad.cot" IN { type master; file "cnpcchad.cot.zone"; allow-update { none; }; }; #3.在/var/named目录创建相应的zone文件(cnpcchad.cot.zone) [root@server ~]# ll /var/named -rw-r-----. 1 root named 152 Jun 21 2007 named.localhost [root@server ~]# cp -p /var/named/named.localhost /var/named/cnpcchad.cot.zone [root@server ~]# ll /var/named/cnpcchad.cot.zone -rw-r-----. 1 root named 152 Jun 21 2007 /var/named/cnpcchad.cot.zone [root@server ~]# vim /var/named/cnpcchad.cot.zone $TTL 1D @ IN SOA cnpcchad.cot. rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ NS dns1.cnpcchad.cot. //dns1可以任意指定,但是需跟后面的A记录保持一致 dns1 A 192.168.1.128 //前两行一定是当前DNS服务器的IP daniela A 192.168.1.129 AAAA ::1 #4.使用命令检查当前配置语法是否正确 [root@server ~]# named-checkconf /etc/named.conf [root@server ~]# named-checkconf /etc/named.rfc1912.zones [root@server ~]# cd /var/named/ [root@server named]# ls cnpcchad.cot.zone data dynamic named.ca named.empty named.localhost named.loopback slaves [root@server named]# named-checkzone cnpcchad.cot.zone cnpcchad.cot.zone //区域文件写2遍 zone cnpcchad.cot.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 192.168.1.128:53 0.0.0.0:* LISTEN 20137/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 20137/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 20137/named tcp 0 0 ::1:53 :::* LISTEN 20137/named tcp 0 0 ::1:953 :::* LISTEN 20137/named udp 0 0 192.168.1.128:53 0.0.0.0:* 20137/named udp 0 0 127.0.0.1:53 0.0.0.0:* 20137/named udp 0 0 ::1:53 :::* 20137/named
- 测试验证
client端:192.168.1.129
#1.指定DNS服务器
[root@client ~]# echo nameserver 192.168.1.128 > /etc/resolv.conf
[root@client ~]# cat /etc/resolv.conf
nameserver 192.168.1.128
#2.使用相应的工具测试
[root@client ~]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter [确定]
iptables:清除防火墙规则: [确定]
iptables:正在卸载模块: [确定]
[root@client ~]# getenforce
Enforcing
[root@client ~]# setenforce 0
[root@client ~]# getenforce
Permissive
#nslookup命令
[root@client ~]# nslookup daniela.cnpcchad.cot
Server: 192.168.1.128
Address: 192.168.1.128#53
Name: daniela.cnpcchad.cot
Address: 192.168.1.129
#dig命令
[root@client ~]# dig @192.168.1.128 daniela.cnpcchad.cot
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> @192.168.1.128 daniela.cnpcchad.cot
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52861
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;daniela.cnpcchad.cot. IN A
;; ANSWER SECTION:
daniela.cnpcchad.cot. 86400 IN A 192.168.1.129
;; AUTHORITY SECTION:
cnpcchad.cot. 86400 IN NS dns1.cnpcchad.cot.
;; ADDITIONAL SECTION:
dns1.cnpcchad.cot. 86400 IN A 192.168.1.128
;; Query time: 2 msec
;; SERVER: 192.168.1.128#53(192.168.1.128)
;; WHEN: Thu Nov 21 17:51:39 2019
;; MSG SIZE rcvd: 89
#host命令
[root@client ~]# host daniela.cnpcchad.cot
daniela.cnpcchad.cot has address 192.168.1.129
daniela.cnpcchad.cot has IPv6 address ::1
结果:
1.看到以上信息说明正向解析没有问题
2.不能够方向解析,原因没有配置
3.如果配置文件没有错误,服务启动了,那么解析不了需检查你的防火墙selinux和网络
需求2:
搭建DNS服务器,能够正向和方向解析192.168.1.254——www.misshou.io
步骤:
#1./etc/named.conf
#2./etc/named.rfc1912.zones //定义了cnpcchad.cot正向域
[root@server ~]# vim /etc/named.rfc1912.zones
zone "1.168.192.in-addr.arpa" IN {
type master;
file "192.168.1.zone";
allow-update { none; };
};
#3.创建192.168.1.zone文件
[root@server ~]# vim /var/named/192.168.1.zone
$TTL 1D
@ IN SOA cnpcchad.cot rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS dns1.cnpcchad.cot //如果dns1.cnpcchad.cot在正向区域文件存在,可以不用写A记录
dns1 A 192.168.1.128
128 PTR daniela.cnpcchad.cot. //128对应的是192.168.1.128
#4.重启服务
[root@server ~]# service named restart
Stopping named: [ OK ]
Starting named: [ OK ]
#5.测试验证
[root@client ~]#echo nameserver 192.168.1.128 >/etc/resolv.conf
[root@client ~]# cat /etc/resolv.conf
nameserver 192.168.1.128
#方式1:
[root@client ~]# nslookup daniela.cnpcchad.cot
Server: 192.168.1.128
Address: 192.168.1.128#53
Name: daniela.cnpcchad.cot
Address: 192.168.1.129
[root@client ~]# nslookup 192.168.1.129
Server: 192.168.1.128
Address: 192.168.1.128#53
129.1.168.192.in-addr.arpa name = daniela.cnpcchad.cot.
#方式2:
[root@client ~]# dig @192.168.1.128 -x 192.168.1.129
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> @192.168.1.128 -x 192.168.1.129
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13524
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;129.1.168.192.in-addr.arpa. IN PTR
;; ANSWER SECTION:
129.1.168.192.in-addr.arpa. 86400 IN PTR daniela.cnpcchad.cot.
;; AUTHORITY SECTION:
1.168.192.in-addr.arpa. 86400 IN NS dns1.cnpcchad.cot.
;; ADDITIONAL SECTION:
dns1.cnpcchad.cot. 86400 IN A 192.168.1.128
;; Query time: 1 msec
;; SERVER: 192.168.1.128#53(192.168.1.128)
;; WHEN: Fri Nov 22 09:07:04 2019
;; MSG SIZE rcvd: 113
#方式3:
[root@client ~]# host 192.168.1.129
129.1.168.192.in-addr.arpa domain name pointer daniela.cnpcchad.cot.
三、主从DNS搭建
1.搭建时间同步服务器
方法1:
ntp(network time protocol) 端口:123
[root@server ~]# vim /etc/ntp.conf
restrict 192.168.1.0 mask 255.255.0.0 nomodify notrap //允许192.168.1.0网段的主机同步时间
restrict 172.16.0.0 mask 255.255.0.0 nomodify notrap
restrict 10.1.1.0 mask 255.0.0.0 nomodify notrap
[root@client ~]# ntpdate 192.168.1.128
方法2:
vim /etc/xinetd.d/time-dgram
service time
{
# This is for quick on or off of the service
disable = no
...
}
[root@server ~]# vim /etc/xinetd.d/time-stream
service time
{
disable = no
...
}
[root@server ~]# netstat -nltup|grep :37
tcp 0 0 :::37 :::* LISTEN 5005/xinetd
[root@server ~]# netstat -nltup|grep 37
tcp 0 0 :::37 :::* LISTEN 5005/xinetd
#客户端同步时间:
[root@client2 ~]# rdate -s 192.168.1.128
[root@client2 ~]# date
Fri Nov 22 08:36:12 PST 2019
2.部署安装
思路:
1.master和slave的系统时间保持一致
2.slave服务器上安装相应的软件(系统版本、软件版本高度保持一致)
3.根据需求修改相应的配置文件(master和slave都应该去修改)
步骤:
#1.同步master和slave的系统时间
master和slave上都要操作:
[root@master-server ~]# crontab -e
*/2 * * * * /usr/bin/rdate -s 192.168.1.128 &>/dev/null
[root@master-slave ~]# crontab -e
*/2 * * * * /usr/bin/rdate -s 192.168.1.128 &>/dev/null
#2.搭建备用的dns服务器
--以下操作在slave上进行
1)安装软件
yum -y install bind
2)修改配置文件
[root@slave-server ~]# vim /etc/named.conf
#两个any 定义监听方式以及允许谁来查询
3)修改子配置文件
[root@slave-server ~]# vim /etc/named.rfc1912.zones
在文件的最下面增加以下内容:
zone "cnpcchad.cot" IN {
type slave; //类型是slave
masters {192.168.1.128;}; //指定master dns的ip地址
file "salves/slave.cnpcchad.cot"; //同步过来的文件的保存路径及名字
};
#3.在master上操作
1)/etc/named.conf
2)/etc/named.rfc1912.zones
zone "cnpcchad.cot" IN {
type master;
file "cnpcchad.cot.zone";
allow-update { none; }; //删除此行
};
#4.测试验证
[root@client2 ~]# service iptables stop
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Flushing firewall rules: [ OK ]
iptables: Unloading modules: [ OK ]
[root@client2 ~]# getenforce
Enforcing
[root@client2 ~]# setenforce 0
[root@client2 ~]# echo nameserver 192.168.1.128 > /etc/resolv.conf
[root@client2 ~]# echo nameserver 192.168.1.129 >> /etc/resolv.conf
[root@client2 ~]# nslookup daniela.cnpcchad.cot
Server: 192.168.1.128
Address: 192.168.1.128#53
Name: daniela.cnpcchad.cot
Address: 192.168.1.254
[root@client2 ~]# nslookup daniela.cnpcchad.cot
Server: 192.168.1.129
Address: 192.168.1.129#53
Name: daniela.cnpcchad.cot
Address: 192.168.1.254
思考:如果只允许指定的slave来同步数据怎么做?
options {
listen-on port 53 { 127.0.0.1; any; };
listen-on-v6 port 53 { ::1; };
allow-transfer {192.168.1.129;}; //指定允许哪个slave来下载数据
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
来源:51CTO
作者:笃信守真
链接:https://blog.51cto.com/9664355/2452449