Linux下搭建DNS 服务器

CentOS6.6DNS服务器的搭建

Linux下的DNS的软件包为bind,有如下几个软件包:

bind           #DNS服务的主程序

bind-utils # 工具,包含dig,nslookup等网络诊断工具。

bind-chroot      # 修改named 的root目录,这样named被入侵后,黑客也被限制在指定的目录下,不能切换到/,避免造成更大的破坏。【下面的演示中,为了简单起见就没安装该组件】

# 安装bind软件包

yuminstall bind bind-utils -y

# 查看bind 、bind-utils生成哪些文件(仅列出部分文件)

[[email protected] ~]# rpm -ql bind  

/etc/named

/etc/named.conf                                  #主配置文件

/etc/named.rfc1912.zones               #事先定义好的区域文件

/etc/named.root.key                          # 实现事物签名的秘钥文件

/var/named                                           # 默认DNS解析记录的数据文件

/var/named/slaves                              # 从DNS的配置文件目录

[[email protected] ~]# rpm -ql bind-utils

/usr/bin/dig      # 域信息搜索器

/usr/bin/host

/usr/bin/nslookup

说明:dig(DNS lookup utility)域信息搜索器命令。

dig的常用命令格式:

dig –t 资源记录类型名称@server-ip

dig –x IP @DNS_IP      反向解析

dig –t axfr zone            验证完全区域传送

dig –t ixfr zone     验证增量区域传输(通常需要指定序列号)

named-checkconf工具

格式:named-checkconf [主配置文件]

例如:named-checkconf /var/named/named.conf

named-checkzone工具

格式:named-checkzone <域名> <区域数据文件>

例如:named-checkzone /var/named/student.com

实验一:本地搭建DNS服务器,实现指定域名的解析

vi/etc/named,conf 内容如下:

options {
         listen-onport 53 { 192.168.2.7; };             # 在本机192.168.2.7的53端口监听
//      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     { 192.168.2.0/24; };
         #any表示允许所有,这样会导致网络结构泄露。一般不建议这样设置
         #192.168.2.0/24表示网段,192.168.2.112表示指定IP
         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";
};
 
logging {
        channel default_debug{
                file"data/named.run";
                severitydynamic;
        };
};
 
zone "." IN {
         type hint;
         file"named.ca";
};
 
zone "stu13.com." IN {                    #区域名称为stu13.com,后面的配置中就是用@代替这个区域的
         typemaster;
         file"stu13.com.zone";
};
 
zone "2.168.192.in-addr.arpa" IN {
         typemaster;
         file"2.168.192.arpa";
};
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

# 编写名称解析数据文件

cd/var/named/

touch  stu13.com.zone 2.168.192.arpa

chownroot:named /var/named/2.168.192.arpa

chownroot:named /var/named/stu13.com.zone

chmod644 /var/named/2.168.192.arpa

chmod644 /var/named/stu13.com.zone

注意:

必须要修改解析库文件的属组为named

vistu13.com.zone ,正向解析的文件内容如下:

$TTL 1D
@ IN SOA stu13.com. admin.stu13.com. (
                                     2015092010
                                     1M
                                     5M
                                     1H
                                     1D)
 
                   IN NS                  ns1.stu13.com.
                   IN MX  10       mail
ns1            IN A                    192.168.2.7
mail          IN A                    192.168.2.7
www         IN A                    192.168.2.7
www         IN A                    192.168.2.9
ftp             IN CNAME        192.168.2.8
www0      IN CNAME        www
www1      IN CNAME        www

# 说明:上面的www 有2条A记录,DNS解析到192.168.2.7和192.168.2.9,可以达到负载均衡的效果。

 

正向解析的文件格式如下:

$TTL 1D    ;定义TTL为1天

; 必须首先定义一个SOA记录,@代表相应的区域,每个区域数据文件只能有一个SOA。SOA后面跟的是这个区域的授权主机名称,和管理者的邮箱。

@ IN  SOA  demo.com. Admin.demo.com. (  # 注意区域地址、管理员邮箱地址 的 点号不能忘掉

               20150914027  ; 序列号,该序号不更新的话,任何所做的更改都不会同步到其他DNS服务器上【不超过10位】

                1M  ; 定义辅助DNS每隔多久检查一次主DNS服务器的版本号

               5M  ; 同步失败后,再次重试需要的间隔时间

               1H  ; 过期时间(超过该时间主DNS还没有响应,辅助DNS也停止工作)

              1D) ; 否定答案的缓存时长

说明: M分钟、H小时、D天、W周。默认是秒

vi2.168.192.in-addr.arpa,反向解析的文件内容如下:

