设为首页 收藏本站
查看: 789|回复: 0

[经验分享] CentOS 7.3 搭建DNS服务器

[复制链接]

尚未签到

发表于 2018-4-20 09:05:15 | 显示全部楼层 |阅读模式
一、DNS服务简介
1. DNS服务简介

  DNS(Domain Name System)域名系统。
  目前提供网络服务的应用使用唯一的32位的IP地址来标识,但是由于数字比较复杂、难以记忆,因此产生了域名系统(DNS),通过域名系统,可以使用易于理解和形象的字符串名称来标识网络应用(如www.baidu.com、www.taobao.com)。访问互联网应用可以使用域名,也可以通过IP地址直接访问该应用,在使用域名访问网络应用时,DNS负责将域名解析为IP地址。
  2. 主机名和域名的区别?
  主机名是内网的名字;域名是外网的名字。
  主机名和域名其实是两个完全可以不同的名字,但是有很多软件(如邮件系统postfix)会默认认为它们一致。

  全世界共有有13台DNS根域服务器。

  顶级域名:
  .com    .org    .edu    .gov    .net    .mil    .info
  商业     组织    教育    政府    通讯    军事    信息
  根域:
  cn      hk      us     jp     tw     in
  .com.cn      .net.us    .edu.cn
  3. DNS服务器特点

  •   分布式的数据库
  •   解决了数据不一致,避免了名字冲突
  •   有缓存机制,提高了性能和可靠性
  4. 域名解析过程
  为了将一个名字解析成一个IP地址,用户应用程序调用一个称为解析器的库程序,将名字作为参数传递给它,形成DNS用户;然后DNS用户发送查询请求给本地域名服务器,服务器首先在其管辖区域内查找名字,名字找到后,把对应的IP地址返回给DNS客户。完整的名字解析过程如下图所示:
DSC0000.jpg

二、系统环境

系统平台: CentOS 7.3
DNS Server: 192.168.8.88
更改主机名,写/etc/hosts记录

  #  vim /etc/hosts
  192.168.8.88           test.com         --最后添加DNS服务器IP地址和主机名/别名
关闭防火墙
#  systemctl  stop  firewalld               --临时关闭防火墙   #  systemctl  disable  firewalld          --永久关闭防火墙
关闭selinux
临时关闭:
#  setenforce 0
永久关闭:
#  vim  /etc/selinux/config  SELINUX=disabled                 --将enforcing改为disabled
  #  reboot                                    --重启系统永久生效


三、CentOS下的DNS服务
  准备两台机器

DSC0001.jpg

  1.  在DNS服务器上安装bind软件
  BIND全称是(Berkeley Internet Name Domain),是美国加利福尼亚大学伯克利分校开发的一个域名服务软件包,Linux使用这个软件包来提供域名服务,该软件实现了DNS协议。BIND的服务端软件是被称作named的守护进程。
  #  yum  -y  install bind*
  如果已经安装过了,显示“无需任何处理”
DSC0002.jpg

  安装好后查看软件包
  #  rpm  -qa  |  grep  ^bind
bind-pkcs11-libs-9.9.4-51.el7_4.1.x86_64
bind-pkcs11-utils-9.9.4-51.el7_4.1.x86_64
bind-license-9.9.4-51.el7_4.1.noarch
bind-lite-devel-9.9.4-51.el7_4.1.x86_64
bind-libs-9.9.4-51.el7_4.1.x86_64
bind-pkcs11-9.9.4-51.el7_4.1.x86_64
bind-dyndb-ldap-11.1-4.el7.x86_64
bind-9.9.4-51.el7_4.1.x86_64                   --提供了域名服务的主要程序及相关文件
bind-sdb-9.9.4-51.el7_4.1.x86_64
bind-pkcs11-devel-9.9.4-51.el7_4.1.x86_64
bind-utils-9.9.4-51.el7_4.1.x86_64          --提供了对DNS服务器的测试工具程序(如nslookup、dig等)
bind-sdb-chroot-9.9.4-51.el7_4.1.x86_64
bind-devel-9.9.4-51.el7_4.1.x86_64
bind-libs-lite-9.9.4-51.el7_4.1.x86_64
bind-chroot-9.9.4-51.el7_4.1.x86_64      --为bind提供一个伪装的根目录以增强安全性(将“/var/named/chroot/”目录作为BIND的根目录)
DSC0003.jpg

  2. 启动DNS服务
