DNS域名解析服务器部署
一、DNS服务器介绍
DNS是Domain Name System 的缩写,即域名系统。如果说ARP协议是用来将IP地址转换为MAC地址,那么DNS协议则是用来将域名转换为IP地址。最初,域名和IP的对应关系保存在一个叫hosts文件中,通过互联网信息中心来管理这个文件,如果有一个新的计算机想接入网络,或者某个计算IP变更都需要到信息中心申请变更hosts文件。其他计算机也需要定期更新,才能上网。 但是这样太麻烦了,就出现了DNS。
(1)DNS分类:DNS服务器可以分为3种,即主域名服务器(Master DNS)、辅助域名服务器(Slave DNS)、缓存服务器。
(2)服务端口:DNS使用TCP和UDP的端口号53。客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过TCP三次握手,这样DNS服务器负载更低,响应更快。什么时候使用tcp53?DNS在进行区域传输的时候使用TCP协议。
二、Bind DNS服务器部署
2.1 Bind包介绍
bind # DNS服务的主程序包
bind-chroot # 提高安全性
bind-utils # 客户端工具,用于搜索域名指令
Bind-chroot是bind的一个功能,使bind可以在一个chroot的模式下运行。也就是说,bind运行时的/(根)目录,并不是系统真正的/(根)目录,只是系统中的一个子目录而已。这样做的目的是为了提高安全性,因为在chroot的模式下,bind可以访问的范围仅限于这个子目录的范围里,无法进一步提升,进入到系统的其他目录中。
Bind-utils是bind软件提供的一组DNS工具包,里面有一些DNS相关的工具。主要有:dig、host、nslookup、nsupdate,使用这些工具可以进行域名解析和DNS调试工作。
2.2 Bind部署
(1)安装DNS服务
[root@10-27-0-224 ~]# yum -y install bind bind-utils bind-chroot
(2)修改主配置文件
[root@10-27-0-224 ~]# vim /etc/named.conf options { listen-on port 53 { 10.27.0.224; }; # 监听地址,默认本地监听127.0.0.1,允许外部访问,需要修改为具体IP或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"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { any; }; # DNS定义完成之后允许谁来访问,这里默认为只允许本地查询 recursion yes; dnssec-enable yes; dnssec-validation yes; bindkeys-file "/etc/named.root.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
(3)修改/etc/named.rfc1912.zones 主区域配置文件
[root@10-27-0-224 ~]# vim /etc/named.rfc1912.zones # 正向解析 zone "starcto.com" IN { type master; file "starcto.com.zone"; allow-update { none; }; }; # 反向解析 zone "0.27.10.in-addr.arpa" IN { type master; file "0.27.10.in-addr.arpa.zone"; allow-update { none; }; }; 【注】如果有非10.27.0.0/24段的反向解析,可以再增加一个对应段的数据区域文件。
解释:这段设置是用zone关键字来定义的一个正向区域,对应的域名为starcto.com 。
type类型有三种:
◆ master:表示定义的主域名服务器。
◆ slave:表示定义的是辅助域名服务器。
◆ hint:表示是互联网中的根域名服务器。
file用来指定存放DNS记录的文件(一般都是区域名称.zone)
allow-update定义是否允许客户主机或服务器自行更新DNS记录,上面指定的这个正向区域不允许更新DNS记录。
(4)建立正、反向区域数据配置文件
# 正向解析数据配置文件 [root@10-27-0-224 ~]# cp -p /var/named/named.localhost /var/named/starcto.com.zone [root@10-27-0-224 ~]# cat /var/named/starcto.com.zone $TTL 1D # 设置有效地址解析记录的默认缓存时间,默认为1天也就是1D @ IN SOA @ rname.invalid. ( # 起始授权记录SOA 定义了域的全局参数,进行整个域管理设置,@表示当前的域starcto.com 0 ; serial # 更新序列号,用于标示数据库的变换 1D ; refresh # 刷新时间,从域名服务器更新该地址数据库文件的间隔时间,默认为1天 1H ; retry # 重试延时,从域名服务器更新地址数据库失败以后,等待多长时间,默认为为1小时 1W ; expire # 到期,失效时间,超过该时间仍无法更新地址数据库,则不再尝试,默认为一周 3H ) ; minimum # 设置无效记录,最少缓存时间为3小时 NS @ # 域名服务器记录 A 127.0.0.1 AAAA ::1 # 反向解析数据配置文件 [root@10-27-0-224 ~]# cp /var/named/starcto.com.zone /var/named/0.27.10.in-addr.arpa.zone
(5)配置正向解析
[root@10-27-0-224 ~]# vim /var/named/starcto.com.zone $TTL 1D @ IN SOA starcto.com. admin.starcto.com. ( 0 1D 1H 1W 3H ) NS starcto.com. A 10.27.0.224 IN MX 10 mail.starcto.com. mail IN A 10.27.0.226 www IN A 10.27.0.227 blogs IN CNAME www.starcto.com.
(6)配置反向解析
[root@10-27-0-224 ~]# vim /var/named/0.27.10.in-addr.arpa.zone $TTL 1D @ IN SOA starcto.com. admin.starcto.com. ( 0 1D 1H 1W 3H ) NS starcto.com. A 10.27.0.224 IN MX 10 mail.starcto.com. 226 IN PTR mail.starcto.com. 227 IN PTR www.starcto.com.
(7)测试配置文件和区域数据文件
[root@10-27-0-224 ~]# named-checkconf [root@10-27-0-224 ~]# named-checkzone starcto.com /var/named/starcto.com.zone zone starcto.com/IN: loaded serial 0 OK [root@10-27-0-224 ~]# named-checkzone 0.27.10.in-addr.arpa /var/named/0.27.10.in-addr.arpa.zone zone 0.27.10.in-addr.arpa/IN: loaded serial 0 OK
(8)修改DNS配置
[root@10-27-0-224 ~]# vim /etc/resolv.conf nameserver 10.27.0.224 [root@10-27-0-224 ~]# systemctl enable named.service [root@10-27-0-224 ~]# systemctl enable named-chroot.service [root@10-27-0-224 ~]# systemctl restart named-chroot.service [root@10-27-0-224 ~]# systemctl restart named.service
(9)测试正、反向解析
[root@10-27-0-224 ~]# nslookup > www.starcto.com # 测试正向解析 Server: 10.27.0.224 Address: 10.27.0.224#53 Name: www.starcto.com Address: 10.27.0.227 > 10.27.0.224 # 测试反向解析 224.0.27.10.in-addr.arpa name = ns1.starcto.com.
(10)查看DNS服务器日志
[root@10-27-0-224 ~]# named -g
2.3 Bind主从配置
(1)master节点配置
[root@10-27-0-224 ~]# vim /etc/named.rfc1912.zones zone "starcto.com" IN { type master; file "starcto.com.zone"; allow-transfer { 10.27.0.225; }; #表示允许谁来同步数据,不设置默认任意主机都可以来同步 };
(2)slave节点配置
[root@10-27-0-225 ~]# vim /etc/named.rfc1912.zones zone "starcto.com" IN { type master; file "slaves/starcto.com.zone"; # 同步文件放置slaves目录下,即 /var/named/slaves masters { 10.27.0.224; }; # 指定主服务器 };
2.4 Bind DNS访问控制
(1)acl格式
acl acl_name { ip; # 具体的ip地址 net/prelen;# 表示一个网段};
[root@10-27-0-224 ~]# vim /etc/named.conf acl starcto { 10.27.0.226 10.26.0.0/24 };
(2)Bind内置acl
none # 没有一个主机
any # 任意主机
localhost # 本地主机
localnets #本机的IP同掩码
[root@10-27-0-224 ~]# vim /etc/named.conf options { …… allow-query { any; }; …… };
2.5 Bind Forward转发
(1)转发DNS地址
1)forward first设置优先使用forwarders DNS服务器做域名解析,如果查询不到再使用本地DNS服务器做域名解析。
2)forward only设置只使用forwarders DNS服务器做域名解析,如果查询不到则返回DNS客户端查询失败。
[root@10-27-0-224 ~]# vim /etc/named.conf options { …… forwarders { 223.5.5.5;8.8.8.8;}; forward first; dnssec-validation no; #不需要互联网认证 …… };
(2)转发DNS域名
[root@10-27-0-224 ~]# vim /etc/named.conf zone "google.cn" { # 访问google.cnn域名时,将解析请求转到8.8.8.8(即google.cn域名的DNS地址),注意这个不能写在上面的forwarder处,否则转发无效! type forward; # 注意这里转发配置中制定了转发的域名,即forwad转发区(forward zone)设置,这是bind9之后的新特性。 forwarders { 8.8.8.8; }; };
三、新版unbound DNS服务器
3.1 unbound DNS服务器部署
(1)安装unbound服务
[root@10-27-0-224 ~]# yum install -y unbound
(2)设置开机自启
[root@10-27-0-224 ~]# systemctl enable unbound.service [root@10-27-0-224 ~]# systemctl restart unbound.service
3.2 修改主配置文件
[root@10-27-0-224 ~]# vim /etc/unbound/unbound.conf interface: 0.0.0.0 # 端口监听情况 access-control: 0.0.0.0/0 allow # 允许所有网段访问 username: "" # 允许所有用户 [root@10-27-0-224 ~]# systemctl restart unbound.service [root@10-27-0-224 ~]# netstat -antulp Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:53 0.0.0.0:* LISTEN 10724/unbound
3.3 修改数据文件
[root@10-27-0-224 ~]# vim /etc/unbound/local.d/starcto.conf local-zone: "starcto.com." static local-data: "starcto.com. 86400 IN SOA ns.starcto.com. root.starcto.com 120000 86400 3600 10800 86400" # 正向解析 local-data: "starcto.com. IN NS ns.starcto.com." local-data: "starcto.com. IN MX 10 mail.starcto.com." local-data: "starcto.com. IN A 10.27.0.225" local-data: "ns.starcto.com. IN A 10.27.0.226" # 反向解析 local-data-ptr: "10.27.0.226 ns.starcto.com." local-data-ptr: "10.27.0.225 starcto.com." [root@10-27-0-224 ~]# systemctl restart unbound.service
◆ 有问题找老大 ns.starcto.com;
◆ 出问题发邮件 root.starcto.com;
◆ 120000:辅助 DNS 和主 DNS (一定比辅 DNS 数大)starcto.com 对照同步,更新一次+1;
◆ 86400 是时间周期(一天的秒数);
◆ 3600 是每隔 86400 秒同步失败后,再通过 3600 秒同步,同步三次都失败,则认为主 DNS 死掉;
◆ 10800 是失败 3 次时间;
◆ 86400 缓存长度;
3.4 测试DNS反解
[root@10-27-0-224 ~]# nslookup starcto.com Server: 10.27.0.224 Address: 10.27.0.224#53 Name: starcto.com Address: 10.27.0.225 [root@10-27-0-224 ~]# nslookup 10.27.0.225 Server: 10.27.0.224 Address: 10.27.0.224#53 225.0.27.10.in-addr.arpa name = starcto.com.
作者:UStarGao
链接:https://www.starcto.com/application_of_operational/243.html
来源:STARCTO
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
UCloud云平台推荐
随便看看
- 2021-02-28Linux账户风险和安全策略
- 2021-08-09MySQL基于Binlog数据恢复方案
- 2021-05-16MongoDB 用户权限管理
- 2021-11-19Linux本地SSD磁盘IO性能压测教程-fio
- 2021-09-20MySQL半同步复制与刷盘策略