Linux学习之DNS服务器

概念:

DNS:Domain Name System 域名系统

FQDN:Fully Qualified Domain Name 完整主机名

正向解析:由主机名查IP地址

SOA:开始验证(Start of Authority)的缩写,

NS:名称服务器(Name Server)的缩写

A 地址记录(Ipv4)
AAAA 地址记录(Ipv6)
AFSDB Andrew文件系统数据库服务器记录(应该是一种文件服务器的类型)
ATMA ATM地址记录(不是自动提款机,具体功能不知道)
CNAME 别名记录
HINFO 硬件配置记录,包括CPU、操作系统信息
ISDN 域名对应的ISDN号码
MB 存放指定邮箱的服务器
MG 邮件组记录
MINFO 邮件组和邮箱的信息记录
MR 改名的邮箱记录
MX 邮件服务器记录
NS 名字服务器记录
PTR 反向记录(从IP地址解释域名)
RP 负责人记录
RT 路由穿透记录(不懂)
SRV TCP服务器信息记录(不懂)
TXT 域名对应的文本信息
X25 域名对应的X.25地址记录

关于上面的名词有一些是我找来的,具体的功能我在实验中也没有涉及。如果有懂的朋友还请教我一下。谢谢

反向解析:由IP查询主机名

PTR:指向(PoinTeR)的缩写,后面记录的数据就是反解到主机名

端口:TCP/UDP 53   TCP 用来主从同步数据,UDP用来用户查询

环境:

服务器:CentOS 6.5 final  服务器名:Server.rhce.ce, IP:192.168.88.254

客户端:Windows XP

实验:

/etc/hosts:手动设置主机名和IP的对应关系

/etc/resolv.conf:linux中配置DNS的文件

/etc/nsswitch.conf :设置DNS优先还是hosts优先

安装软件:

bind           bind主程序
bind-utils 客户端查找主机名的相关命令
bind-libs bind相关函数库
bind-chroot 锁定bind默认主目录

主要配置文件

因为安装的chroot,所以bind的主目录是/var/named/chroot/

具体信息可以参考:/etc/sysconfig/named文件

cp -p /etc/named* /var/name/chroot/etc/

cd /var/named

cp -p data/  dynamic/ slaves/ named*  chroot/var/named/

***************************************

/var/name/chroot/etc/named.conf            主配置文件

/var/name/chroot/etc/named.iscdlv.key          

/var/name/chroot/etc/named.rfc1912.zones

/var/name/chroot/etc/named.root.key

######################

/var/name/chroot/var/named/data/

/var/name/chroot/var/named/dynamic/

/var/name/chroot/var/named/slaves/

/var/name/chroot/var/named/named.ca

/var/name/chroot/var/named/named.empty

/var/name/chroot/var/named/named.localhost

/var/name/chroot/var/named/named.loopback

************************************

主配置文件

named.conf

// named.conf