#  systemctl start named.service         --启动DNS服务#  systemctl enable named.service     --设置为开机启动
#  netstat -anlp | grep named             --查看监听端口为53
DSC0004.jpg

  named作为标准的系统服务脚本,通过“systemctl start/restart/stop named.service”的形式可以实现对服务器程序的控制
  named默认监听TCP、UDP协议的53端口,以及TCP的953端口:
  其中UDP 53端口一般对所有客户机开放,以提供解析服务;
  TCP 53端口一般只对特定从域名服务器开放,提高解析记录传输通道;TCP 953端口默认只对本机(127.0.0.1)开放,用于为rndc远程管理工具提供控制通道
  配置文件的目录:
  没有安装bind-chroot软件包

  •   配置文件为/etc/named.conf
  •   数据文件在/var/named目录下
  安装了bind-chroot软件包

  •   配置文件为/var/named/chroot/etc/named.conf    --默认没有
  •   数据文件在/var/named/chroot/var/named目录
  从上面看到装了bind-chroot,笼环境为/var/named/chroot/
  3. 查看配置文件/etc/named.conf
  #  vim  /etc/named.conf
  7 // See /usr/share/doc/bind*/sample/ for example named configuration files.      # 该目录中可以查看named配置案例
12 options {                                       # options是全局服务器的配置选项,在这里指定的参数,对配置中的任何区域都有效
13         listen-on port 53 { 127.0.0.1; };       # 指定域名服务监听的网络端口,建议写本机IP,减少服务器消耗
14         listen-on-v6 port 53 { ::1; };
15         directory       "/var/named";           # 指定named从/var/named目录下读取DNS数据文件
16         dump-file       "/var/named/data/cache_dump.db";        # 当执行导出命令时将DNS服务器的缓存数据存储到指定的文件中
17         statistics-file "/var/named/data/named_stats.txt";      # 指定named服务的统计文件,当执行统计命令时会将内存中的统计信息追加到该文件中
18         memstatistics-file "/var/named/data/named_mem_stats.txt";
19         allow-query     { localhost; };         # 允许哪些客户端访问DNS服务,此处改为“any”,表示任意主机
20
31         recursion yes;                          # 开启递归查询
32
33         dnssec-enable yes;                      # 开启加密
34         dnssec-validation yes;                  # 在递归查询服务器上开启DNSSEC验证
35
36         /* Path to ISC DLV key */
37         bindkeys-file "/etc/named.iscdlv.key";
38
39         managed-keys-directory "/var/named/dynamic";
40
41         pid-file "/run/named/named.pid";
42         session-keyfile "/run/named/session.key";
43 };
44
45 logging {                                       # named服务的日志文件信息
46         channel default_debug {
47                 file "data/named.run";
48                 severity dynamic;
49         };
50 };
51 # 每一个zone就是定义一个域的相关信息以及指定了named服务从哪些文件中获得DNS各个域名的数据文件
52 zone "." IN {                           # 根(.)域的配置及信息(配置缓存域名服务器,可以自己去了解)
53         type hint;                      # 服务器类型
54         file "named.ca";                # 文件路径位置
55 };
56
57 include "/etc/named.rfc1912.zones";     # include代表该文件是子配置文件
58 include "/etc/named.root.key";  4. 域名服务器的配置
  配置步骤:

  •   编辑/etc/named.rfc1912.zones     --记录你的域和域对应的数据文件在哪
  •   编辑/var/named/data/*.zone       --就是数据文件,记录域名和IP的对应
  例1:正向解析(将域名解析成IP)
  (一)修改DNS服务的配置文件
  #  vim  /etc/named.conf                                         --主配置文件
options {
        listen-on port 53 { 192.168.8.88; };    # 将127.0.0.1改为本机IP:192.168.8.88
        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     { any; };               # 将localhost改为any,表示所有人都能对我的DNS服务进行查询
DSC0005.jpg

  (二)添加域的信息写在子配置文件
#  vim  /etc/named.rfc1912.zones          --文件最后添加正向解析数据文件的信息
zone "test.com" IN {
        type master;
        file "data/test.com.zone";
};
DSC0006.jpg

  (三)编辑正向解析文件
  #  vim  /var/named/data/test.com.zone   --编辑正向解析文件(将域名解析成IP)

$TTL 1D                 # 缓存时间
@       IN SOA  dns.test.com. dns.www.test.com. (
                                        20171224      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@                       IN      NS      dns.test.com.           # DNS服务器的域名地址
dns.test.com.           IN      A       192.168.8.88            # DNS服务器的IP地址
@                       IN      MX 10   mail.www.test.com.      # 邮件服务器的域名地址
mail.www.test.com.      IN      A       192.168.8.4             # 邮件服务器IP地址
www.test.com.           IN      A       192.168.8.88            # 域名为test.com的IP地址
ftp.test.com.           IN      A       192.168.8.3             # 域名为ftp的IP地址
DSC0007.jpg


  •   serial:序列号。可以供从服务器判断何时获取新数据的,这里我设成今天的日期。更新数据文件必须要更新这个序列号,否则从服务器将不更新
  •   refresh:指定多长时间从服务器要与主服务器进行核对
  •   retry:如果从服务器试图检查主服务器的序列号时,主服务器没有响应,则经过这个时间后将重新进行检查
  •   expire:将决定从服务器在没有主服务器的情况下权威地持续提供域数据服务的时间长短
  •   minimum:高速缓存否定回答的存活时间
  •   SOA记录:每个区仅有一个SOA记录,该区一直延伸到遇见另一个SOA记录为止。SOA记录包括区的名字,一个技术联系人和各种不同的超时值
  •   IN记录:使用“IN”,对应的是internet
  •   A记录:是DNS数据库的核心。一个主机必须为它的每个网络接口得到一条A记录
  •   NS记录:识别对一个区有权威性的服务器(即所有主服务器和从服务器),并把子域委托给其他机构。
  •   MX记录:电子邮件系统就是使用MX记录来更有效的路由邮件。
  •   PTR记录:从IP地址到主机名的反向映射。与A记录一样,必须为每个网络接口有一条PTR记录。
#  systemctl  restart  named.service            --配置好后,重新DNS服务
  (四)客户端测试
  注意:客户端必须要跟服务器端通信(能ping通)及关闭selinux
#  vim  /etc/resolv.conf                 --修改客户端的DNS服务器
    nameserver 192.168.8.88          --IP为服务器的IP
  以下三个解析命令,仍选其一就可以了。
  #  dig  www.test.com                    --查询DNS包括NS记录,A记录,MX记录等相关信息
  #  nslookup  www.test.com
  #  host  www.test.com                   --测试域名系统工作是否正常
DSC0008.jpg

DSC0009.jpg


  至此,正向解析OK!
  例2:反向解析(将IP解析成域名)
  (一)修改DNS服务的配置文件
#  vim  /etc/named.rfc1912.zones       --文件最后添加反向解析数据文件的信息
zone "8.168.192.in-addr.arpa" IN {      # 域名对应的IP地址网段为192.168.8.0,此处必须按照相同的格式写
        type master;
        file "data/192.168.8.zone";     # 反向解析文件名192.168.8.zone
};
DSC00010.jpg

  (二)编辑反向解析文件
#  vim  /var/named/data/192.168.8.zone
$TTL 1D
@       IN SOA  dns.test.com. dns.www.test.com. (
                                        20171224      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@               IN      NS         dns.test.com.
88              IN      PTR        dns.test.com.
@               IN      MX 10      mail.www.test.com.
4               IN      PTR        mail.www.test.com.
88              IN      PTR        www.test.com.
3               IN      PTR        ftp.test.com.
DSC00011.jpg

#  systemctl  restart  named.service       --配置好后,重启DNS服务
  (三)客户端测试
  注意:客户端必须要跟服务器端通信(能ping通)及关闭selinux
#  cat  /etc/resolv.conf                           --修改客户端的DNS服务器
    nameserver 192.168.8.88
#  nslookup  192.168.8.88
# host  192.168.8.88                              --测试域名系统工作是否正常
DSC00012.jpg

  至此,正向解析OK!
  例3:做主从DNS服务器
  准备三台机器
DSC00013.jpg

  (一)主DNS服务器的配置
# vim  /etc/named.conf               --
options {
        listen-on port 53 { 192.168.8.88; };    # (主)DNS服务器的IP
        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     { any; };               # 将localhost改为any,表示所有人都能对我的DNS服务进行查询
#  vim  /etc/named.rfc1912.zones
zone "test.com" IN {
        type master;
        file "data/test.com.zone";
        allow-transfer {192.168.8.66;};               # 指定(从)域名服务器IP
};
zone "8.168.192.in-addr.arpa" IN {
        type master;
        file "data/192.168.8.zone";
        allow-transfer {192.168.8.66;};               # 指定(从)域名服务器IP
};
DSC00014.jpg

  (二)(主)编辑正向解析文件
# vim  /var/named/data/test.com.zone
$TTL 1D
@       IN SOA  dns1.test.com. dns1.www.test.com. (
                                        20171224      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@                       IN      NS      dns1.test.com.
dns1.test.com.          IN      A       192.168.8.88    # DNS服务器(主)的IP地址
@                       IN      NS      dns2.test.com.
dns2.test.com.          IN      A       192.168.8.66    # DNS服务器(从)的IP地址
www.test.com.           IN      A       192.168.8.88    # 域名为test.com的(主)IP地址
www.test.com.           IN      A       192.168.8.66    # 域名为test.com的(从)IP地址
DSC00015.jpg

  (三)(主)反向解析文件
  #  vim /var/named/data/192.168.8.zone

$TTL 1D
@       IN SOA  dns1.test.com. dns1.www.test.com. (
                                        20171224      ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@               IN      NS      dns1.test.com.
88              IN      PTR     dns1.test.com.
@               IN      NS      dns2.test.com.
66              IN      PTR     dns2.test.com.
88              IN      PTR     www.test.com.   # 域名为test.com的(主)IP地址
66              IN      PTR     www.test.com.   # 域名为test.com的(从)IP地址
DSC00016.jpg

#  systemctl  restart  named.service          --配置好后,重启(主)DNS服务
  (四)(从)DNS服务器的配置
  1、重新开启一台linux虚拟主机,IP为192.168.8.66
  2、服务的安装与配置
#  yum  -y  install  bind*
  #  vim  /etc/named.conf

options {
        listen-on port 53 { 192.168.8.88; };    # (从)DNS服务器的IP
        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     { any; };               # 将localhost改为any,表示所有人都能对我的DNS服务进行查询
#  vim  /etc/named.rfc1912.zones
zone "test.com" IN {
        type slave;                             # 服务器类别,slave为(从)域名服务器选项
        file "data/test.com.zone";
        allow-transfer {192.168.8.88;};         # 指定(主)域名服务器IP
};
zone "8.168.192.in-addr.arpa" IN {
        type slave;                             # 服务器类别,slave为(从)域名服务器选项
        file "data/192.168.8.zone";
        allow-transfer {192.168.8.88;};         # 指定(主)域名服务器IP
};
DSC00017.jpg

  3. 编辑正向解析文件与反向解析文件,可直接从(主)DNS服务器中拷贝
# scp  192.168.8.88:/var/named/data/test.com.zone  /var/named/data/test.com.zone
# scp  192.168.8.88:/var/named/data/192.168.8.zone  /var/named/data/192.168.8.zone
DSC00018.jpg

#  systemctl  restart  named.service     --配置好后,重启(从)DNS服务
  (五)客户端测试
# vim  /etc/resolv.conf             --添加以下参数  nameserver 192.168.8.88      --(主)DNS服务IP
nameserver 192.168.8.66      --(从)DNS服务IP
#  nslookup  www.test.com  #  nslookup  192.168.8.88
# nslookup  192.168.8.66
DSC00019.jpg

  至此,DNS服务器主从正反向解析OK!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-449426-1-1.html 上篇帖子: centos 6.9安装jira 7.6.0 下篇帖子: centos6.9安装confluence 6.5.0
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表