DNS 转发配置
- 我们配置DNS是只能解析我们定义的zone的,我们没有定义的是不能解析的。
- 配置DNS转发就可以解析其他互联网上的域名了,前提是这个域名在互联网中的企业在使用。
- 也就是说这个域名已经被某个DNS服务器解析了。
1、修改DNS主配置文件,options参数下添加
vim /etc/named.conf
options {
# 域文件存放目录
directory "/var/named";
# 开启转发
forward first;
# 转发到哪个DNS
forwarders { 180.76.76.76; };
};
2、测试配置文件,重启
# 测试配置文件,是否正确
named-checkconf
# 重启DNS服务
/etc/init.d/named restart
3、测试转发
dig @192.168.1.160 www.jd.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> @192.168.1.160 www.jd.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50736
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.jd.com. IN A
;; ANSWER SECTION:
www.jd.com. 102 IN CNAME www.jdcdn.com.
www.jdcdn.com. 5 IN A 218.60.111.1
;; Query time: 60 msec
;; SERVER: 192.168.1.160#53(192.168.1.160)
;; WHEN: Sun Dec 24 09:31:18 2017
;; MSG SIZE rcvd: 68
测试域名转发
# 在另一台机器内添加 192.168.1.160 DNS 服务
vim /etc/resolv.conf
nameserver 192.168.1.160
测试
ping www.baidu.com
# 跳转到 192.168.1.171 说明可以正向解析出IP地址
PING www.baidu.com (192.168.1.171) 56(84) bytes of data.
From heartbeat2 (192.168.1.161) icmp_seq=1 Destination Host Unreachable
From heartbeat2 (192.168.1.161) icmp_seq=2 Destination Host Unreachable
From heartbeat2 (192.168.1.161) icmp_seq=3 Destination Host Unreachable
From heartbeat2 (192.168.1.161) icmp_seq=5 Destination Host Unreachable
ping www.jd.com
# DNS服务器 本地没有解析后,转发到给180.76.76.76DNS
PING www.jdcdn.com (218.60.111.1) 56(84) bytes of data.
64 bytes from 218.60.111.1: icmp_seq=1 ttl=56 time=21.5 ms
64 bytes from 218.60.111.1: icmp_seq=2 ttl=56 time=17.7 ms
另一台机器 测试域名转发
以上转自
https://www.cnblogs.com/xiangsikai/p/8438544.html
https://www.cnblogs.com/xiangsikai/p/8438518.html
感谢博主
实现主从复制
主从复制原理:
1、应该为一台独立的名称服务器;
2、主服务器的区域解析库文件中必须有一条NS记录是指向从服务器;
3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中;
4、主服务器得允许从服务器作区域传送;
5、主从服务器时间应该同步,可通过ntp进行;
6、bind程序的应该保持一致;否则,应该从高,主低;
1、实验前准备:
主DNS服务器A: (IP地址为192.168.34.101)
从DNS服务器B: (IP地址为192.168.34.103)
客户端C: (IP地址为192.168.34.105)
2、配置主DNS服务器相关文件:
(1)在主服务器A中配置文件信息:vim /etc/named.conf
修改完之后并重新启动DNS服务:rndc reload
options {
listen-on port 53 { localhost; }; # 将此行写成localhost或者注释掉(//),不写的话会,默认只能本机访问
listen-on-v6 port 53 { ::1; };
directory "/var/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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
allow-query { any; }; # 写成any或者注释掉(//)都可以
allow-transfer { 192.168.34.103; }; # 将从服务器的IP地址写入,默认只能103地址作为当前主服务器的备用服务器,否则任何主机都可以做为从服务器访问主服务器,抓取重要信息
(2)修改主服务器A区域库文件的内容:
vim /var/named/baidu.com.zone
[root@ansiblenamed]#vim /var/named/baidu.com.zone
$TTL 1D
@ IN SOA dns1 admin.baidu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1
NS dns2 # 从服务器添加一个NS标记
dns1 A 192.168.34.101 # 主服务器进行域名解析为IP地址
dns2 A 192.168.34.103 # 将从服务器进行域名解析为IP地址
www CNAME webs
webs A 6.6.6.6
webs A 8.8.8.8
webs A 7.7.7.7
@ MX 10 mailser1
@ MX 20 mailser2
mailser1 A 11.9.9.9
mailser2 A 9.9.9.9
@ A 8.8.8.8 # 省略二级域名写入
* A 8.8.8.8 # 避免二级域名写错,也可以访问。
$GENERATE 1-200 server$ A 192.168.34.$
3、配置从服务器的文件:
(1)在从服务器B上安装DNS:yum install bind
在配置文件中修改/etc/named.conf相关配置文件
[root@centos7_1 ~]# vim /etc/named.conf
options {
// listen-on port 53 { 127.0.0.1; }; #将此行注释掉
listen-on-v6 port 53 { ::1; };
directory "/var/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";
recursing-file "/var/named/data/named.recursing";
secroots-file "/var/named/data/named.secroots";
// allow-query { localhost; }; # 将此行注释掉
allow-transfer { none;}; # 此行必需写入,不写会不安全,而且其他任何主机都可以作为从服务器进行访问,抓取IP地址
注意:将第一行的listen-on port 53端口注释掉,或者写成localhost,不然只能为本机服务,allow-query那行业注释掉。
(2)将从服务器B的/etc/named.rfc1912.zones配置文件加以修改
[root@centos7_1 ~]# vim /etc/named.rfc1912.zones
zone "baidu.com" { # 域名要与主服务器的域名一致
type slave; # 类型为“奴隶的意思”
masters {192.168.34.101;}; #将主服务器的IP地址写入
file "slaves/baidu.com.zone.slave"; # 如果从服务器同步了主服务器之后,此时同步的数据就会存放在此目录下/var/named/slaves/
};
(3)重新加载主服务器A的DNS服务:
1
2
|
[root@ansiblenamed]
server reload successful
|
(4)查询当前从DNS服务器B的同步的数据文件,此时我们可以看到/var/named/slaves目录下已经同步了主DNS服务器的数据内容:
1
2
|
[root@centos7_1 ~]
baidu.com.zone.slave
|
4、配置客户端:
(5)下来我在客户端C配置两个DNS地址,将主从服务器的IP地址都关联起来:
[root@centos6network-scripts]#vim ifcfg-eth0
DEVICE=eth0
PROTOBOOT=static
IPADDR=192.168.34.105
GATEWAY=192.168.34.2
ONBOOT=yes
DNS1=192.168.34.101 # 主服务器的DNS IP地址
DNS2=192.168.34.103 # 从服务器的DNS IP地址
(6)在客户端C查看当前配置好的DNS服务地址
[root@centos6network-scripts]#cat /etc/resolv.conf 查看当前的配置DNS信息
# Generated by NetworkManager
search 10.localdomain
nameserver 192.168.34.101
nameserver 192.168.34.103
(7)我们在客户端C用dig命令查看当前的baidu.com 网址,查看当前DNS解析IP地址是来自哪个服务器:
[root@centos6network-scripts]#dig www.baidu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 24163
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 86400 IN CNAME webs.baidu.com.
webs.baidu.com. 86400 IN A 6.6.6.6
webs.baidu.com. 86400 IN A 8.8.8.8
webs.baidu.com. 86400 IN A 7.7.7.7
;; AUTHORITY SECTION:
baidu.com. 86400 IN NS dns1.baidu.com.
baidu.com. 86400 IN NS dns2.baidu.com.
;; ADDITIONAL SECTION:
dns1.baidu.com. 86400 IN A 192.168.34.101
dns2.baidu.com. 86400 IN A 192.168.34.103
;; Query time: 6 msec
;; SERVER: 192.168.34.101#53(192.168.34.101) #此时可以看到解析的IP地址来自于主服务器
;; WHEN: Thu Nov 7 09:38:55 2019
;; MSG SIZE rcvd: 168
(8)我们将主服务器A的网卡down掉(ifconfig ens33 down),然后在客户端C查看当前内容:
[root@centos6network-scripts]#dig www.baidu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54362
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 86400 IN CNAME webs.baidu.com.
webs.baidu.com. 86400 IN A 8.8.8.8
webs.baidu.com. 86400 IN A 7.7.7.7
webs.baidu.com. 86400 IN A 6.6.6.6
;; AUTHORITY SECTION:
baidu.com. 86400 IN NS dns1.baidu.com.
baidu.com. 86400 IN NS dns2.baidu.com.
;; ADDITIONAL SECTION:
dns1.baidu.com. 86400 IN A 192.168.34.101
dns2.baidu.com. 86400 IN A 192.168.34.103
;; Query time: 12 msec
;; SERVER: 192.168.34.103#53(192.168.34.103) #此时,我们看到的是从服务器的IP地址,访问网站是通过从服务器访问。
;; WHEN: Thu Nov 7 10:24:16 2019
;; MSG SIZE rcvd: 168
(9)此时,我们来验证当前的服务器同步情况,修改主服务器区域库文件内容:/var/named/baidu.com.zone
[root@ansible~]#vim /var/named/baidu.com.zone
$TTL 1D
@ IN SOA dns1 admin.baidu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1
NS dns2
dns1 A 192.168.34.101
dns2 A 192.168.34.103
www CNAME webs
webs A 6.6.6.6
webs A 8.8.8.8
webs A 7.7.7.7
@ MX 10 mailser1 #删除此条配置
@ MX 20 mailser2 #删除此条配置
mailser1 A 11.9.9.9
mailser2 A 9.9.9.9
@ A 8.8.8.8
* A 8.8.8.8
$GENERATE 1-200 server$ A 192.168.34.$
(10)删除之后,将DNS服务重启:rndc reload
[root@ansible~]
server reload successful
(11)然后我们在客户端C上dig查询同步信息,此时,我们分别在主从服务器上都可以看到MX的配置记录,这是为什么呢?
这是因为我们修改后同步不同步,不是只修改配置文件,而是要修改上面的序列号(serial),才会生效,请看第12步:
[root@centos6network-scripts]#dig -t mx baidu.com @192.168.34.101
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> -t mx baidu.com @192.168.34.101
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50791
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;baidu.com. IN MX
;; AUTHORITY SECTION:
baidu.com. 10800 IN SOA dns1.baidu.com. admin.baidu.com. 0 86400 3600 604800 10800
;; Query time: 7 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov 7 10:33:31 2019
;; MSG SIZE rcvd: 74
[root@centos6network-scripts]#dig -t mx baidu.com @192.168.34.103
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> -t mx baidu.com @192.168.34.103
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 48437
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 4
;; QUESTION SECTION:
;baidu.com. IN MX
;; ANSWER SECTION:
baidu.com. 86400 IN MX 10 mailser1.baidu.com.
baidu.com. 86400 IN MX 20 mailser2.baidu.com.
;; AUTHORITY SECTION:
baidu.com. 86400 IN NS dns1.baidu.com.
baidu.com. 86400 IN NS dns2.baidu.com.
;; ADDITIONAL SECTION:
mailser1.baidu.com. 86400 IN A 11.9.9.9
mailser2.baidu.com. 86400 IN A 9.9.9.9
dns1.baidu.com. 86400 IN A 192.168.34.101
dns2.baidu.com. 86400 IN A 192.168.34.103
;; Query time: 10 msec
;; SERVER: 192.168.34.103#53(192.168.34.103)
;; WHEN: Thu Nov 7 10:33:34 2019
;; MSG SIZE rcvd: 179
(12)将序列号(serial)修改为1,改完之后重新加载DNS服务,rndc reload:
[root@ansible~]#vim /var/named/baidu.com.zone
$TTL 1D
@ IN SOA dns1 admin.baidu.com. (
1 ; serial #此处的0已经改为1
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS dns1
NS dns2
dns1 A 192.168.34.101
dns2 A 192.168.34.103
www CNAME webs # 此处也做了修改
webs A 66.66.66.66 # 此处也做了修改
mailser1 A 11.9.9.9
mailser2 A 9.9.9.9
@ A 8.8.8.8
* A 8.8.8.8
$GENERATE 1-200 server$ A 192.168.34.$
(13)修改完配置后,重启DNS服务,并在客户端进行dig验证,此时的IP地址已经同步,并且没有了MX配置文件的记录:
[root@ansible~]#rndc reload 重启DNS服务
server reload successful
[root@centos6network-scripts]#dig www.baidu.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 22540
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 86400 IN CNAME webs.baidu.com.
webs.baidu.com. 86400 IN A 66.66.66.66 此时已经同步为新的IP地址
;; AUTHORITY SECTION:
baidu.com. 86400 IN NS dns2.baidu.com.
baidu.com. 86400 IN NS dns1.baidu.com.
;; ADDITIONAL SECTION:
dns1.baidu.com. 86400 IN A 192.168.34.101
dns2.baidu.com. 86400 IN A 192.168.34.103
;; Query time: 1 msec
;; SERVER: 192.168.34.101#53(192.168.34.101)
;; WHEN: Thu Nov 7 10:41:43 2019
;; MSG SIZE rcvd: 136
以上转自
https://www.cnblogs.com/struggle-1216/p/12582227.html 感谢博主
实验环境
主服务器:192.168.138.200
从服务器:192.168.138.201
bind安装
安装很简单,执行以下命令即可:
yum install -y bind
先看一下bind的版本和配置文件安装路径
# named -v
BIND 9.9.4-RedHat-9.9.4-51.el7_4.2 (Extended Support Version)
# rpm -qc bind
/etc/logrotate.d/named
/etc/named.conf
/etc/named.iscdlv.key
/etc/named.rfc1912.zones
/etc/named.root.key
/etc/rndc.conf
/etc/rndc.key
/etc/sysconfig/named
/var/named/named.ca
/var/named/named.empty
/var/named/named.localhost
/var/named/named.loopback
/etc/named.conf,/etc/named.rfc1912.zones是主配置文件
/var/named/named.ca是根区域解析库文件
/var/named/named.localhost,/var/named/named.loopback 是本机和环回地址的解析库文件
rndc---remote name domain controller这是一个辅助管理工具,默认情况下与BIND安装在同一主机,而且只能通过127.0.0.1连接named进程,监听的端口号是TCP/953。
配置named.conf文件
这个配置文件主要分3段内容,options是全局配置,logging是日志配置,最后是区域解析库配置以及所包含的区域解析库文件配置。
# cat /etc/named.conf
// 2个双//在这个配置文件中表示注释
options {
//下面一行表示监听的端口和IP地址,其中2个{}内部两端都要有空格,IP地址要以;号结尾。
这里的IP地址至少应该包含宿主机可以和外部通迅的地址,也可以包含一个本地回环地址供rndc工具使用。也可以简写成{ any; }
每个语句结束同样都要以;结尾,如果不需要监听IPV6可以注释掉或删除。
listen-on port 53 { 192.168.138.200; 127.0.0.1; };
// listen-on-v6 port 53 { ::1; };
//下面一行表示named的工作目录为/var/named
directory "/var/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";
//下面一行表示允许哪些主机查询,改成any表示所有
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";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
//.表示根区域,这个区域是必须要有的
zone "." IN {
type hint; //hint表示根区域类型
file "named.ca"; //指定根区域解析库文件名称所在位置,相对于/var/named
};
//指定区域文件名称,所有的区域定义都可以写在named.rfc1912.zones文件中
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
配置主服务器192.168.138.200
编辑/etc/named.rfc1912.zones在文件末尾添加一个正向解析区域和一个反向解析区域
# cat /etc/named.rfc1912.zones
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
// 添加一个正向解析区域,并定义为主服务器
zone "frank.com" IN {
type master; //master表示主服务器
file "frank.com.zone"; //指明区域解析库文件,相对于/var/named/
};
//添加一个反向解析区域,并定义为主服务器
zone "138.168.192.in-addr.arpa" IN {
type master;
file "138.zone";
};
创建frank.com.zone解析库文件
# cat frank.com.zone
$TTL 1D
frank.com. IN SOA ns.frank.com. admin.frank.com. (
201802001 ;序列号
2H ;刷新时间
10M ;重试时间间隔
1W ;过期时间
1D ;无法解析时否定答案的TTL值
)
frank.com. IN NS ns1.frank.com.
IN NS ns2.frank.com.
ns1.frank.com. IN A 192.168.138.200
ns2.frank.com. IN A 192.168.138.200
frank.com. IN MX 10 mx1.frank.com.
IN MX 20 mx2.frank.com.
mx1.frank.com. IN A 192.168.138.200
mx2.frank.com. IN A 192.168.138.200
www.frank.com. IN A 192.168.138.200
master IN CNAME www.frank.com.
web IN CNAME www.frank.com.
创建138.zone反向解析库文件
# cat 138.zone
$TTL 1d
@ IN SOA ns.frank.com. admin.frank.com. (
201802001;
2H;
10M;
1W;
1D;
)
IN NS ns.frank.com.
200 IN PTR www.frank.com.
200 IN PTR ns.frank.com.
注意事项:
- 区域解析库文件第一个记录必须是SOA记录,必须有NS记录并且正解区域要有NS记录的A记录,反解则不需要有NS记录对应的A记录。
- $TTL表示宏定义,TTL(Time- To-Live),简单的说它表示一条域名解析记录在DNS服务器上缓存时间.当各地的DNS服务器接受到解析请求时,就会向域名指定的DNS服务器发出解析请求从而获得解析记录;在获得这个记录之后,记录会在DNS服务器中保存一段时间,这段时间内如果再接到这个域名的解析请求,DNS服务器将不再向DNS服务器发出请求,而是直接返回刚才获得的记录;而这个记录在DNS服务器上保留的时间,就是TTL值。
- 这个文件里所有的域名结尾的点号一定不能省略。
- 区域解析库文件是放在/var/named目录下,由named进程是以named用户运行,还要让区域解析库文件的属组为named。
# ll /var/named
total 16
drwxrwx---. 2 named named 23 Feb 21 13:10 data
drwxrwx---. 2 named named 60 Feb 21 13:11 dynamic
-rw-r-----. 1 root named 2281 May 22 2017 named.ca
-rw-r-----. 1 root named 152 Dec 15 2009 named.empty
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
-rw-r-----. 1 root named 168 Dec 15 2009 named.loopback
drwxrwx---. 2 named named 44 Feb 21 13:14 slaves
检查配置文件语法
# named-checkconf
没有任何输出表示 /etc/named.conf没有语法错误
# named-checkzone "frank.com" "frank.com.zone"
zone frank.com/IN: loaded serial 201802001
OK
正向解析区域检查没问题
# named-checkzone "frank.com" "138.zone"
zone frank.com/IN: loaded serial 201802001
OK
反向解析区域检查没问题
启动named服务
# systemctl start named.service
使用dig测试
dig语法使用格式:
dig -t [SOA|A|CNAME|NS|MX] 域名 [@dns服务器地址] [+[no]trace|recurse]
dig -t A web.frank.com @192.168.138.200
; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.2 <<>> -t A web.frank.com @192.168.138.200
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40444
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 3
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;web.frank.com. IN A
;; 下面就是解析出的结果
;; ANSWER SECTION:
web.frank.com. 86400 IN CNAME www.frank.com.
www.frank.com. 86400 IN A 192.168.138.200
;; AUTHORITY SECTION:
frank.com. 86400 IN NS ns2.frank.com.
frank.com. 86400 IN NS ns1.frank.com.
;; ADDITIONAL SECTION:
ns1.frank.com. 86400 IN A 192.168.138.200
ns2.frank.com. 86400 IN A 192.168.138.200
;; Query time: 0 msec
;; SERVER: 192.168.138.200#53(192.168.138.200)
;; WHEN: Wed Feb 21 12:35:24 CST 2018
;; MSG SIZE rcvd: 144
到此DNS主服务器已经配置完毕并能正常工作。
从服务器配置192.168.138.201
编辑/etc/named.conf将监听IP地址改一下,其它不需要更改
# cat /etc/named.conf
listen-on port 53 { 192.168.138.201; 127.0.0.1; };
编辑/etc/named.rfc1912.zones将type类型改为slave
# cat /etc/named.rfc1912.zones
zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};
// 添加一个正向解析区域,并定义为从服务器
zone "frank.com" IN {
type slave; //slave表示主服务器
masters { 192.168.138.200; }; //指明主服务器IP
file “slaves/frank.com"; //指定从服务区域解析库文件位置
};
//添加一个反向解析区域,并定义为主服务器
zone "138.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.138.200; };
file "slaves/138.zone";
};
注意事项:
从服务器的区域解析库文件应当是从主服务器加载过来的,所以无需创建区域解析库文件。
启动named服务
# systemctl start named
检查/var/named/slaves目录
# ll /var/named/slaves/
total 8
-rw-r--r--. 1 named named 268 Feb 21 13:14 138.zone
-rw-r--r--. 1 named named 554 Feb 21 13:14 frank.com.zone
这2个文件是自动从主服务器同步过来的。
使用dig验证
dig -t MX frank.com @192.168.138.201
; <<>> DiG 9.9.4-RedHat-9.9.4-51.el7_4.2 <<>> -t MX frank.com @192.168.138.201
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57146
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 5
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;frank.com. IN MX
;; ANSWER SECTION:
frank.com. 86400 IN MX 10 mx1.frank.com.
frank.com. 86400 IN MX 20 mx2.frank.com.
;; AUTHORITY SECTION:
frank.com. 86400 IN NS ns1.frank.com.
frank.com. 86400 IN NS ns2.frank.com.
;; ADDITIONAL SECTION:
mx1.frank.com. 86400 IN A 192.168.138.200
mx2.frank.com. 86400 IN A 192.168.138.200
ns1.frank.com. 86400 IN A 192.168.138.200
ns2.frank.com. 86400 IN A 192.168.138.200
;; Query time: 0 msec
;; SERVER: 192.168.138.201#53(192.168.138.201)
;; WHEN: Wed Feb 21 13:15:43 CST 2018
;; MSG SIZE rcvd: 178
rndc命令使用
rndc reload:
重载主配置文件和区域解析库文件,可以不用重启named服务情况下更新主配置文件和区域解析库文件。
rndc reload zone_name:
重域指定区域
rndc retransfer zone:
手动启动区域传送,不管序号是否增加或减少
rndc notify zone:
手动通知区域
rndc reconfig:
重载主配置文件
rndc querylog:
开启或关闭查询日志
关于DNS服务器
- DNS服务器主从服务器,一般情况下主从一同工作,在客户端一般会配有多个DNS地址,如果第一个DNS地址无法解析,那么第二DNS地址也是无法解析的,当第一个DNS地址联系不上时(宕机)才会联系第二个DNS地址并寻求解析。
- DNS服务器如果自已无法解析时会去其它服务器查询,查询到了会缓存下来,当同一用户在缓存失效之前再次请求同一记录时会优先使用缓存回应给客户端。至于缓存多长时间大了和小了都有优点和缺点,一般互联网上的DNS缓存大概要2-4小时,也就是当你在互联网更改记录一般会2-4小时后才能生效。
- DNS服务器也可以部署成为缓存服务器。
- DNS服务器中的转发器,部署过windows服务器的都知道,如果本机解析不了的可以使用转发器将请求转发到当地运营商的DNS服务器请求解析。
windows中的DNS服务器架设完成后,客户端会自动向DNS服务器注册,服务器端也会自动添加相应的A记录和PTR记录,linux系统当中是不是只能手动添加这些记录才能解析到局域网中的计算机名呢?
以上转发自https://www.cnblogs.com/mfyang/p/8467421.html ,感谢博主