options {
        listen-on port 53 { any; };
//监听
        listen-on-v6 port 53 { any; };
        directory       "/var/named/chroot/etc/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; };
//访问列表,允许的范围
        recursion yes;
//是否允许递归查询
        dnssec-enable yes;
        dnssec-validation yes;

        /* 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";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};
//我配置的正向解析域
zone "rhce.ce" IN {
        type master;
        file "rhce.ce";
};
//反向解析域
zone "88.168.192.in-addr.arpa" IN {
        type master;
        file "88.168.192.in-addr.arpa";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

rhce.ce 正向域

关于解析文件的内容说明,正解文件资源记录(Resource Record RR)格式,RR type 和RR data

$TTL  600   //缓存记忆时间。默认单位秒,可通过M分,H时,D天,W周来设置

Serial:序号代表这个数据库的新旧,越大表示越新,如果有Slave服务器同步是会根据这个判断,一般采用日期的方式设置

Refresh:更新频率,Slave用来判断多久去向Master要求数据更新。

Retry:失败重试时间,由于某些因素导致Slave无法对Master连接,Slave会尝试重新连接,重新连接的时间就是这个

Expire:失效时间,如果尝试一直失败,Slave就会放弃尝试,并且删除这份下载的zone file信息。

Minumun TTL:

一般各参数默认约定,可根据实际情况设定

Serial <2的32次方
Refresh>=Retry*2Refresh+Retry<Expire
Expire>=Retyr*10Expire>=7D

zone 里的类型:hint ,master,slave

zone "." in {type hint;  file "named.ca"; }; 高速缓存DNS."."是DNS的root,仅用来转发请求或缓存

hint:根域使用

master:主域

slave:从域

rhce.ce 正向解析文件

$TTL 1D
@       IN      SOA     server.rhce.ce. server.rhce.ce. (
;域名   class   type    域主机名   管理员邮箱
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       IN      NS      server.rhce.ce.
@       IN      NS      rhce.ce.
@       IN      A       192.168.88.254
server  IN      A       192.168.88.254
@       IN MX   10      rhce.ce.
www     IN      A       192.168.88.254
client  IN      A       192.168.88.1

;@=当前域,rhce.ce

88.168.192.in-addr-arpa  反向解析文件

$TTL 1D
@       IN SOA  server.rhce.ce. server.rhce.ce. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      server.rhce.ce.
254     IN      PTR     server.rhce.ce.
254     IN      PTR     www.rhce.ce.
254     IN      PTR     ftp.rhce.ce.
254     IN      PTR     mail.rhce.ce.
254     IN      PTR     rhce.ce.
1       PTR     client.rhce.ce.

以上是简单的域配置文件及简单的说明

更多的扩展说明

前面我们说了几个DNS的记录类型这里简单的说一下,在我的配置里并没有设置CNAME和AAAA。AAAA就不用讲了,类型类似A,只不过地址是IPV6。这里讲一下CNAME。编辑我们的域配置文件(我的是rhce.ce)添加下面的信息

www     IN      A       192.168.88.254
www1    IN      CNAME   www
www2    IN      CNAME   www
www3    IN      CNAME   www

分别通过通过dig 命令解析出来的结果如下

 dig www1.rhce.ce ;; ANSWER SECTION:
www1.rhce.ce.           86400   IN      CNAME   www.rhce.ce.
www.rhce.ce.            86400   IN      A       192.168.88.254
 dig www2.rhce.ce
;; ANSWER SECTION:
www2.rhce.ce.           86400   IN      CNAME   www.rhce.ce.
www.rhce.ce.            86400   IN      A       192.168.88.254
 dig www3.rhce.ce
;; ANSWER SECTION:
www3.rhce.ce.           86400   IN      CNAME   www.rhce.ce.
www.rhce.ce.            86400   IN      A       192.168.88.254

cache-only DNS Server 设置只有缓存功能的DNS,这个DNS不需要添加其它zone,所以如果设置cache-only 需要删除其它的zone.打开named.conf

options {
        listen-on port 53 { any; };

        listen-on-v6 port 53 { any; };
        directory       "/var/named/chroot/etc/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; };

        recursion yes;
      
        dnssec-enable yes;
        dnssec-validation yes;
        dnssec-lookaside auto;
        forward only;
        forwarders {                            //设置转发服务器
        114.114.114.114;                   //转发服务器地址
        8.8.8.8;
};
        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};
保留logging 和zone ". "

====================================================

双DNS,主从机

简单主从DNS

master

allow-transfer { 192.168.88.1 ;};        //设置仅允许192.168.88.1来同步我的数据,如果不设置则允许所有人同步我的数据

slave

zone "rhce.ce" IN {

  type slave;

  file "slaves/rhce.ce.slave";        //设置从服务器的区域文件名

  masters { 192.168.88.254; };      //指定master的地址

};

======================================================

主从验证设置(TSIG 事务签名)

上面提到使用allow-transfer来设置允许的从服务器, 但是如果客户端修改IP为我指定的DNS服务器的地址也同样可以获取我的配置文件,所以可能通过加密密钥来验证主从关系。

dnssec-keygen   -a   HAMC-MD5   -b   128   -n   HOST   rhce

//使用dnssec-keygen命令添加一下HMAC-MD5加密的,长度为128位的,指定host类型,文件名为rhce。然后会在当前目录生成两个文件,打开以.private结尾的文件,我们需要使用其中的加密信息

master

  allow-transfer { key; };        //修改原来的IP地址为key,使用key验证
        server 192.168.88.253 {        //指明从服务器的是谁
                keys {rhce;};           //指明keys文件的名称
};
        key rhce{                //建立有关key文件的相关数据
        algorithm  hmac-md5;          //加密类型
        secret  Pt8a74gEOy0qoI+odK9gRw==;    //密钥值
};

除allow-transfer外,所有配置文件都需要写在options{} 外面

slave

   server 192.168.88.254 {        //指明主服务器的是谁
                keys {rhce;};           //指明keys文件的名称};
        key rhce{                //建立有关key文件的相关数据
        algorithm  hmac-md5;          //加密类型
        secret  Pt8a74gEOy0qoI+odK9gRw==;    //密钥值
};

注意:密钥名必须对应

视图VIEW ,可以让不能的机器使用DNS获取不同的IP地址解析,这里我们创建了视图,指定了区域,一般在公司了主要分内网和外网,我们其它可以区别内网和外网,内我们使用自己建议的区域文件,外网我就可以直接使用“.” 这个根域进行转发查询

acl rhca{ 192.168.88.0/24;};        //指定acl策略,配置网段或者主机
acl rhce{ 172.30.30.0/24;};
view rhca{                                  //创建一个视图名为rhca,使用rhca配置文件
match-clients{rhca;};                  //指定使用本视图的区域/主机/网段
zone "." IN {
        type hint;
        file "named.ca";
};
zone "rhce.ce" IN {                   //配置文件改变,不改变域名
        type master;
        file "rhca.ca";                   //指定域配置文件
};
};

view rhce{                              //创建一个视图名为rhca,使用rhca配置文件
match-clients{rhce;};              //指定使用本视图的区域/主机/网段
zone "." IN {
        type hint;
        file "named.ca";
};
zone "rhce.ce" IN {                 //配置文件改变,不改变域名
        type master;
        file "rhce.ce";                //指定域配置文件
};
};

====================================================

子域授权

父层服务器.rhce.ce。

rhce.ce域配置文

test    NS      test.rhce.ce.
test    A       192.168.88.253//增加以上两行,test.rhce.ce为子域的服务器名称。并A记录指向IP地址

子域test.rhce.ce

修改named.conf

zone "test.rhce.ce" IN {
        type master;
        forward first;                                            //设置转发优先
        file "test.rhce.ce";
        forwarders {192.168.88.254;};                 //设置转发服务器,父服务器
};
         
//如果我们只一个域的时候,可以把forwarders设置在options里,如果我们有多个域且只想对这个域进行转发就设置在zone里面

test.rhce.ce子域配置文件

$TTL 1D
@       IN SOA  test.rhce.ce. root.test.rhce.ce. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
@       NS      test.rhce.ce.
@       A       192.168.88.253
www     A       192.168.0.80

到此学习的DNS相关的配置全部完成,后期如果有学习到新的DNS功能再补充,下面是一些操作优化及知识扩充

利用RNDC管理DNS服务器

RNDC是在BIND 
version9以后出现的一个功能。它可以轻松管理DNS服务器:检查已经存在的DNS缓存,重新更新某个zone而不需要重启,DNS状态及统计资料
等,因为RNDC可以很深入的管理DNS服务器,所以控制的方式是经理RNDC来设置建立密钥(rndc
key),并将相关密钥信息写入到named.con中的。

rndc-confgen -r /dev/urandom -a 创建一个rndc key  。默认是会自动创建的

rndc  status  查看rndc 状态

rndc stats

将目前系统的DNS统计数据记录下来,会在/var/named/data/内产生新文件

rndc dumpdb

将目前高速缓存的数据记录下来,制作成一个文件同样保存在/var/named/data内。以.db结尾

=============================================================

查询及验证常用命令

dig

dig  www.rhce.ce

dig -t soa www.rhce.ce

dig -x 192.168.88.254

dig +trace  rhce.ce //通过追踪查询可以看到所经历的DNS服务器

nslookup

nslookup www.rhce.ce

nslookup

set type=any 表示在查询某个domainname 时,将和这个domainname的一些相关数据一并显示出来

>set type=soa

>rhce.ce  查询

nslookup –qt=类型目标域名    //各类型查看上面的概念中说明的

>set q=MX/A/CNAME

>rhce.ce

更多nslookup 信息参考  百度NSLOOKUP

host

host  -a  www.rhce.ce   //列出该主机所有的相关信息,包括IP,TTL与排错信息

host  -l   rhce.ce  //列出该domain下的所有主机对应关系,domain的设置要allow-transfer才可以查询

host   www.rhce.ce   192.168.88.53  //强制以192.168.88.53这台DNS来查询

时间: 2024-10-25 22:11:32

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 学习之DHCP服务器

概念: DNS:Domain Name System 域名系统 FQDN:Fully Qualified Domain Name 完整主机名 正向解析:由主机名查IP地址 SOA:开始验证(Start of Authority)的缩写, NS:名称服务器(Name Server)的缩写 A 地址记录(Ipv4) AAAA 地址记录(Ipv6) AFSDB Andrew文件系统数据库服务器记录(应该是一种文件服务器的类型) ATMA ATM地址记录(不是自动提款机,具体功能不知道) CNAME 别

Linux学习笔记——DNS与BIND

DNS简介 DNS(Domain Name System),即域名系统.它使用层次结构的命名系统,将域名和IP地址相互映射,形成一个分布式数据库系统.DNS采用CS架构,服务器端工作在UDP协议端口53和TCP协议端口53上.FQDN(Fully Qualified Domain Name)完全限定域名,它是使用DNS的树状层级结构的完全路径域名来表示一个准确位置对应的主机,提供正向解析(FQDN-->IP)和反向解析(IP-->FQDN)的功能.目前DNS已经成为了互联网通讯的基础服务. 正

Linux下搭建DNS 服务器

CentOS6.6下DNS服务器的搭建 Linux下的DNS的软件包为bind,有如下几个软件包: bind           #DNS服务的主程序 bind-utils # 工具,包含dig,nslookup等网络诊断工具. bind-chroot      # 修改named 的root目录,这样named被入侵后,黑客也被限制在指定的目录下,不能切换到/,避免造成更大的破坏.[下面的演示中,为了简单起见就没安装该组件] # 安装bind软件包 yuminstall bind bind-u

Linux防火墙设置-DNS服务器篇

亲测可用,对于刚刚搭建了DNS服务器,需要开启防火墙但又不知道该怎么设置的朋友,可以参考下面的内容,或者直接使用我下面给出的脚本程序. 如果服务器是作为DNS服务器使用的,针对绝大多数的情况,为了开启防火墙同时又能正常地提供相关的服务,一般的设置如下: [1]第一步:清除默认防火墙规则 iptables -F iptables -X iptables -Z ·参数说明: -F:清除所有的已制定的规则 -X:清除所有用户自定义的chain(应该说的是tables) (扩展:table--Linux

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环境下DNS服务器原理及主服务器简单配置

1,DNS介绍 DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串.通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析). 监听的协议端口:UDP/TCP 53 软件实现:bind 2,DNS数状结构: 如下图: 根域:. 一级域如下: 组织域:.com, .org, .net, .mil, .edu, .gov, .info, .cc, .

linux环境下DNS服务器

DNS (Domain Name Service) 域名服务 用于主机名和IP的转换.分为正向解析(FQDN--->IP)和反向解析(IP--->FQDN) UDP协议,53端口 TCP协议,53端口 DNS服务器类型: 主DNS服务器:维护所负责的区域内解析库的服务器 从DNS服务器:定时同步更新主DNS服务器的内容记录.只有当主服务器当机后,从服务器才会接替其工作 高速缓存服务器:把经常要查询DNS记录缓存到本地,以便下次更快进行解析反馈 转发服务器:负责将非本区域内的域名转发到其他DNS

linux学习笔记 DHCP服务器的配置

首先,在学习之前,我们需要了解 DHCP DHCP服务器:动态主机配置协议是一个局域网的网络协议.指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码. DHCP服务器的功能: 两台连接到互联网上的电脑相互之间通信,必须有各自的IP地址,由于IP地址资源有限,宽带接入运营商不能做到给每个报装宽带的用户都能分配一个固定的IP地址(所谓固定IP就是即使在你不上网的时候,别人也不能用这个IP地址,这个资源一直被你所独占),所以要采用DHCP方式对上网的用户