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

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

[复制链接]

尚未签到

发表于 2018-5-11 08:31:45 | 显示全部楼层 |阅读模式
  由于人类对于数字远远不如文字来得敏感,偏偏计算机的世界中仅认识0,1而已。为了将两者结合起来,于是就有了主机名称与IP的对应,这个对应的协议就是DNS。
  DNS的作用就是正向将ip地址解析为域名,人们记忆起来会比较方便。本篇文章将会介绍如何在linux下部署dns服务器。
  以下是部署dns的过程:

  •   基本场景
  某单位需要配置两台 DNS 服务器来实现域名解析。
DSC0000.gif

您的实验环境的 IP 地址
ns1.abc.local  ns2.abc.local
192.168.1.241  192.168.1.242
  需要完成以下域名的解析:
  ftp.abc.local
  10.0.0.1
  mailsrv1.abc.local 10.0.0.2
  smtp.abc.local
  10.0.0.2
  pop3.abc.local
  10.0.0.2
  www.abc.local
  10.0.0.3、10.0.0.4(两个主机,以平衡负荷)
  smtp 及 pop3 需要使用 CNAME 来进行解析。同时,需要实现反向地址解析。
  2. 实验环境
  2.1. 服务器安装
  # cat /etc/redhat-release
  Red Hat Enterprise Linux Server release 6.4 (Santiago)
  # uname -a
  Linux localhost.localdomain 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29
  11:47:41 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
  2.2. 服务器基本配置
  ns1.abc.local 的配置。
  修改 IP 地址。 (注意:根据您的实现环境进行配置)
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.241
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
修改主机名
# vi /etc/sysconfig/network
NETWORKING=yes
#HOSTNAME=localhost.localdomain
HOSTNAME=ns1.abc.local

  重新启动以便主机名更改生效
  # reboot
  为了方便实验,将防火墙关闭
  # service iptables stop
  # chkconfig iptables off
  同时关闭 selinux (这时十分重要的,不然很多都是实现不了)
  # vi /etc/sysconfig/selinux
  # This file controls the state of SELinux on the system.
  # SELINUX= can take one of these three values:
  #     enforcing - SELinux security policy is enforced.
  #     permissive - SELinux prints warnings instead of enforcing.
  #     disabled - No SELinux policy is loaded.
  #SELINUX=enforcing
  SELINUX=disabled
  # SELINUXTYPE= can take one of these two values:
  #     targeted - Targeted processes are protected,
  #     mls - Multi Level Security protection.
  SELINUXTYPE=targeted
  与此类似,修改 ns2.abc.local 的配置。
  3. DNS 客户机配置
  修改/etc/resolv.conf 将 DNS 服务器配置
  # vi /etc/resolv.conf
  nameserver 192.168.1.241
  nameserver 192.168.1.242
  测试解析域名 www.sina.com.cn
  # nslookup www.sina.com.cn
  ;; connection timed out; trying next origin
  ;; connection timed out; no servers could be reached
  问题:为什么无法解析?
  回答:本机 DNS 服务器没有启动,通过以下命令检查 named 是否启动
  # ps aux | grep named
  root      1776  0.0  0.0 103236   860 pts/0    S+   20:15   0:00 grep named
  切换 DNS 服务器,再重新进行尝试
  # nslookup
  > server 202.102.224.68 (指向另一台服务器,外网)
  Default server: 202.102.224.68
  Address: 202.102.224.68#53
  > www.sina.com.cn
  Server:         202.102.224.68
  Address:        202.102.224.68#53
  Non-authoritative answer: (非权威应答,意思是从别的dns服务器那里得到的答案,这个提示是正常的,因为总是有人会误以为是错误的)
  www.sina.com.cn canonical name = jupiter.sina.com.cn.
  jupiter.sina.com.cn     canonical name = polaris.sina.com.cn.
  Name:   polaris.sina.com.cn
  Address: 202.108.33.60
  > exit
  问题:为什么这样可以解析?
  回答:切换了 DNS 服务器,而且本机可以访问 Internet
  4. DNS 服务器组件安装
  4.1. 通过 rpm 来进行安装