$TTL 1D
@     IN     SOA           stu13.com.       admin.stu13.com. (
                                     2015032312
                                     1M
                                     5M
                                     1H
                                     1D)
 
         IN     NS           ns1.stu13.com.
7       IN     PTR           www.stu13.com.
9       IN     PTR           www.stu13.com.
7       IN     PTR           www0.stu13.com.
8       IN     PTR           ftp.stu13.com.
7       IN     PTR           mail.stu13.com.
7       IN     PTR           www1.stu13.com.

说明

反向区域文件基本结构和正向区域数据文件基本完全相同,只不过这里多出了一个PTR选项。

PTR用来定义一个反向记录,也就是通过IP可以查到对应的域名信息。最后几行的第一列表示是主机的IP地址,只不过省略了网络地址部分,系统会自动补全,如13对应的是192.168.2.13

service named start        #启动dns服务器

# dig命令进行访问测试

1.正向解析:

dig -t a www1.stu13.com @192.168.2.7

dig -t a ftp.stu13.com @192.168.2.7

2.反向解析

DNS服务器本机上测试

windows7 上测试:

实验二:构建主从DNS服务器,实现指定域名的解析

在实验1的基础上,

修改Master服务器的/etc/named.conf文件,

options {
         listen-onport 53 { 192.168.2.7; };
         directory          "/var/named";
         dump-file         "/var/named/data/cache_dump.db";
         allow-query     { 192.168.2.0/24; };
         recursion yes;          
 
........
 
zone "." IN {
         type hint;
         file"named.ca";
};
 
zone "stu13.com" IN {
         typemaster;
         allow-transfer{ 192.168.2.12;};
         file"stu13.com.zone";
};
 
zone "2.168.192.in-addr.arpa" IN {
         typemaster;
         allow-transfer{ 192.168.2.12;};
         file"2.168.192.arpa";
};
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

vi /var/named/stu13.com.zone内容如下:

$TTL 1D
@  IN  SOA  stu13.com.  admin.stu13.com.  (
                                     2015092010
                                     1M
                                     5M
                                     1H
                                     1D)
 
          IN   NS                ns1.stu13.com.
          IN   NS                ns2.stu13.com.     ;Slave也要在这里配置个NS记录
          IN   MX  10            mail
ns1       IN    A                192.168.2.7
ns2       IN    A                192.168.2.12        ; Slave也要在这里配个A记录
mail      IN    A                192.168.2.7
www       IN    A                192.168.2.7
www       IN    A                192.168.2.9
ftp       IN CNAME               192.168.2.8
www0      IN CNAME               www
www1      IN CNAME               www

编辑/var/named/2.168.192.arpa ,内容如下:

$TTL 1D
@   IN  SOA    stu13.com.  admin.stu13.com.  (
                2015032315
                1M
                5M
                1H
                1D )
 
    IN  NS     ns1.stu13.com.
    IN  NS     ns2.stu13.com.
7   IN  PTR    www.stu13.com.
7   IN  PTR    ns1.stu13.com.                                                           
12  IN  PTR    ns2.stu13.com.
9   IN  PTR    www.stu13.com.
7   IN  PTR    www0.stu13.com.
7   IN  PTR    www1.stu13.com.
8   IN  PTR    ftp.stu13.com.
7   IN  PTR    mail.stu13.com.

# 配置SlaveDNS服务器

vi/etc/named.conf

options {
         listen-onport 53 { 192.168.2.12; };          # 本机地址
         directory          "/var/named";
         dump-file         "/var/named/data/cache_dump.db";
         allow-query     { 192.168.2.0/24; };
         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";
};
 
logging {
        channel default_debug{
                file"data/named.run";
                severitydynamic;
        };
};
 
zone "." IN {
         type hint;
         file"named.ca";
};
 
zone "stu13.com." IN {
         typeslave;
         masters{ 192.168.2.7; };
         file"slaves/stu13.com.zone";
};
 
zone "2.168.192.in-addr.arpa" IN {
         typeslave;
         masters{ 192.168.2.7; };
         file"slaves/2.168.192.arpa";
};
 
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

servicenamed restart     # 重启named服务即可

ls/var/named/slaves       # 查看目录下是否同步到了dns数据库文件,正常同步后,目录下应该有类似下图的2个文件生成。

# 如果无法正常工作,请tail查看日志  :tail -n 50 /var/log/messages | grep named


补充:

Slave端DNS服务首次启动,可以先执行一次dig axfrstu13.com @192.168.2.7,完全区域传输一下解析文件。

# 然后在slave上执行dig命令测试


# 修改主配置,查看从能同步

修改下Master的解析库文件(修改主的解析条目的时候,必须一并将serial改大些,否则Slave检测到serial数值未变大,不会更新)

然后再在Slave上执行rndc reload,发现Slave的解析库文件内容也同步了,说明主从同步实验成功。

# 还可以将Master的服务暂时停掉,测试slave能否工作:

dig -t a www1.stu13.com @192.168.2.12

如下图,dig命令仍然返回结果,说明我们的slave在工作中:

实验三:缓存DNS服务器的搭建

缓存服务器的构建,比较简单,就是在最原始的配置文件中修改:

listen-onport 53 { ***.***.***.***; };

allow-query   { ** };

然后在options {};容器里面加入forwarders { IP(这是主域名服务器的ip地址);};

例如:

options {
         listen-on port 53 {***.***.***.***; };
         directory          "/var/named";
         dump-file         "/var/named/data/cache_dump.db";
         allow-query     { **; };
         recursion yes;
         forwarders{192.168.2.7;192.168.2.12; };                #格式: forwarders{ IP(这是主域名服务器的ip地址);};
         ....下面都是最原始的文件named.conf ......
}

然后执行service named start即可。

实验四:单台DNS构建分离解析

# 配置过程中主从+分离解析一直出现问题。因此这里先以单台DNS构建分离解析。

Client_1:192.168.2.10/24

Client_2:192.168.2.11/24

DNS_Server:192.168.2.7/24

具体操作如下:

vi /etc/named.conf 编辑内容如下:

options {
         listen-on port 53 {192.168.2.7; };
         directory          "/var/named";
         dump-file         "/var/named/data/cache_dump.db";
         allow-query     { 192.168.2.0/24; };
         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";
};
 
logging {
        channel default_debug{
                file"data/named.run";
                severitydynamic;
        };
};
 
view "local" {
match-clients {192.168.2.10; };                 # 客户端地址是192.168.2.10的匹配local规则
 
zone "." IN {
         type hint;
         file "named.ca";
};
zone "stu13.com." IN {
         type master;
         file"stu13.com.zone.local";
};
zone "2.168.192.in-addr.arpa" IN {
         type master;
         file"2.168.192.arpa.local";
};
 
};
 
view "others" {
match-clients { any; };                                  # 客户端地址非192.168.2.10的匹配others规则
 
zone "." IN {
         type hint;
         file"named.ca";
};
zone "stu13.com." IN {
         type master;
         file"stu13.com.zone.others";
};
zone "2.168.192.in-addr.arpa" IN {
zone "2.168.192.in-addr.arpa" IN {
         type master;
         file"2.168.192.arpa.others";
};
};
 
# include "/etc/named.rfc1912.zones";           # 注释掉这一行
include "/etc/named.root.key";

# 配置区域解析文件

cd/var/named/

# 简单起见,我先只配置了最基本的www解析

# 配置匹配local的解析文件:

vistu13.com.zone.local

$TTL 86400
@ IN SOA stu13.com. admin.stu13.com. (
                                     2015092019
                                     1M
                                     5M
                                     1H
                                     1D)
 
                     IN    NS                       ns1.stu13.com.
ns1                  IN     A                       192.168.2.7
www                  IN     A                       192.168.2.9

vi2.168.192.arpa.local

$TTL 1D
@     IN     SOA           stu13.com.       admin.stu13.com. (
                                     2015032315
                                     1M
                                     5M
                                     1H
                                     1D)
 
         IN     NS           ns1.stu13.com.
7       IN     PTR           ns1.stu13.com.
9       IN     PTR           www.stu13.com.

# 配置匹配others的解析文件:

vistu13.com.zone.others

$TTL 86400
@ IN SOA stu13.com. admin.stu13.com. (
                                     2015092019
                                     1M
                                     5M
                                     1H
                                     1D)
 
             IN      NS                       ns1.stu13.com.
ns1          IN      A                        192.168.2.7
www          IN      A                        192.168.2.3

vi2.168.192.arpa.others

$TTL 1D
@     IN     SOA           stu13.com.       admin.stu13.com. (
                                     2015032315
                                     1M
                                     5M
                                     1H
                                     1D)
 
         IN     NS              ns1.stu13.com.
7       IN     PTR              ns1.stu13.com.
3       IN     PTR              www.stu13.com.

chownroot:named 2.168.192.arpa* stu13.com.zone*          #修改数据文件的属组

named-checkconf    # 检查下语法

rndcreload       # 重启named服务

# 在不同的客户端进行访问测试

在Client1和Client2上执行dig -t A www.stu13.com @192.168.2.7

结果如下图,可以看到不同IP访问相同的域名,会自动转到不同的IP上。

时间: 2024-12-15 02:10:06

Linux下搭建DNS 服务器的相关文章

Linux下搭建DNS服务器

一.修改Linux主机名 1.hostname 主机名 [[email protected] named]# hostname ifs.com 2.vi /etc/hosts [[email protected] named]# vi /etc/hosts 127.0.0.1 ns.ifs.com ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6 ~ 3.vim /etc/sysconfi

Linux下搭建DNS服务

Linux下搭建DNS服务器 注:本文主要侧重DNS的配置,原理的话会另发一篇文章~ 一.DNS(域名系统)作用和原理 1.  DNS的作用: 正向解析:根据域名查找对应的IP地址 反向解析:根据IP地址找对应的域名 2.  DNS的工作模式: 递归查询 迭代查询 3.  域名结构 分层式的结构,且上层只管理下层域名,便于管理维护. 二.BIND服务简介 1.Linux下常用的DNS服务是BIND(BerkeleyInternet Name Domain) 官方站点:https://www.is

Linux下搭建DHCP服务器

一.DHCP所需软件包dhcp-common-4.1.1-34.Pl.el6.centos.x86_64dhcp-4.1.1-34.pl.el6.centon.x86_64二.编辑主配置文件 vi/etc/dhcp/dhcpd.conf ddns-update-style interim; ignore client-updates; shared-network ifs {        option domain-name     "ifs.com";        option 

Linux下搭建Apache服务器(完整版)

Linux下搭建Apache服务器(完整版) 什么是Apache? Apache Licence是著名的非盈利开源组织Apache采用的协议.该协议和BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件).需要满足的条件也和BSD类似 Apache主要特点 1.开放源代码.跨平台应用 2.支持多种网页编程语言 3.模块化设计 .运行稳定.良好的安全性 Apache软件版本 1.X  1.目前最高版本是1.3,运行稳定  2.向下兼容性较好,但缺乏一些较新

linux下搭建samba服务器

服务器IP:192.168.4.5 1.安装samba服务软件包 [[email protected] 桌面]# yum -y install samba [[email protected] 桌面]# rpm -q samba samba-3.6.9-164.el6.x86_64 [[email protected] 桌面]# rpm -q samba-client 2.修改配置文件smb.conf 对配置文件做备份 [[email protected] 桌面]# cp /etc/samba/

linux下搭建SVN服务器

最近搞了一台云服务器,尝试部署一些服务器相关的东西,作为开发用服务器,首先考虑搭建的是SVN服务器.记录一下搭建的过程,方便以后查看. 一.安装svn软件,有些云服务器会有安装svn服务器,有些没有. # yum install -y subversion                        //在线安装svn # svnserve --version                                  //检查svn版本 二.创建svn版本库 1.创建一个项目的版本目录

Linux下搭建VPN服务器(CentOS_6_x86+VPS+Shaowsocks)

#Linux下搭建VPN服务器(CentOS_6_x86+VPS+Shaowsocks)前面所搭建Linux下搭建VPN服务器(CentOS_5.9_x86_64.PPTP),因延迟过高,无法满足业务需求,因此公司决定采用CentOS_56_x86+VPS+Shaowsocks方案 公司供给翻译的使用VPN,正常访问境外的网站和观看视频,eg:欧盟经济体新闻发布会下面所介绍的服务器是香港服务器[必须是境外的服务器,或者国内能访问国外网站服务器] 搬瓦工bandwagonhost简单而且性能非常不

LINUX中搭建DNS服务器,实现正向、反向以及访问不同DNS解析

实现目标: 搭建DNS服务器 1)新浪服务器(dns.sina.com) dns.sina.com -->192.168.4.5 www.sina.com-->1.2.3.40 news.sina.com-->1.2.3.45 2)搜狐服务器(dns.sohu.net) dns.sohu.com-->192.168.4.6 movie.sohu.net-->5.6.7.80 study.sohu.net-->5.6.7.85 客户机测试: 向192.168.4.5能查询

Linux下搭建VPN服务器(CentOS、pptp)

本文介绍在安装CentOS操作系统的Xen VPS上,如何搭建PPTP VPN服务.包括PPTP的安装.配置,以及相应的iptables规则.本文暂时不涉及PPTP流量控制的部分,等抽空学明白了FreeRADIUS,再来写续篇.2011年7月20日更新:在安全建议这一部分,增加了使用不同的IP地址,分别提供VPN服务和Web等其他常规服务,以及使用不同IP地址时如何书写iptables规则的内容. 写在前面 在Godaddy一美元COM域名的怂恿下,这几天先是拿到了这个gnailuy.com,然