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 { 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 命令解析出来的结果如下
;; 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服务器的更多相关文章
- Linux 自动化部署DNS服务器
Linux 自动化部署DNS服务器 1.首先配置主DNS服务器的IP地址,DNS地址一个写主dns的IP地址,一个写从dns的地址,这里也可以不写,在测试的时候在/etc/resolv.conf中添加 ...
- Linux下搭建DNS服务器
1. 安装需要的软件 由于实验过程是在自己电脑进行的,所以需要安装bind bind-chroot,以下为安装过程. 图1-1 安装bind 图1-2 安装bind-chroot 2.修改DNS主配置 ...
- centos7 部署dns服务器
=============================================== 2017/12/6_第2次修改 ccb_warlock 20 ...
- 在Debian上用Bind 配置DNS服务器
1 什么是DNS 初学者可能不理解DNS到底是什么,干什么用.我是在1998年大学毕业时才听说这个词的.那时我在聊天室碰到潍坊信息港的一个网管,我恬不知耻地说我也是个网管,他说也维护DNS吗?我说,D ...
- 搭建DNS服务器
导读 Linux下架设DNS服务器通常是使用Bind程序来实现的.Bind是一款实现DNS服务器的开放源码的软件.DNS即域名系统,主要功能是将人们易于记忆的Domain Name(域名)与不易记忆的 ...
- CentOS笔记——配置DNS服务器
前话 咳咳,这次Linux系统的DNS服务器搭建我不得不记下来.,这错误真的太蛋疼了,我整整弄了两天才解决问题(抱歉我很蠢). 也许有人会和我犯同样的错误,给大家分享一下经验. 首先总结一下知识点: ...
- Linux学习笔记1:配置Linux网络和克隆虚拟机并更改配置
一.配置Linux网络 在安装Linux的时候,一定要保证你的物理网络的IP是手动设置的,要不然会在Linux设置IP连通网络的时候会报network is unreachable 并且怎么也找不到问 ...
- Linux 学习2
1.配置好阿里云yum源生成yum缓存下载nginx,并且启动nginx服务,使用浏览器访问,nginx页面 yum源的工作目录是? https://www.cnblogs.com/dlh-lmsh/ ...
- Ubuntu Linux 学习篇 配置DNS服务器
BIND9 DNS(Domain Name Server,域名服务器)是进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器.DNS中保存了一张域名(doma ...
随机推荐
- 重构第17天提取父类(Extract SuperClass)
今天的重构来自 Martin Fowler的http://refactoring.com/catalog/extractSuperclass.html. 理解:本文中的“提取父类”是指类中有一些字段或 ...
- 自学silverlight 5.0
这是一个silverlight游戏:http://keleyi.com/keleyi/phtml/silverlight/ 接了个单子,非要用Silverlight 5来作一个项目,之前从来没接触过这 ...
- BI之SSAS完整实战教程7 -- 设计维度、细化维度中 :浏览维度,细化维度
上篇文章我们已经将Dim Geography维度设计好. 若要查看维度的成员, AS需要接收该维度的详细信息(包括已创建的特性.成员属性以及多级层次结构), 通过XMLA与AS的实例进行通信. 今天我 ...
- 小白学Linux--虚拟机下安装Ubuntu16
最近接收到任务,说是下半年可能要搞全文检索.听到后顿时炸锅了,一方面是对新技术的兴奋(当然主要还是这技术比较值钱),另一方面,我TM连Linux都不会玩,怎么搞全文检索.怀揣着对开源世界的无线向往(恐 ...
- window10 mysql5.7 解压版 安装
1. 解压mysql-5.7.11-winx64.zip 到某文件夹, 如C:\DevelopCommon\mysql-5.7.11-winx64. 2. 配置环境变量 变量名 : MYSQL_HOM ...
- 那一夜,我们..奋笔疾书敲出的--->>库存管理系统
说了会再见,最近好吗?无论你在哪里>也许你在温暖的家,或许你在身在异乡的城市;或许你高高的峰顶放生高歌,或许你还在陡峭的山峰半空努力攀爬.......相信我们都会登上顶峰,"会当凌绝顶 ...
- 删除单链表倒数第n个节点
基本问题 如何删除单链表中的倒数第n个节点? 常规解法 先遍历一遍单链表,计算出单链表的长度,然后,从单链表头部删除指定的节点. 代码实现 /** * * Description: 删除单链表倒数第n ...
- 使用 Canvas 和 JavaScript 创建逼真的下雨效果
HTML5 规范引进了很多新特性,其中最令人期待的之一就是 Canvas 元素,HTML5 Canvas 提供了通过 JavaScript 绘制图形的方法,非常强大.这里向大家展示一个使用 Canva ...
- ArcEngine 0x8004023C
在进行缓冲区查询时,查询的并是不要素本身的范围,而是缓冲一定半径,所以用到了ITopologicalOperator接口,主要是利用其buffer方法,代码如下: IFeatureClass pFea ...
- ORA-00257归档日志写满的解决方法
背景: 在前一篇博客中我们提到了如何启动或关闭oracle的归档(ARCHIVELOG)模式,在我成功设定数据库为归档模式以后, 第二天再次尝试连接数据库,报错:ORA-00257.在网上找到了一圈资 ...