# mkdir /mnt/cdrom
# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/sr0 is write-protected, mounting read-only  
# cd /mnt/cdrom/Packages/
# ls bind*
bind-9.8.2-0.17.rc1.el6.x86_64.rpm         
bind-dyndb-ldap-2.3-2.el6.x86_64.rpm   
bind-libs-9.8.2-0.17.rc1.el6.x86_64.rpm
bind-chroot-9.8.2-0.17.rc1.el6.x86_64.rpm  
bind-libs-9.8.2-0.17.rc1.el6.i686.rpm  
bind-utils-9.8.2-0.17.rc1.el6.x86_64.rpm
# rpm -Uvh bind-9.8.2-0.17.rc1.el6.x86_64.rpm  
error: Failed dependencies:
        portreserve is needed by bind-32:9.8.2-0.17.rc1.el6.x86_64
# rpm -Uvh bind-9.8.2-0.17.rc1.el6.x86_64.rpm \
portreserve-0.0.4-9.el6.x86_64.rpm  
Preparing...                ########################################### [100%]
   1:portreserve           ########################################### [ 50%]
   2:bind                 ########################################### [100%]

  4.2. 通过 yum 来进行安装
  还可以通过 yum 来进行安装,前提条件是配置过 yum 的 repositories
  还有如果你的虚拟机是可以联网的,就不用再配置yum库了,直接用下面的命令从网上下载资源安装
  #  yum -y install bind
  4.3. 基本配置
  查看配置文件
  # rpm -qc bind
  /etc/logrotate.d/named
  /etc/named.conf
  /etc/named.iscdlv.key
  /etc/named.rfc1912.zones
  /etc/named.root.key
  /etc/rndc.conf
  /etc/rndc.key
  /etc/sysconfig/named
  /var/named/named.ca
  /var/named/named.empty
  /var/named/named.localhost
  /var/named/named.loopback
  其中,/etc/named.conf 为主配置文件。
  新开一个会话,通过 tail -f 命令观察日志:
  # tail -f /var/log/messages
  

  启动服务
  # service named start
  Generating /etc/rndc.key:
  第一次生成 key 会慢一些。
