DNS和Bind配置指南
/////////////////////////////目录//////////////////////////////////////
一、DNS原理相关
二、使用bind搭建最简单的DNS服务器
三、使用bind搭建可以解析自己添加的域名的DNS服务器
四、配置DNS转发
五、配置主从配置主从
六、测试主从同步
拓展学习:
DNS and BIND配置指南
http://anyisalin.blog.51cto.com/10917514/1753638
bind配置视图(view)
http://wubinary.blog.51cto.com/8570032/1378363
使用myDNS搭建DNS服务器
http://www.aminglinux.com/bbs/thread-186-1-1.html
使用dnsmasq配置DNS缓存
http://www.aminglinux.com/bbs/thread-5284-1-1.html
理解DNS递归和迭代查询
http://jeffyyko.blog.51cto.com/28563/215293
http://jeffyyko.blog.51cto.com/28563/216962
///////////////////////////////////////////////////////////////////////
一、DNS原理相关
DNS为域名解析系统的缩写,它是一种将IP地址转换成对应的主机名或者将主机名转换成与之相对应的IP地址的一种服务机制。
其中通过域名解析出IP地址的叫做正向解析,通过IP地址解析出域名的叫做反向解析。DNS使用TCP和UDP,端口号都是53,但是它主要是使用UDP,服务器之间的备份使用TCP【主从】。
全世界只有13台“根”服务器,1个主服务器放在米国,其他12台为辅根服务器,DNS服务器根据角色可以分为:主DNS,从DNS,缓存DNS服务器,DNS转发服务器。
解析过程:
/etc/hosts <——————客户端,如果有,就返回客户端,如果没有
客户端——————> DNS server ,如果知道,直接返回给你,如果不知道,自己变成DNS客户端
二、使用bind搭建最简单的DNS服务器
yum install -y bind bind-utils (开源的用来实现DNS服务的服务器,还有mydns也可以实现,只不过依赖MySQL)
#dig工具的安装需要bind-utils支持
让我们看看他生成了什么关键文件,这里我们主要列举出来:
/etc/named.conf #bind主配置文件
/etc/named.rfc1912.zones #定义zone的文件
/usr/sbin/named-checkconf #检测/etc/named.conf文件语法
/usr/sbin/named-checkzone #检测zone和对应zone文件的语法
...
/var/named/named.ca #根解析库
/var/named/named.localhost #本地主机解析库
/var/named/slaves #从文件夹
安装完毕后配置主配置文件:
如果不熟练请做好备份
vi /etc/name.conf
全局配置段:
options{
directory "/var/named";
#解析库目录路径
}; 区域配置段:
zone "." IN {
type hint;
file "named.ca";
}; zone "localhost" IN {
type master;
file "localhost.zone";
}; zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
#|————————————————————————————————————|
#|至少有三个区域:根、localhost、127.0.0.1|
#|—————————————————-——————————————————| 日志配置段:
logging {
... ;
#这里各位需要的请自己补充
};
配置完毕后:
chown named /etc/named.conf
cd /var/named/
dig -t NS . >named.ca
然后添加在主配置文件指定的解析库目录中的文件:
cd /var/named/
vim localhost.zone //正向解析文件:
@ IN SOA localhost. admin.localhost. ( 1H
10M
7D
1D
)
@ IN NS localhost.
localhost. IN A 127.0.0.1
vim named.local //反向解析文件:
$TTL 86400
@ IN SOA localhost. admin.localhost. (
2013081601(这个是序列号,主从有用)
1H
10M
7D
1D
)
@ IN NS localhost.
1 IN PTR localhost
保存完毕后:
检测配置是否有问题:named-checkconf
检测正解析:named-checkzone "localhost" /var/named/localhost.zone
检测反解析:named-checkzone "0.0.127.in-addr.arpa" /var/named/named.local
检查无误后:
systemctl start named.service
netstat -lnp |grep named //查看一下named进程是否监听了53端口
首先测试正向解析:dig @127.0.0.1 localhost
接着测试反解析: dig @127.0.0.1 -x 127.0.0.1
@后面跟的是DNS服务器的ip,可以8.8.8.
-x 反解析
PTR是反解析的意思
三、使用bind搭建可以解析自己添加的域名的DNS服务器
要解析自己添加的域名,需要在上述实验成功前提下进行
不过先针对下面配置的一些参数进行说明:
DNS资源记录类型:
SOA:起始授权记录,一个区域的解析库中有且只能有一条SOA记录,必须为解析库中的第一条记录,定义主DNS服务器地址和相关事件时间定义。
A:实现FQDN ==> IPv4
MX:标明提供邮件服务的主机
NS:标明当前域内的DNS服务器
AAAA:FQDN ==> IPv6
CNAME:Canonical Name,别名记录
PTR:IP ==> FQDN
DNS资源记录定义方法:
A记录:IP IN A Value ; 示例:192.168.1.1 IN A www.anyisalin.com.
NS记录:domain IN NS Value; 示例:anyisalin.com. IN NS ns1.anyisalin.com. #一条NS记录必须要有一条与之对应的A记录
MX记录:domain IN NS priority Value; 示例:anyisalin.com. IN MX mail1.anyisalin.com. #一条MX记录必须要有与之对应的A记录, 优先级0-,越低优先级越高
PTR记录:IP.in-addr.arpa. IN PTR Value; 示例:1.1.168.192.in-addr.arpa. IN PTR www.anyisalin.com. #PTR记录的写法比较诡异,为逆向网络地址加.in-addr.arpa.后缀组成
AAAA记录:和A记录相似,只是将IPv4地址换为IPv6
配置解析一个区域的步骤:
.定义一个区域(在主配置文件操作)
正向区域:
zone "zone_name" {
type hint|master|slave|forward;
#根 |主 |从 |转发
file "TheFileName";
#master|slave {MASTER|SLAVE_IP ip;};
#这个是主从配置要用到的参数
};
反向区域:
区域名称以逆向的网络地址,并以.in-addr.arpa为后缀,譬如:
zone "132.75.168.192.in-addr.arpa" IN {
type hint|master|slave|forward;
file "132.75.168.192.local";
};
.定义区域对应的数据库文件(在解析区域数据库目录操作)
文件名需要和上面的 TheFileName相同 区域数据库文件的一些写法:
(假如这里的区域名称是a.com,主机名dns.a.com):
a.com. IN NS dns.a.com.
@ IN NS dns
IN NS dns
这三种写法是一样的
例如上面第二条dns后面不加. 会自动在后面补上区域自身名字,等于dns.a.com
如果要写全,必须把最后一个.写上,例www.a.com. SOA记录(第一条记录):
name: 只能是区域名称,例:a.com. 通常可以用@简写
value: 必须是主DNS服务器的FQDN
SOA必须是区域数据库文件的第一条记录 例子如下:
$TTL (开头的TTL作用于全局,咋开头使用后下面就不需要写了)
@(引用区域名称) IN(关键字) SOA (类型) ns.a.com. (主DNS名字) dnsadmin.a.com. (邮箱地址,其中不用用@,用.代替) (
serial number ; 序列号,这里;为注释,十进制数字,不能超过10位,通常使用日期,例如2014031001
refresh time ;刷新时间,每隔多久到主服务器检查一次
retry time ;重试时间,应该小于refresh time
expire time ;过期时间
negative answer ttl ;否定答案的ttl,客户端缓存的时间,设定过长会导致无法立即生效,设定过短导致客户端频繁请求
) 之后的记录写法如下:
name [ttl] IN RRtype Value NS记录格式说明:
@ (TTL) IN NS ns.dx.com.
ns.dx.com. IN A 192.168.1.201
任何一个NS记录,必须有一条对应的A记录 A记录格式说明:
name:FQDN(可以使用相对名称)
value IP
www IN A 1.2.3.5
www.a.com IN A 1.2.3.4
这里同一个主机IP不同用于负载均衡 MX记录格式说明:
可以有多个
必须给一个A记录
name:区域名称,用于表示smtp服务器
value:包含优先级和FQDN
优先级:-,数字越小,级别越高 例:(如果第一个没响应就找第二个)
@ IN MX mail(注意没加. 会自动补上区域名称 )
@ IN MX mail PTR记录格式说明:
反向解析,IP -> FQDN,只能定义在反向区域数据库文件中
反向区域名称为逆向网络地址加.in-addr.arpa.后缀组成
name:IP,主机地址反过来写,例:172.16..7的name为7.100.16..in-addr.arpa.
value:FQDN
例子如下:
201.1.168.192.in-addr.arpa. IN PTR www.a.com. 这里的1.168.192.in-addr.arpa为区域名称
或简写成
IN PTR www.a.com. 会自动补上区域名称1.168.192.in-addr.arpa
.正向/反向的区别
反向解析区域数据库文件可用正向文件直接修改,SOA和NS一样的,只是不需要MX记录和A记录
回到正题,如果我的网站的域名是abc.com,步骤如下:
vi /etc/named.conf //添加如下内容
zone "abc.com" IN {
type master;
file "abc.com.zone";
}; zone "137.168.192.in-addr.arpa" IN {
type master;
file "192.168.zone";
};
在解析库目录下创建文件:
vi /var/named/abc.com.zone //增加如下内容:
$TTL (开头的TTL作用于全局)
@ IN SOA abc.com. root.abc.com.( 1H
10M
7D
1D
)
IN NS ns.abc.com.
IN MX mail.abc.com.
ns IN A 192.168.137.11
www IN A 192.168.137.73
mail IN A 192.168.137.10
bbs IN CNAME www.abc.com. 编辑反解析文件:
vi /var/named/192.168.zone //增加如下内容
$TTL
@ IN SOA ns.abc.com. root.abc.com.( 1H
10M
7D
1D
)
@ IN NS ns.abc.com.
IN PTR ns.abc.com.
IN PTR mail.abc.com.
IN PTR www.abc.com.
保存完毕后:
分别检测两个配置文件是否有问题:
named-checkconf
named-checkzone "abc.com" /var/named/abc.com.zone
named-checkzone "137.168.192.in-addr.arpa" 192.168.zone
没问题,就重启named
/etc/init.d/named restart
并使用dig命令检查
dig @127.0.0.1 www.abc.com
dig @127.0.0.1 -x 192.168.137.11
四.配置DNS转发
我们配置的DNS是只能解析我们定义的zone的,我们没有定义的DNS是不能解析的
配置DNS转发就可以解析其他互联网上的域名,前提是这个域名在互联网中的确使用,也就是说这个域名已经被某个DNS服务器解析了
/etc/named.conf
/var/named/localhost.zone
/var/named/named.local
这两行就是用来配置转发的,该DNS服务器不能解析的域名会转发到8.8.8.8这个DNS服务器上去解析
五.配置主从
在从服务器上:
yum install -y bind
拷贝主上配置文件到从上,包括:
/etc/named.conf
/var/named/localhost.zone
/var/named/named.local
拷贝完毕后:
修改从的/etc/named.conf //内容参考如下:
options{
directory "/var/named";
}; zone "." IN {
type hint;
file "named.ca";
}; zone "localhost" IN {
type master;
#如果这里写成slave,需要写masters {...},因为我们不需要同步localhost,所以可以master
file "localhost.zone";
}; zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
}; zone "abc.com" IN {
type slave;
file "slaves/abc.com.zone";
masters { 192.168.0.11; };
}; zone "137.168.192.in-addr.arpa" IN {
type slave;
file "slaves/192.168.zone";
masters { 192.168.0.11; };
};
在从上启动named
启动成功后会在 /var/named/下生成一个slaves目录,这个目录下会有192.168.zone,abc.com.zone这两个文件,内容是和主上一行的
在从上测试: dig@127.0.0.1 www.abc.com
六.测试主从同步
在主DNS上更改文件 /var/named/abc.com.zone //在最后增加一行:
IN A 1.1.1.1
另外需要修改一下第三行的那个数字串,这个是用来做标记的,只有这个数字变化了,才可以让从自动跟着变化,数字只能是变大,不能变小,2013081601 -> 2013081602
重启named服务
经测试我们发现一个问题,就是从经常会同步得比较慢,这是很要命的,所以需要我们做一个特殊的操作,在主上的/etc/named.conf中,abc.com中增加两行:
notify yes;
also-notify{
192.168.0.12(指定从的IP);
};
DNS和Bind配置指南的更多相关文章
- Redhat linux DNS配置指南(SCANIP配置手册)
在oracle 11g的RAC中增加了SCAN IP,而使用 SCAN IP的一种方式就是使用DNS,这里介绍在Redhat Linux 5.4中DNS的详细配置操作在配置DNS之前修改主机名Redh ...
- 【Linux】DNS服务-BIND基础配置(二)
BIND简介 现在使用最为广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早有伯克利大学的一名学生编写,现在最新的版本是9,有ISC(Internet ...
- Linux运维实战之DNS(bind)服务器的安装与配置
转自http://sweetpotato.blog.51cto.com/533893/1598225 上次博文我们讨论了DNS的基础,本次博文我们重点来看看如何配置一台DNS服务器. [本次博文的主要 ...
- 【Linux】DNS服务-BIND基础配置
1.BIND简介 现在使用最为广泛的DNS服务器软件是BIND(Berkeley Internet Name Domain),最早有伯克利大学的一名学生编写,现在最新的版本是9,有ISC(Intern ...
- DNS BIND配置 配置基本缓存服务器 DNS正向解析 DNS反向解析
一. 缓存服务器配置 1.DNS:BIND Berkeley Internet Name Domain 版本bind97: RPM服务器端包的名字 安装bind-libs bind ...
- [转载]SharePoint 2013测试环境安装配置指南
软件版本 Windows Server 2012 标准版 SQL Server 2012 标准版 SharePoint Server 2013 企业版 Office Web Apps 2013 备注: ...
- SQL Server 2012 AlwaysOn集群配置指南
1. AlwaysOn介绍 AlwaysOn是SQL Server 2012提供的全新综合.灵活.高效经济的高可用性和灾难恢复解决方案.它整合了镜像和群集的功能,基于OS 故障转移群集(Windows ...
- Ubuntu 12.04 DNS服务器的配置方法
Bind是一款开放源码的DNS服务器软件,由美国加州大学Berkeley分校开发和维护的,全名为Berkeley Internet Name Domain它是目前世界上使用最为广泛的DNS服务器软件, ...
- 移植DNS服务bind
移植DNS服务bind 标签: makefile工作linuxbuildgcc工具 先写用于DNS的bind. 一. 移植环境 1 .硬件环境: Host : X86 PC Target : MPC8 ...
随机推荐
- PHP SPL使用方法和他的威力
什么是SPL,如何使用,他有什么作用,下面我我们就讲讲PHP SPL的用法 SPL,PHP 标准库(Standard PHP Library) ,此从 PHP 5.0 起内置的组件和接口,并且从 PH ...
- SSH secure shell 原理与运用
转: http://www.ruanyifeng.com/blog/2011/12/ssh_remote_login.html 作者: 阮一峰 日期: 2011年12月21日 SSH是每一台Linux ...
- python学习笔记(十七)网络编程之urllib模块
如何用python打开一个网站或者请求一个接口呢,我们在这篇博客介绍一下. 首先我们得导入一个urllib模块,这个模块是python自带的标准模块,直接导入就能使用,但是用起来不方便,先看个简单的打 ...
- docker+MySQL+读写分离
一.拉取mysql镜像文件docker pull mysql二.查看镜像docker images三.创建配置文件目录mkdir /data/docker/mysql/{master,slave} - ...
- HDU1520:Anniversary party(树形dp第一发)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1520 一个公司去参加宴会,要求去的人不能有直接领导关系,给出每一个人的欢乐值,和L K代表K是L的直接领导 ...
- Linux打包压缩与安装卸载
一.打包压缩 (1)tar:打包拆包命令 tar -cxzjvf 打包后的文件 欲打包的目录 -c:打包文件夹 -x:拆开文件夹 -z:以gzip格式压缩,默认压缩倍数为6倍 -j:以bzi ...
- APP移动端自动化测试工具选型“兵器谱”一览(主流开源工具)
(下面大多数工具都是开源工具,在github,码云等开源平台都能找到) "测试那点事儿”在看到360旗下的测试团队整理的关于目前APP移动端自动化相关的工具,觉得总结的很到位,对目前大多数中 ...
- 压力测试工具sysbench
sysbench是一个模块化.跨平台.多线程基准测试工具,主要用于测试不同系统参数下的数据库负载情况,本文主要介绍0.4版本的使用.sysbench主要用于以下性能测试: 文件I/O性能 调度 内存分 ...
- 转: MYSQL获取更新行的主键ID
在某些情况下我们需要向数据表中更新一条记录的状态,然后再把它取出来,但这时如果你在更新前并没有一个确认惟一记录的主键就没有办法知道哪条记录被更新了. 举例说明下: 有一个发放新手卡的程序,设计数据库时 ...
- 存储器系列,L1缓存,L2缓存,内存(RAM),EEPROM和闪存,CMOS与BIOS电池
因为各级存储硬件的参数和性能不同所以在计算机硬件当中分为以下几种: 由此可见顶级空间小但处理速度最快,下层容量大但处理速度时间较长. 存储器系统采用分层结构,顶层的存储器速度较高,容量较小,与底层的存 ...