DNS主從複製及區域傳送
DNS:Domain Name System 域名系統
DNS是由解析器和域名服務器組成的。
域名服務器是指保存有該網絡中所有的域名和對應IP地址,並具有將域名轉換爲IP地址功能的服務器。
DNS使用TCP與UDP端口號都是53,只要使用UDP,服務器之間備份是用tcp連接
DNS解析查詢主要有兩者:遞歸查詢(進行一次查詢就能得到最終結果)
迭代查詢(需要進行多次查詢,才能得到最終結果)
互聯網上的應用方式一般是:本地遞歸,互聯網部分迭代。所有DNS都不知道其他DNS在哪裏,但都知道根在哪裏,
本地主機向本地DNS遞歸,本地DNS出去迭代查詢後向本地返回最終結果。
DNS常見的記錄類型:
A記錄: 由主機名解析IP地址
PTR記錄:由IP地址解析主機名
NS記錄: 用來指定本地的域名服務器(有主,有輔)
MX記錄: 用來指定本地的郵件服務器
CNAME: 用來指定一個主機的別名
SOA: 起始授權記錄,用來說明本域的主域名服務器
區域傳送:從域名服務器每隔一段時間要去主域名服務器上去查詢更新,以保證數據的一致性。這個過程叫區域傳送。
區域傳送過程使用TCP協議 ,53號端口。
區域傳送有兩種類型:
增量區域傳送:ixfr
完全區域傳送:axfr
實驗環境:
Master Dns Server:CentOS 6.4(2.6.32-358.el6.x86_64)IP:192.168.28.128 hostname:www.ajj.com
Slave Dns Server:CentOS 6.4(2.6.32-358.el6.x86_64)IP:192.168.28.129
Domain name:ajj.com
需要安裝的軟件:bind
在連網的環境下直接下載安裝:yum install -y bind
首先要在兩臺虛擬機上把防火牆關閉掉,因爲iptables會影響到區域傳送,主從複製實現不了。
在命令行輸入:service iptables stop(我個人覺得可能版本的問題,有些版本是不用關的,也可能是網絡問題吧)
開始配置DNS實驗:
我們安裝好bind包後進入DNS的主配置文件:
options {
listen-on port 53 { any; };//將127.0.0.1修改爲any,對監聽任何電腦
listen-on-v6 port 53 { any; };//同上,
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 { any; };//允許所以主機查詢
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "ajj.com" IN {#定義正向區域
type master;#指定爲主dns
file "ajj.com";#定義正向資源記錄文件名
allow-transfer { 192.168.28.129; };#允許將更新的文件傳送到從dns上,ip是從dns地址
};
zone "28.168.192.in-addr.arpa" IN {#定義反向區域
type master;#指定爲主dns
file "28.168.192.in-addr.arpa";#定義反向資源記錄文件名
allow-transfer { 192.168.28.129; };#允許將更新的文件傳送到從dns上,ip是從dns地址
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
編輯正向解析資源記錄:
[root@localhost named]# vim /var/named/ajj.com
$TTL 1D
@ IN SOA @ rname.invalid. (
2013070611 ; serial
#每次更新後服務器都將此號碼更改,從服務器若查詢到該號碼改變就想服務器請求更新。
1D ; refresh#從服務器的更新時間
1H ; retry#從服務器若更新失敗後的重試時間
1W ; expire#重試多久後就宣告失敗不再更新
3H ) ; minimum#若主服務器找不到對應的請求,允許客戶端再次查詢的時間
@ NS ns1.ajj.com.#域名服務器
NS slave.ajj.com.#域名服務器
ns1 IN A 192.168.28.128#域名到ip記錄
slave.ajj.com. IN A 192.168.28.129#域名到ip記錄
編輯正向解析資源記錄:
[root@localhost named]# vim 28.168.192.in-addr.arpa
$TTL 1D
@ IN SOA @ rname.invalid. (
2013070612 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ NS ns1.ajj.com.
@ NS slave.ajj.com.
128 IN PTR www.ajj.com.#由ip到域名
129 IN PTR slave.ajj.com.#由ip到域名
修改主從DNS SERVER的/etc/resolv.conf
主dns上
[root@localhost named]# vim /etc/resolv.conf
; generated by /sbin/dhclient-script
nameserver 192.168.28.128
nameserver 192.168.28.129
從dns上
[root@localhost slaves]# vim /etc/resolv.conf
; generated by /sbin/dhclient-script
nameserver 192.168.28.129
nameserver 192.168.28.128
我在配置的時候第一次重啓出現
[root@localhost ~]# service named restart
Stopping named: [ OK ]
Generating /etc/rndc.key:
這裏我們需要執行[root@localhost ~]# rndc-confgen -r /dev/urandom -a
wrote key file "/etc/rndc.key"
[root@localhost ~]#
[root@localhost ~]# service named restart
Stopping named: [ OK ]
Starting named: [ OK ]
這樣就可以重啓成功了。這裏要生成一個rndc的密鑰,是用來做遠程連接用的。
到這裏主dns基本配置完成,接下來配置從dns
安裝bind和一些基本操作和主的一樣
從的只要修改從dns的配置文件就可以了
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
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 { any; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
zone "ajj.com" IN {#定義正向區域
type slave;#指定爲從dns
file "slaves/ajj";#定義正向資源記錄文件名
masters { 192.168.28.128; };#定義從dns去ip爲192.168.28.128的 主dns上覆制文件
};
zone "28.168.192.in-addr.arpa" IN {#定義反向區域
type slave;#指定爲從dns
file "slaves/28.168.192";#定義反向資源記錄文件名
masters { 192.168.28.128; };#定義從dns去ip爲192.168.28.128的 主dns上覆制文件
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
從dns配置完成接下來測試下
我們來看下從dns上是否將主dns上的資源記錄文件複製過來了
[root@localhost ~]# cd /var/named/slaves/
[root@localhost slaves]# ls
28.168.192 ajj
[root@localhost slaves]# cat ajj
$ORIGIN .
$TTL 86400; 1 day
ajj.comIN SOAajj.com. rname.invalid. (
2013070611 ; serial
86400 ; refresh (1 day)
3600 ; retry (1 hour)
604800 ; expire (1 week)
10800 ; minimum (3 hours)
)
NSns1.ajj.com.
NSslave.ajj.com.
$ORIGIN ajj.com.
ns1A192.168.28.128
slaveA192.168.28.129
[root@localhost slaves]# cat 28.168.192 $ORIGIN . $TTL 86400; 1 day 28.168.192.in-addr.arpaIN SOA28.168.192.in-addr.arpa. rname.invalid. ( 2013070612 ; serial 86400 ; refresh (1 day) 3600 ; retry (1 hour) 604800 ; expire (1 week) 10800 ; minimum (3 hours) ) NSns1.ajj.com. NSslave.ajj.com. $ORIGIN 28.168.192.in-addr.arpa. 128PTRwww.ajj.com. 129PTRslave.ajj.com. |
複製成功,表示任務基本完成了。