[  OK  ]

  Starting named:                                            [  OK  ]
  生成 key 慢,这是一个已知的问题。以后就不会出现此问题了。
  # service named restart
  Stopping named: .                                          [  OK  ]
  Starting named:                                            [  OK  ]
  速度很快
  # ps aux | grep named
  named     1862  0.0  0.5 159204 11048 ?  Ssl  20:33   0:00 /usr/sbin/named -u named
  root      1870  0.0  0.0 103236   860 pts/0    S+   20:35   0:00 grep named
  修改配置文件。
  在修改之前,先进行备份,这是一个好习惯
  # cp /etc/named.conf  /etc/named.conf.original
  # netstat -an | grep :53
  tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN
  tcp        0      0 ::1:53                      :::*                        LISTEN
  udp        0      0 127.0.0.1:53                0.0.0.0:*
  udp        0      0 ::1:53
  # vi /etc/named.conf
  注意配置文件中的分号
  建议:先将原有配置注释,再写新的配置,如下所示
  options {
  //listen-on port 53 { 127.0.0.1; };
  listen-on port 53 { any; };
  将 dnssec 设置"yes"修改为 no,示例如下:
  //dnssec-enable yes;
  dnssec-enable no;
  //dnssec-validation yes;
  dnssec-validation no;
  dnssec-lookaside auto;
  将 allow-query 设置修改为 any,示例如下:
  //allow-query     { localhost; };
  allow-query     { any; };
  

  重新启动服务
# service named restart
Stopping named: .                                          [  OK  ]
Starting named:                                            [  OK  ]
# netstat -an | grep :53
tcp        0      0 192.168.1.241:53            0.0.0.0:*                   LISTEN      
tcp        0      0 127.0.0.1:53                0.0.0.0:*                   LISTEN      
tcp        0      0 ::1:53                      :::*                        LISTEN      
udp        0      0 192.168.1.241:53            0.0.0.0:*                                
udp        0      0 127.0.0.1:53                0.0.0.0:*                                
udp        0      0 ::1:53
# chkconfig named on
# chkconfig --list named
named           0:off   1:off   2:on    3:on    4:on    5:on    6:off

  此时的 DNS 服务器是 cache only 服务器,只有 root 域的记录。
  5. 主 DNS 服务器配置
  5.1. 创建正向 ZONE
  # vi /etc/named.conf
  会看到 directory       "/var/named";
  配置文件的目录中/var/named
  在配置文件的后面添加如下信息
  zone "abc.local" IN {
  type master;
  file "abc.local.zone";
  };
  # cd /var/named/
  # ls
  data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
  使用空白模板来进行创建新的 zone 文件
  # cp named.empty abc.local.zone
  # vi abc.local.zone
  $TTL 3H
  @       IN SOA  ns1.abc.local. admin.abc.local. (
  0       ; seria 序列号
  1D      ; refresh 辅助域名服务器多少时间更新数据
  1H      ; retry 若辅助域名服务器更新数据失败,多少时间再试
  1W      ; expire 若辅助域名服务器无法从主服务器上更新数据,原有数据有效期
  3H )    ; minimum 若资源记录没有设定 TTL,则以此 TTL 为准
  NS   ns1.abc.local.
  ns1        A    192.168.1.241
  ftp        A    10.0.0.1
  mailsrv1   A    10.0.0.2
  www     A       10.0.0.3
  www     A       10.0.0.4
  smtp    CNAME   mailsrv1.abc.local.
  pop3    CNAME   mailsrv1.abc.local.
  修改新创建配置文件的属主。
  # chown root:named /var/named/abc.local.zone
  # rndc status
  修改配置之后,有两种方法以修改生效
  方法 1:重新启动服务
  # service named restart
  Stopping named:                                            [  OK  ]
  Starting named:                                            [  OK  ]
  方法 2:使用 rndc
  # rndc reload
  server reload successful
  测试一下:
  # nslookup ns1.abc.local
  # nslookup mailsrv1.abc.local
  # nslookup smtp.abc.local
  # nslookup pop3.abc.local
  # nslookup www.abc.local
  # nslookup www.abc.local
  注意观察,两次对 www.abc.local 解析的结果的不同
  Server:         192.168.1.241
  Address:        192.168.1.241#53
  # rndc status
  version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6
  CPUs found: 1
  worker threads: 1
  number of zones: 20
  增加了一个 zone
  debug level: 0
  xfers running: 0
  xfers deferred: 0
  soa queries in progress: 0
  query logging is OFF
  recursive clients: 0/0/1000
  tcp clients: 0/100
  server is up and running
  5.2. 创建反向 ZONE
  # vi /etc/named.conf
  在配置文件的后面添加如下信息,这里一定要写反向的地址
  zone "0.0.10.in-addr.arpa" IN {
  type master;
  file "10.0.0.zone";
  };
  # cd /var/named/
  # cp abc.local.zone  10.0.0.zone
  # vi 10.0.0.zone
  修改配置文件,内容如下:
  $TTL 3H
  @       IN SOA  ns1.abc.local. admin.abc.local. (
  0       ; serial
  1D      ; refresh
  1H      ; retry
  1W      ; expire
  3H )    ; minimum
  NS       ns1.abc.local.
  1      PTR      ftp.abc.local.
  2      PTR      mailsrv1.abc.local.
  3      PTR      www.abc.local.
  4      PTR      WWW.abc.local.
  ~
  修改新创建配置文件的属主。
  # chown root:named /var/named/10.0.0.zone
  # rndc reload
  server reload successful
  查看日志文件中是否有错误信息
  # rndc status
  version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6
  CPUs found: 1
  worker threads: 1
  number of zones: 21
  增加了一个 zone
  debug level: 0
  xfers running: 0
  xfers deferred: 0
  soa queries in progress: 0
  query logging is OFF
  recursive clients: 0/0/1000
  tcp clients: 0/100
  server is up and running
  验证一下
  # nslookup 10.0.0.1
  Server:         192.168.1.241
  Address:        192.168.1.241#53
  1.0.0.10.in-addr.arpa   name = ftp.abc.local.
  # nslookup 10.0.0.2
  Server:         192.168.1.241
  Address:        192.168.1.241#53
  2.0.0.10.in-addr.arpa   name = mailsrv1.abc.local.
  # nslookup 10.0.0.3
  Server:         192.168.1.241
  Address:        192.168.1.241#53
  3.0.0.10.in-addr.arpa   name = www.abc.local.
  # nslookup 10.0.0.4
  Server:         192.168.1.241
  Address:        192.168.1.241#53
  4.0.0.10.in-addr.arpa   name = WWW.abc.local.
  6. 配置转发器
  场景:
  缺省情况下, DNS 服务器为会为不在本机所管理的域信息通过迭代的方式从根服务器查
  起。由于多数根服务器主要在国外,速度比较慢。现在希望通过配置转发器,将查询发给本
  地 ISP 的 DNS 服务器以提高效率。
  以郑州为例,可以使用:
  网通:202.102.224.68、202.102.227.68
  电信:219.150.150.150
  操作:
  修改 DNS 主配置文件
  # vi /etc/named.conf
  在全局配置语句 option 中添加 forwarders 配置,注意分号
  options {
  ……
  forwarders {202.102.224.68; 202.102.227.68; 219.150.150.150; };
  };
  需要重新启动 DNS 服务
  # service named  restart
  我们可以通过 tcpdump 等抓包工具来查看是否进行了转发。
  # tcpdump -n port 53
  再打开一个会话,运行以下命令使用# nslookup www.msn.com 命令触发一个解析
  请求。
  观察 tcpdump 的输出结果
  tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
  listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
  11:39:25.862065 IP 192.168.1.241.60113 > 202.102.227.68.domain: 58544+% [1au] A?
  www.msn.com. (40)
  11:39:25.862190 IP 192.168.1.241.62826 > 202.102.227.68.domain: 57413+ [1au] NS? . (28)
  11:39:26.108518 IP 202.102.227.68.domain > 192.168.1.241.60113: 58544 2/0/1 CNAME
  us.co1.cb3.glbdns2.microsoft.com., A 131.253.13.140 (99)
  11:39:26.108755 IP 202.102.227.68.domain > 192.168.1.241.62826: 57413 13/0/11 NS
  e.root-servers.net., NS j.root-servers.net., NS m.root-servers.net., NS g.root-servers.net., NS
  b.root-servers.net., NS h.root-servers.net., NS f.root-servers.net., NS a.root-servers.net., NS
  k.root-servers.net., NS c.root-servers.net., NS l.root-servers.net., NS i.root-servers.net., NS
  d.root-servers.net. (423)
  11:39:26.109540 IP 192.168.1.241.25836 > 202.102.224.68.domain: 61158+% [1au] A?
  us.co1.cb3.glbdns2.microsoft.com. (61)
  11:39:26.110633 IP 202.102.224.68.domain > 192.168.1.241.25836: 61158 1/0/1 A
  131.253.13.140 (77)
  可以看到,随机的转发到202.102.227.68上,查询到结果,解析出了www.msn.com
  7. 辅助 DNS 服务器配置
  场景:
  为了提高域名服务可靠性,防止单点失败,企业新添加一个 DNS 服务器。由它作为
  abc.local 的辅助 DNS 服务器。
  辅助名称服务主机为 ns2,IP 地址为 192.168.1.242
  7.1. DNS 组件安装
  与主 DNS 安装类似.
  # mount /dev/cdrom /mnt/cdrom/
  # cd /mnt/cdrom/Packages/
  # rpm -ivh bind-9.8.2-0.17.rc1.el6.x86_64.rpm \
  bind-libs-9.8.2-0.17.rc1.el6.x86_64.rpm  \
  portreserve-0.0.4-9.el6.x86_64.rpm
  7.2. 配置 Zone 传递
  在 NS1 上修改配置主配置文件,添加 ns2 的 NS 及 AY 记录。
[root@ns1 ~]# vi /var/named/abc.local.zone

  $TTL 3H
  @       IN SOA  ns1.abc.local. admin.abc.local. (
  0       ; serial
  1D      ; refresh
  1H      ; retry
  1W      ; expire
  3H )    ; minimum
  NS   ns1.abc.local.
  NS   ns2.abc.local.
  

运维网声明 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-458400-1-1.html 上篇帖子: Linux--redhat linux图形界面切换到字符界面 下篇帖子: RedHat7.0虚拟机VMware安装,提示没有选择磁盘
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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