Linux 学习之DNS服务器

时间:2022-09-15 23:37:31

概念:

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 { any; };
//监听
listen-on-v6 port { 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";

named.conf 完成配置

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*2
Refresh+Retry<Expire
Expire>=Retyr*10
Expire>=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 域主机名 管理员邮箱
; 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 rhce.ce.
www IN A 192.168.88.254
client IN A 192.168.88.1 ;@=当前域,rhce.ce

rhce.ce 正向域配置文件

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

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

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 { any; }; listen-on-v6 port { 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 ". "

named.conf  仅做转发

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

双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/;};        //指定acl策略,配置网段或者主机
acl rhce{ 172.30.30.0/;};
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

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

test.rhce.ce子域配置文件

 $TTL 1D
@ IN SOA test.rhce.ce. root.test.rhce.ce. (
; 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来查询

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

本文是一个学习日记,如果大家有参考发现其中问题的可以与我联系。我们一起学习。希望看到的朋友可以多多提问题有意见。谢谢

Linux 学习之DNS服务器的更多相关文章

  1. Linux 自动化部署DNS服务器

    Linux 自动化部署DNS服务器 1.首先配置主DNS服务器的IP地址,DNS地址一个写主dns的IP地址,一个写从dns的地址,这里也可以不写,在测试的时候在/etc/resolv.conf中添加 ...

  2. Linux下搭建DNS服务器

    1. 安装需要的软件 由于实验过程是在自己电脑进行的,所以需要安装bind bind-chroot,以下为安装过程. 图1-1 安装bind 图1-2 安装bind-chroot 2.修改DNS主配置 ...

  3. centos7 部署dns服务器

    =============================================== 2017/12/6_第2次修改                       ccb_warlock 20 ...

  4. 在Debian上用Bind 配置DNS服务器

    1 什么是DNS 初学者可能不理解DNS到底是什么,干什么用.我是在1998年大学毕业时才听说这个词的.那时我在聊天室碰到潍坊信息港的一个网管,我恬不知耻地说我也是个网管,他说也维护DNS吗?我说,D ...

  5. 搭建DNS服务器

    导读 Linux下架设DNS服务器通常是使用Bind程序来实现的.Bind是一款实现DNS服务器的开放源码的软件.DNS即域名系统,主要功能是将人们易于记忆的Domain Name(域名)与不易记忆的 ...

  6. CentOS笔记——配置DNS服务器

    前话 咳咳,这次Linux系统的DNS服务器搭建我不得不记下来.,这错误真的太蛋疼了,我整整弄了两天才解决问题(抱歉我很蠢). 也许有人会和我犯同样的错误,给大家分享一下经验. 首先总结一下知识点: ...

  7. Linux学习笔记1:配置Linux网络和克隆虚拟机并更改配置

    一.配置Linux网络 在安装Linux的时候,一定要保证你的物理网络的IP是手动设置的,要不然会在Linux设置IP连通网络的时候会报network is unreachable 并且怎么也找不到问 ...

  8. Ubuntu Linux 学习篇 配置DNS服务器

    BIND9 DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器.DNS中保存了一张域名(doma ...

  9. Linux系统下搭建DNS服务器——DNS原理总结

    2017-01-07 整理 DNS原理 域名到IP地址的解析过程 IP地址到域名的反向域名解析过程 抓包分析DNS报文和具体解析过程 DNS服务器搭建和配置 这个东东也是今年博主参见校招的时候被很多公 ...

随机推荐

  1. arcgis engine 开发教程系列

    版权声明:        <ArcGIS Engine+C#实例开发教程>为3SDN(http://www.3sdn.net)原创教程,版权所有.禁止商业用途转载(如需请联系作者),非商业 ...

  2. java多线程之内存可见性-synchronized、volatile

    1.JMM:Java Memory Model(Java内存模型) 关于synchronized的两条规定: 1.线程解锁前,必须把共享变量的最新值刷新到主内存中 2.线程加锁时,将清空工作内存*享 ...

  3. as 报错

    报错: cantnot find the declaration of element 'LinearLayout' 解决: 原本为了解决报错我把Android support关掉了,然后百度到解决办 ...

  4. MySQL数据排序asc、desc

    数据排序 asc.desc1.单一字段排序order by 字段名称 作用: 通过哪个或哪些字段进行排序 含义: 排序采用 order by 子句,order by 后面跟上排序字段,排序字段可以放多 ...

  5. php 从一个数组中随机获取固定数据

    <?php /* * * 通过一个标识,从一个数组中随机获取固定数据 * $arr 数组 * $num 获取的数量 * $time 随机固定标识值,一般用固定时间或者某个固定整型 * */ fu ...

  6. Spring RedisTemplate操作-序列化性能测试(12)

    @Autowired @Qualifier("redisTemplate") private RedisTemplate<String, String> stringr ...

  7. 自定义putty主题

    PuTTY很早之前就没有更新了(0.62),因为都是开源的所以有人branch出来做了增强,如这个PuTTY tray,增加了超链等功能: https://puttytray.goeswhere.co ...

  8. Makefile 中&colon;&equals; &quest;&equals; &plus;&equals; &equals;的区别【转】

    转自:http://www.cnblogs.com/wanqieddy/archive/2011/09/21/2184257.html 在Makefile中我们经常看到 = := ?= +=这几个赋值 ...

  9. C-Scanf连续调用多次并且存在&percnt;c的问题

    问题现象: 当程序中存在多个scanf时,针对第一个scanf的输入,一般用户会以空白字符(空格.换行.tab.换页符)等结束.但若后面有一个scanf(“%c”,&ch),则刚才输入的空白字 ...

  10. HDU6330-2018ACM暑假多校联合训练Problem L&period; Visual Cube

    就是画个图啦 分三个平面去画orz #include <iostream> #include <cmath> #include <cstring> #include ...