DNS主从搭建
什么是DNS
DNS( Domain Name System)是“域名系统”的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,使用的是UDP协议的53号端口,它用于TCP/IP网络,它所提供的服务是用来将主机名和域名转换为IP地址的工作。DNS就是这样的一位“翻译官”,它的基本工作原理可用下图来表示。
dns解析原理
环境配置
- 基于centos7系统
IP | 主机名 | 节点 |
---|---|---|
192.168.204.130 | dns | DNS 主服务器 |
192.168.204.131 | Mail 服务器、DNS 从服务器 |
基础配置
- 首先关闭防火墙
systemctl stop firewalld //关闭防火墙
systemctl disable firewalld //默认永久关闭防火墙
setenforce 0 //关闭安全配置
- 安装
dns
服务
yum -y install bind-chroot bind-utils telnet net-tools
- 启动dns服务
systemctl restart named
- 查看端口是否启动
netstat -lntp | grep named
-
修改主服务器 DNS 的配置文件 named.conf(记住修改配置每个分号都不能少)
域名解析服务 Bind 的程序名称叫做 named,服务程序的配置文件如下:
-
/etc/named.conf
主配置文件 服务器主要运行参数 -
/etc/named.rfc1912.zones
区域文件,主要指定要解析哪个域名 -
/var/named/xxx.xx
数据文件,用来正向和反向的解析
- 首先修改named.conf配置
配置正反向解析
正向解析:根据主机名(域名)查找对应的 IP 地址。
反向解析:根据 IP 地址查找对应的主机名(域名)。( 反向解析的作用是将用户提交的 IP 地址
解析为对应的域名信息,它一般用于对某个 IP 地址上绑定的所有域名进行整体屏蔽,屏蔽
由某些域名发送的垃圾邮件。也可以判断某虚拟主机上运行了多少个网站。)
正向解析
- 创建转发域
拷贝模板文件 named.localhost
到 testmail.com.zone
,示例代码如下:
cp -rf /var/named/named.localhost /var/named/testmail.com.zone
- 编辑 testmail.com.zone 文件,示例代码如下:
$TTL 1D
@ IN SOA dns.testmail.com. dns.testmail.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS dns.testmail.com. //域名服务器记录
IN MX 10 mail //邮箱交换记录
dns IN A 192.168.204.131 //地址记录 dns 为区域前缀
mail IN A 192.168.204.131 //地址记录
www IN A 192.168.204.131
smtp IN A 192.168.204.131
- 授予文件权限
chmod 777 testmail.com.zone
修改区域配置文件
/etc/named.rfc1912.zones
zone "testmail.com" IN { #定义 zone 文件,这里是定义的根域的文件位置
type master; #主 dns 解析
file "testmail.com.zone"; #定义区域解析库文件名字
};
type:master 指的是主 dns 解析、slave 指的是从 dns 解析、hint 指的是根域名解析(根提 示域)、forward 指的是转发,转发不使用 file;
file :定义区域解析库文件名字(位置默认在/var/named 下面),file 的前缀通常和 zone 的 名字通常对应起来,然后加一个.zone 的后缀。)
- 检查配置
named-checkzone testmail.com testmail.com.zone
//zone 文件检测工具
named-checkconf /etc/named.conf
//named.conf 文件检查工具
配置dns解析文件
linux 有关 DNS 解析的配置和文件
linux 中有三个文件是关于 dns 解析的:
-
/etc/hosts
记录 hostname 对应的ip地址 -
/etc/resolv.conf
设置DNS服务器的ip地址 -
/etc/host.conf
指定域名解析的顺序(是从本地的hosts文件解析还是从DNS解析) -
/etc/hosts
的存在是早期网络并不是特别发达,仅仅在 hosts 中保存主机名和 ip 地址的对应关系即可满足需要,随着网络的发展逐渐出现分布式 DNS 服务,但是 /etc/hosts 形式保留下来了。
/etc/resolv.conf
是配置DNS 域名和 ip 地址的,
配置dns解析
测试
nslookup
命令可以测试DNS是否解析成功 并产生详细信息
配置反向解析
同样按如上的步骤
- 修改区域配置文件/etc/named.rfc1912.zones
zone "204.168.192.in-addr.arpa" IN {
type master;
file "131.204.168.192.in-addr.arpa.local";
};
- 配置131.204.168.192.in-addr.arpa.local文件
$TTL 1D
@ IN SOA dns.testmail.com. dns.testmail.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS dns.testmail.com.
131 IN PTR mail.testmail.com.
131 IN PTR www.testmail.com.
-
检查配置 重启服务
-
测试
dig -x 192.168.204.131
配置主从 DNS 服务
- 配置从节点服务其
yum -y install bind-chroot bind-utils
-
修改配置 named.conf(与主服务器一致)
-
修改区配置文件
zone "testmail.com" IN {
type slave; //master 为主服务;slave 为从服务;
file "slaves/slavertestmail.com.zone";
masters {192.168.204.130;}; //指定主 dns 服务器的 IP
};
zone "204.168.192.in-addr.arpa" IN {
type slave;
file "slaves/130.204.168.192.in-addr.local";
测试
- 关闭主dns解析器
dns测试工具
nslookup 命令是常用域名查询工具,就是查 DNS 信息用的命令。
一般格式:
nslookup [-option] [name | -] [server]
参数说明:
option:表示一些选项。这些选项可以通过 set 命令设置修改。
name:表示查询的域名。
server:可以指定 DNS 主机 IP。
set 命令说明:
set all:打印当前的选项值。
set calss=value:设置查询的类型,一般情况下为 Internet。
set debug:设置调试模式。
set d2:设置详细调试模式。
set domin=name:设置默认的域名。
set search:
set port=value:设置 DNS 端口。
set querytype=value:改变查询的信息的类型。默认的类型为 A 纪录。
set type=value:和 set querytype 一样。
set recurse:设置查询类型为递归;若为 set norecurse,查询类型为跌代;缺省为前者。set retry=number:设置重试的次数。
set timeout=number:设置等待应答的限制时间(单位为秒),超出即为超时,如果还可以 重试,就会将长超时值加倍,重新查询。
set vc:通过 tcp 方式查询。
- 具体说明可以查看 man 手册。
格式:nslookup -nameserver/ip。例如:
[root@controller ~]# nslookup 192.168.100.30
30.100.168.192.in-addr.arpa
name = dns.testmail.com.
30.100.168.192.in-addr.arpa
name = mail.testmail.com.
dig 命令主要用来从 dns 域名服务器查询主机地址信息,是安装 bind 自带的工具。
一般格式:
dig [@global-server] [domain] [q-type] [q-class] {q-opt} {d-opt}
参数说明:
@global-server:默认是以/etc/resolv.conf 作为 DNS 查询的主机,这里可以填入其它 DNS 主 机 IP。
domain:要查询的域名。
q-type:查询记录的类型,例如 a、any、mx、ns、soa、hinfo、axfr、txt 等,默认查询 a。
q-class:查询的类别,相当于 nslookup 中的 set class。默认值为 in(Internet)。
q-opt:查询选项,可以有好几种方式,比如:-f file 为通过批处理文件解析多个地址;-p port
指定另一个端口(缺省的 DNS 端口为 53),等等。
d-opt:dig 特有的选项。使用时要在参数前加上一个“+”号。
d-opt 常用选项:
+vc:使用 TCP 协议查询。
+time=###:设置超时时间。
+trace:从根域开始跟踪查询结果。
dig nameserver/IP 例如:
[root@controller ~]# dig dns.testmail.comdig
命令默认的输出信息比较丰富,大概可以分为 5 个部分。
- 第一部分显示 dig 命令的版本和输入的参数。
- 第二部分显示服务返回的一些技术详情,比较重要的是 status。如果 status 的值为 NOERROR 则说明本次查询成功结束。
- 第三部分中的 "QUESTION SECTION" 显示我们要查询的域名。
- 第四部分的 "ANSWER SECTION" 是查询到的结果。
- 第五部分则是本次查询的一些统计信息,比如用了多长时间,查询了哪个 DNS 服务器, 在什么时间进行的查询等等。
host 查询
hosts 文件包含了 IP 地址和主机名之间的映射,还包括主机名的别名。在没有域名服务 器的情况下,系统上的所有网络程序都通过查询该文件来解析对应于某个主机名的 IP 地址。 通常可以将常用的域名和 IP 地址映射加入到 hosts 文件中,实现快速访问。
语法 host [ 选项] name [server]
选项列表
- -a 查询所有的信息
- -c 设置查询类型
- -C 查询完整的 SOA 记录
- -d | -v 显示详细过程
- -l 列表模式
- -t 选择查询类型:CNAME NS SOA SIG KEY AXFR
- -w 永久等待-W 设置等待超时
例如:
[root@controller ~]# host 192.168.100.30
--
30.100.168.192.in-addr.arpa domain name pointer mail.testmail.com.
30.100.168.192.in-addr.arpa domain name pointer dns.testmail.com.
dns资源记录类型
- (1)A记录(Address)正向解析
A记录是将一个主机名(全称域名FQDN)和一个IP地址关联起来。这也是大多数客户端程序默认的查询类型。
- (2)PTR记录(Pointer)反向解析
PTR记录将一个IP地址对应到主机名(全称域名FQDN)。这些记录保存在in-addr.arpa域中。
- (3)CNAME记录(Canonical Name)别名
别名记录,也称为规范名字(Canonical Name)。这种记录允许您将多个名字映射到同一台计算机。
- (4)MX记录(Mail eXchange)
MX记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器。MX记录也叫做邮件路由记录,用户可以将该域名下的邮件服务器指向到自己的mail server上,然后即可自行操控所有的邮箱设置。
当有多个MX记录(即有多个邮件服务器)时,则需要设置数值来确定其优先级。通过设置优先级数字来指明首选服务器,数字越小表示优先级越高。
- (5)NS记录(Name Server)
NS(Name Server)记录是域名服务器记录,也称为授权服务器,用来指定该域名由哪个DNS服务器来进行解析。
将网站的NS记录指向到目标地址,在设置NS记录的同时还需要设置目标网站的指向,否则NS记录将无法正常解析
NS记录优先于A记录。即,如果一个主机地址同时存在NS记录和A记录,则A记录不生效。