前期准备:我使用的是192.168.141.xx网段,centos6做localdns,centos7做www.magedu.com,需要7台机器,分别是:
client,ldns,rootdns,comdns,magedumasterdns,mageduslavedns,webserver(www.magedu.com)
A、搭建centos7的网站并编辑各部分的IP地址:
[root@centos7 ~]# yum install httpd
[root@centos7 ~]# vim /var/www/html/index.html
<H1>welcome to magedu.com</h1>
[root@centos7 ~]# systemctl restart httpd
[root@centos7 ~]#
[root@master ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:89:2c:05 brd ff:ff:ff:ff:ff:ff
inet 192.168.141.27/24 brd 192.168.141.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe89:2c05/64 scope link
valid_lft forever preferred_lft forever
[root@slave ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:e2:dd:28 brd ff:ff:ff:ff:ff:ff
inet 192.168.141.37/24 brd 192.168.141.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fee2:dd28/64 scope link
valid_lft forever preferred_lft forever
[root@comdns ~]# ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:40:40:73 brd ff:ff:ff:ff:ff:ff
inet 192.168.141.17/24 brd 192.168.141.255 scope global eth0
inet6 fe80::20c:29ff:fe40:4073/64 scope link
valid_lft forever preferred_lft forever
[root@rootdns ~]# ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:43:c8:a8 brd ff:ff:ff:ff:ff:ff
inet 192.168.141.7/24 brd 192.168.141.255 scope global eth0
inet6 fe80::20c:29ff:fe43:c8a8/64 scope link
valid_lft forever preferred_lft forever
[root@LocalDNS ~]# ip a
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:83:dd:6c brd ff:ff:ff:ff:ff:ff
inet 192.168.141.6/24 brd 192.168.141.255 scope global eth0
inet6 fe80::20c:29ff:fe83:dd6c/64 scope link
valid_lft forever preferred_lft forever
B、配置相关的配置文件:
[root@master ~]# 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 {192.168.141.37;};
将此两项注释掉。并加入 “ allow-transfer {192.168.141.37;}; ”表示只允许从服务器来抓取记录。
[root@master ~]# rndc reload
server reload successful 此处要重启一下服务。
[root@master ~]# vim /etc/named.rfc1912.zones
// named.rfc1912.zones:
zone "magedu.com" {
type master;
file "magedu.com.zone";
}; 把“ zone ..}; ”添入。
[root@master ~]# vim /var/named/magedu.com.zone
$TTL 1D
@ IN SOA master admin.magedu.com ( 1 1D 1H 1W 3H )
NS master
NS slave
master A 192.168.141.27
slave A 192.168.141.37
www A 192.168.141.254
此步骤是编辑该文件,把网站的域名写入。
更改权限及所属组:
[root@master ~]# chmod 640 /var/named/magedu.com.zone
[root@master ~]# chgrp named /var/named/magedu.com.zone
[root@master ~]# systemctl start named
[root@master ~]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /us
r/lib/systemd/system/named.service.
因为我恢复了快照,数据没有了,我就重新编辑了数据库,在此处补上内容如下:
[root@master ~]# vim magedu.com.zone
$TTL 1D
@ IN SOA master admin.magedu.com ( 1 1D 1H 1W 3H )
NS master
NS slave
master A 192.168.141.27
slave A 192.168.141.37
www A 192.168.141.254
我们现在重启一下服务,如下所示,没有报错提示,说明已经成功。
[root@master ~]# systemctl restart named
[root@master ~]# systemctl status named
● named.service - Berkeley Internet Name Domain (DNS)
Loaded: loaded (/usr/lib/systemd/system/named.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2019-02-14 14:22:29 CST; 21s ago
Process: 21030 ExecStop=/bin/sh -c /usr/sbin/rndc stop > /dev/null 2>&1 || /bin/kill -TERM $MAINPID (code=exited, status=0/SUCCESS)
Process: 21045 ExecStart=/usr/sbin/named -u named -c ${NAMEDCONF} $OPTIONS (code=exited, status=0/SUCCESS)
Process: 21042 ExecStartPre=/bin/bash -c if [ ! "$DISABLE_ZONE_CHECKING" == "yes" ]; then /usr/sbin/named-checkconf -z "$NAMEDCONF"; else echo "Checking of zone files is disabled"; fi (code=exited, status=0/SUCCESS)
Main PID: 21047 (named)
Tasks: 7
CGroup: /system.slice/named.service
└─21047 /usr/sbin/named -u named -c /etc/named.conf
Feb 14 14:22:29 master named[21047]: command channel listening on ::1#953
Feb 14 14:22:29 master named[21047]: managed-keys-zone: journal file is out of date: removing journal file
Feb 14 14:22:29 master named[21047]: managed-keys-zone: loaded serial 2
Feb 14 14:22:29 master named[21047]: zone localhost/IN: loaded serial 0
Feb 14 14:22:29 master named[21047]: zone magedu.com/IN: loaded serial 1
Feb 14 14:22:29 master named[21047]: zone localhost.localdomain/IN: loaded serial 0
Feb 14 14:22:29 master named[21047]: all zones loaded
Feb 14 14:22:29 master named[21047]: running
Feb 14 14:22:29 master named[21047]: zone magedu.com/IN: sending notifies (serial 1)
Feb 14 14:22:29 master systemd[1]: Started Berkeley Internet Name Domain (DNS).
我们现在去localdns上dig一下网络,显示如下:
[root@LocalDNS ~]# dig www.magedu.com @192.168.141.27
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.magedu.com @192.168.141.27
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63810
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86400 IN A 192.168.141.254
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS slave.magedu.com.
magedu.com. 86400 IN NS master.magedu.com.
;; ADDITIONAL SECTION:
master.magedu.com. 86400 IN A 192.168.141.27
slave.magedu.com. 86400 IN A 192.168.141.37
;; Query time: 8 msec
;; SERVER: 192.168.141.27#53(192.168.141.27)
;; WHEN: Fri Feb 8 13:18:01 2019
;; MSG SIZE rcvd: 121
到此,我们的主dns服务器已经建好。
C、我们现在去建从服务器:
[root@slave ~]# vim /etc/named.conf
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// 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;}; 照例将此两项注释掉,我们为了安全起见,加入 “ allow-transter {none;}; ”作为从服务器是不允许任何人从我这里抓取记录的。
[root@slave ~]# vim /etc/named.rfc1912.zones
// named.rfc1912.zones:
zone "magedu.com" {
type sla[root@slave ~]# vim /etc/named.rfc1912.zones
// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
zone "magedu.com" {
type slave;
masters {192.168.141.27;};
file "slaves/magedu.com.zone"; };
zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};
我们将
zone "magedu.com" {
type slave;
master {192.168.141.27;};
file "slaves/magedu.com.zone"; }填入。
[root@slave ~]# systemctl start named
[root@slave ~]# ll /var/named/slaves/
total 4
-rw-r--r-- 1 named named 330 Feb 14 14:51 magedu.com.zone
以上内容可以看到,数据库内容已被成功复制过来了。说明主从已经实现复制了。
现在,我们去在localdns上dig一下网络:
[root@LocalDNS ~]# dig www.magedu.com @192.168.141.37
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.magedu.com @192.168.141.37
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7460
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86400 IN A 192.168.141.254
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS slave.magedu.com.
magedu.com. 86400 IN NS master.magedu.com.
;; ADDITIONAL SECTION:
master.magedu.com. 86400 IN A 192.168.141.27
slave.magedu.com. 86400 IN A 192.168.141.37
;; Query time: 4 msec
;; SERVER: 192.168.141.37#53(192.168.141.37)
;; WHEN: Fri Feb 8 14:02:32 2019
;; MSG SIZE rcvd: 121 说明已经成功。
此时如果我们想要主从同步,就要在配置文件中加入如下内容:
将“ blog A 192.168.141.154 ”加入。注意:现在的版本号就应该是“ 2 ”了。
[root@master ~]# vim magedu.com.zone
$TTL 1D
@ IN SOA master admin.magedu.com ( 2 1D 1H 1W 3H )
NS master
NS slave
master A 192.168.141.27
slave A 192.168.141.37
www A 192.168.141.254
blog A 192.168.141.154
[root@LocalDNS ~]# dig blog.magedu.com @192.168.141.37
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> blog.magedu.com @192.168.141.37
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 56467
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;blog.magedu.com. IN A
;; AUTHORITY SECTION:
magedu.com. 10800 IN SOA master.magedu.com. admin.magedu.com.magedu.com. 1 86400 3600 604800 10800
;; Query time: 1 msec
;; SERVER: 192.168.141.37#53(192.168.141.37)
;; WHEN: Fri Feb 8 14:06:13 2019
;; MSG SIZE rcvd: 93
此时就算是dig blog也能同步出现查询结果。
D、我们去建comdns。
[root@comdns ~]# vim /etc/named.conf
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
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";
// allow-query { localhost; }; 照例注释掉该两项。
[root@comdns ~]# vim /etc/named.rfc1912.zones
// named.rfc1912.zones:
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
zone "com" {
type master;
file "com.zone";
}; 将该内容填入。
[root@comdns named]# vim com.zone
$TTL 1D
@ IN SOA master admin.magedu.com ( 2 1D 1H 1W 3H ) NS master
master NS dns1 (子域委派给了27和37来管理)
master NS dns2
master A 192.168.141.17
dns1 A 192.168.141.27
dns2 A 192.168.141.37
comdns是把magedu.com委派给141.37和141.27的,
[root@comdns named]# service named start
Starting named: [ OK ]
此时,我们去localdns上dig一下网络,192.168.141.17上没有blog,它被委派给了27和37,若能dig出结果,说明成功了,如下:
[root@LocalDNS ~]# dig blog.magedu.com @192.168.141.17
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> blog.magedu.com @192.168.141.17
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 54859
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;blog.magedu.com. IN A
;; AUTHORITY SECTION:
magedu.com. 10800 IN SOA master.magedu.com. admin.magedu.com.magedu.com. 1 86400 3600 604800 10800
;; Query time: 8 msec
;; SERVER: 192.168.141.17#53(192.168.141.17)
;; WHEN: Fri Feb 8 15:34:11 2019
;; MSG SIZE rcvd: 93
[root@LocalDNS ~]# dig www.magedu.com @192.168.141.17
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.magedu.com @192.168.141.17
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33362
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86400 IN A 192.168.141.254
;; AUTHORITY SECTION:
magedu.com. 86400 IN NS dns2.com.
magedu.com. 86400 IN NS dns1.com.
;; ADDITIONAL SECTION:
dns1.com. 86400 IN A 192.168.141.27
dns2.com. 86400 IN A 192.168.141.37
;; Query time: 7 msec
;; SERVER: 192.168.141.17#53(192.168.141.17)
;; WHEN: Fri Feb 8 15:37:07 2019
;; MSG SIZE rcvd: 118
blog和www都没问题。
主从复制号称有容错性,我们把192.168.141.27的主服务down了,去dig27是无反应的,但是37是正常的,然而dig17同样可以查询出结果。所以,此处体现出容错性。
E、我们现在该建rootdns了。
[root@rootdns yum.repos.d]# vim /etc/named.conf
// 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";
// allow-query { localhost; };
recursion yes; 注释掉两项。
现在我们去localdns上dig一下网络:
[root@LocalDNS ~]# dig www.magedu.com @192.168.141.7
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6 <<>> www.magedu.com @192.168.141.7
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8006
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;www.magedu.com. IN A
;; ANSWER SECTION:
www.magedu.com. 86020 IN A 192.168.141.254
;; AUTHORITY SECTION:
magedu.com. 86020 IN NS dns1.com.
magedu.com. 86020 IN NS dns2.com.
;; ADDITIONAL SECTION:
dns2.com. 86020 IN A 192.168.141.37
dns1.com. 86020 IN A 192.168.141.27
;; Query time: 5 msec
;; SERVER: 192.168.141.7#53(192.168.141.7)
;; WHEN: Fri Feb 8 17:33:28 2019
;; MSG SIZE rcvd: 118
目前,我们的7,17,27,37,都可以dig成功。
F、我们要搭建本地dns:
[root@LocalDNS yum.repos.d]# vim /etc/named.conf
[root@LocalDNS yum.repos.d]# vim /etc/named.conf
// 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";
// allow-query { localhost; };
recursion yes; 此两处照例注释掉。
dnssec-enable no;
dnssec-validation no;此处的dns解密的两个功能都给关闭为“ no ”,
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
[root@LocalDNS yum.repos.d]# vim /var/named/named.ca
. 3600000 NS A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET. 3600000 A 192.168.141.254
上述内容解释:因为我们自己搭建了一个根,所以要修改 /var/named/named.ca ,把IP改为自己搭建的IP。
[root@LocalDNS yum.repos.d]# service named restart
Stopping named: [ OK ]
Generating /etc/rndc.key: [ OK ]
Starting named: [ OK ]
到此,我们的dns配置就完成了。我们拿windows来测一下:
上图可看出,Windows可以ping通192.168.141.254的网站。
我们修改一下windows的ip就可以用www.magedu.com的名字来访问网站了。
到此,本实验正式结束。
原文地址:http://blog.51cto.com/14128387/2350331