DNS服务器搭建
DNS
DNS(Domain Name Service) 域名解析服务,就是将域名和 ip 之间做相应的转换,利用 TCP 和 UDP 的53号端口
DNS系统作用:
正向解析:根据域名查找对应的ip地址
反向解析:根据ip地址查找对应的域名
DNS服务器的分类:
主要名称服务器:存放该区域中相关设置的DNS服务器,其存放的是区域文件的正本数据
辅助名称服务器:从其他服务器中复制数据,数据为副本无法修改
主控名称服务器:提供趋于数据复制的DNS服务器
缓存域名服务器:通过像根或其他服务器查询获得域名到ip的解析关系,将查询结果缓存到本地,提高重复查找速度
安装及配置
安装DNS
1 |
[root@youxi1 ~]# yum -y install bind bind-chroot bind-utils |
BIND 全称为Berkeley Internet Name Domain(伯克利因特网名称域系统),BIND 主要有三个版本:BIND4、BIND8、BIND9。BIND8版本融合了许多提高效率、稳定性和安全性的技术,而BIND9 增加了一些超前的理念,例如IPv6支持、密钥加密、多处理器支持、线程安全操作、增量区传送等。
bind包里包含了DNS服务的主程序包。
bind-chroot包是bind的一个功能包,使bind可以在chroot模式下运行。也就是说bind运行的主目录并不是系统的根目录,只是系统的一个子目录而已。这是为了提高安全性,使得访问的范围仅限于这个子目录。
bind-utils包是客户端工具,系统默认安装,用于搜索域名指令。
DNS相关配置文件
/etc/named.conf 是BIND的核心配置文件,它包含了BIND 的基本配置,但其并不包括区域数据。
/var/named/目录是DNS数据库文件存放目录,每一个域文件都放在这里。
配置文件参数
在/etc/named.conf中大致分为针对全局生效,存放常规设置的options部分;以及针对某个区域,由各个区域设置的zone部分。另外还有logging(日志选项)和acl(访问控制列表)可选。
去除注释后的/etc/named.conf配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
[root@youxi1 ~]# cat /etc/named.conf options { //指定BIND通过哪些网络接口和哪个端口来接收客户端请求。如果省略端口号,则使用默认端口53。127.0.0.1允许接收来自本地的请求。如果完全省略此项或网络接口是any,则默认使用所有端口。 listen-on port 53 { 127.0.0.1; }; //指定BIND通过哪个端口监听IPv6客户端请求。IPv6,服务器只接受通配符地址,any和none。 listen-on-v6 port 53 { ::1; }; //BIND可以在该目录中找到包含区域数据的文件 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"; //定义客户端可以自此发送DNS请求的网络。可以用地址信息(192.168.5.101/24)替换或使用any替换 allow-query { localhost; }; recursion yes; dnssec-enable yes; dnssec-validation yes; bindkeys-file "/etc/named.iscdlv.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"; //区域文件,需要手动创建。范例文件为named.localhost };
include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; |
搭建内网DNS服务器
备份DNS服务器的配置文件/etc/named.conf
1 |
[root@youxi1 ~]# cp /etc/named.conf /etc/named.conf.bak |
修改DNS服务器的配置文件/etc/named.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
[root@youxi1 ~]# cat /etc/named.conf options { listen-on port 53 { any; }; //修改为 listen-on-v6 port 53 { any; }; //修改为any 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; }; recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; //添加此行 bindkeys-file "/etc/named.iscdlv.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 "test.cn" IN { //区域名称改为test.cn type master; //区域类型为主DNS服务器 file "test.cn.zone"; //区域文件,需要手动创建。范例文件为named.localhost };
include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; |
创建区域文件,修改权限,并进行修改
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//-a选项保留源文件的权限 [root@youxi1 ~]# cp -a /var/named/named.localhost /var/named/test.cn.zone -rw-r----- 1 root named 257 5月 20 17:13 /var/named/test.cn.zone [root@youxi1 ~]# vim /var/named/test.cn.zone $TTL 1D //设置有效地址解析记录的默认缓存时间,默认为1天 //test.cn.也可以使用@,表示当前的域 //dns.test.cn.该域的主域名 //root.test.cn.管理员邮件地址 test.cn. IN SOA dns.test.cn. root.test.cn. ( //更新序列号,用于标示数据库的变换,可以在10位以内。如果存在辅助DNS区域,建议每次更新完数据库,手动加1 0 ; serial //刷新时间,从域名服务器更新该地址数据库文件的间隔时间,默认为1天 1D ; refresh //重试延时,从域名服务器更新地址数据库失败后,等待多长时间,默认为1小时 1H ; retry //到期失效时间,超过改时间人无法更新地址数据库,那么不再尝试,默认为1周 1W ; expire //无效地址解析记录默认缓存时间(该数据库中不存在的地址),默认为3小时。 3H ) ; minimum test.cn. NS dns.test.cn. dns.test.cn. A 192.168.5.101 www.test.cn. A 192.168.5.101 cname.test.cn. CNAME www.test.cn. |
重启DNS服务器
1 |
[root@youxi1 ~]# systemctl restart named |
到测试主机youxi2上修改DNS地址和网卡信息,然后重启网络服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
[root@youxi2 ~]# vim /etc/resolv.conf # Generated by NetworkManager nameserver 192.168.5.101 [root@youxi2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="yes" NAME="ens33" UUID="a12d9bb2-85cb-4db0-9b94-e4ed3baa6470" DEVICE="ens33" ONBOOT="yes" IPADDR="192.168.5.102" PREFIX="24" GATEWAY="192.168.5.2" DNS1="192.168.5.101"<br>[root@youxi2 ~]# systemctl restart network |
开启防火墙
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
iptables -A INPUT -p tcp --dport 53 -j ACCEPT
配置linux客户端
登录dns测试服务器
vim /etc/resolv.conf
nameserver 192.168.122.254
nameserver 114.114.114.114
校验解析结果
Linux Client验证
将客户端的dns设置为刚才修改的服务器ip。
vim /etc/resolv.conf
# Generated by NetworkManager
search test
nameserver 122.11.47.184 #新加DNS服务器地址
nameserver 114.114.114.114
nameserver 8.8.8.8
nolookup命令用于查询域名与ip的解析记录。
# nslookup
> jjmusic.com
Server: 122.11.47.184
Address: 122.11.47.184#53
Name: jjmusic.com
Address: 192.168.1.111
> www.jjmusic.com
Server: 122.11.47.184
Address: 122.11.47.184#53
Name: www.jjmusic.com
Address: 192.168.1.122
> store.jjmusic.com
Server: 122.11.47.184
Address: 122.11.47.184#53
Name: store.jjmusic.com
Address: 192.168.1.133
> img.jjmusic.com
Server: 122.11.47.184
Address: 122.11.47.184#53
Name: img.jjmusic.com
Address: 192.168.1.144