DNS之二---实现DNS主从复制
实现主从复制
主从复制:
1、应该为一台独立的名称服务器;
2、主服务器的区域解析库文件中必须有一条NS记录是指向从服务器;
3、从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中;
4、主服务器得允许从服务器作区域传送;
5、主从服务器时间应该同步,可通过ntp进行;
6、bind程序的应该保持一致;否则,应该从高,主低;
实验前准备:
主服务器:A (IP地址为192.168.34.101)
从服务器:B (IP地址为192.168.34.103)
客户端:C (IP地址为192.168.34.105)
配置主服务器相关文件:
(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
[]#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.$
配置从服务器的文件:
(1)在从服务器B上安装DNS:yum install bind
在配置文件中修改/etc/named.conf相关配置文件
[_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配置文件加以修改
[_1 ~]# vim /etc/named.rfc1912.zones zone "baidu.com" { # 域名要与主服务器的域名一致 type slave; # 类型为“奴隶的意思” masters {192.168.34.101;}; #将主服务器的IP地址写入 file "slaves/baidu.com.zone.slave"; # 将从服务器的数据放到slaves路径内 };
(3)重新加载主服务器A的DNS服务:
[]#rndc reload server reload successful
(4)查询当前从服务器B的同步的数据文件,此时我们可以看到/var/named/slaves目录下已经同步了主服务器的数据内容:
[_1 ~]# ls /var/named/slaves baidu.com.zone.slave
配置客户端:
(5)下来我在客户端C配置两个DNS地址,将主从服务器的IP地址都关联起来:
[]#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服务地址
[]#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地址是来自哪个服务器:
[]#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查看当前内容:
[]#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
[~]#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
[~]#rndc reload server reload successful
(11)然后我们在客户端C上dig查询同步信息,此时,我们分别在主从服务器上都可以看到MX的配置记录,这是为什么呢?这是因为我们修改后同步不同步,不是只修改配置文件,而是要修改上面的序列号(serial),才会生效,请看第12步:
[]#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 []#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:
[~]#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配置文件的记录:
[~]#rndc reload 重启DNS服务 server reload successful []#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