DNS(Domain Name System,域名系統)
在互聯網上實現FQDN與IP地址的解析,這樣避免了人們在訪問站點時,記憶長串難懂的ip地址,只需要記憶人們容易理解的域名就行了。
FQDN (Fully Qualified Domain Name,完全合格域名)
FQDN------------------IP Address 正向解析
IP Address------------FQND 反向解析
簡述工作原理:
我們大家都知道,全球一共有13臺根節點服務器,當我們的DNS服務器收到一個解析請求時,會觸發一箇中斷從用戶模式轉變到內核模式把報文接進來,當把第四層封裝解開時,就知道用戶訪問的是53號端口,內核會把數據交給工作在用戶空間的這個進程,然後named服務會查詢自己的解析庫,如果是本服務器負責解析的域,就直接返回權威答案,如果不是,將會找根節點服務器,經過一輪迭代後,把查詢到的結果給客戶端。
DNS服務程序:
用的最多的就是bind,在安裝好後主配置文件在/etc/named.conf,服務進程名named。
啓動服務後,會向內核註冊使用一個ip與端口的套接字,監聽在本機tcp53端口,和udp53端口。
下面讓我們來用bind實現DNS解析吧:
實驗規劃:
解析域:tuchao.com
主DNS服務器:dns.tuchao.com 192.168.1.200
從DNS服務器:ns2.tuchao.com 192.168.1.254
host:
www.tuchao.com 192.168.1.100
www.tuchao.com 192.168.1.101
mail.tuchao.com 192.168.1.106
ftp.tuchao.com 192.168.1.120
pop.tuchao.com 192.168.1.110
ssh.tuchao.com CNAME pop
功能:實現正反向主從DNS解析,從服務器能自動從主服務器同步區域數據,並且設定權限,主服務器只允許從服務器獲取區域數據,從服務器不允許任何主機獲取區域數據,保證安全性。
1、安裝bind程序軟件:
# yum install bind -y
2、修改主配置文件/etc/named.conf
用雙斜線註釋掉下面三行然後保存
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
allow-query { localhost; };
3、編輯包含的區域文件/etc/named.rfc1912.zones,增加一個tuchao.com區域。
zone "tuchao.com" IN {
type master;
file "tuchao.com.zone";
};
然後去/var/named/目錄創建tuchao.com.zone這個區域文件。
每個區域文件的第一條記錄必須是SOA記錄,定義主dns服務器,以及相關信息。
這裏兩個IP地址指向一個主機名,是爲了實現負載均衡,交替解析。
CNAME是別名。
配置完成後保存退出,檢查下有沒有語法錯誤,看到OK就代表沒有。
# named-checkconf
# named-checkzone "tuchao.com" /var/named/tuchao.com.zone
服務成功啓動,並且已經偵聽在tcp和udp的53端口上了。
配置resolv.conf文件把DNS設爲自己——nameserver 127.0.0.1
看下能不能正常解析。
# dig -t NS tuchao.com
# dig -t A www.tuchao.com
再試試能不能解析外網的域名,看來是可以正常解析的,因爲不是本dns負責的區域,他會去找根。
# dig -t NS baidu.com
接下來設置反向區域,實現反向解析。
編輯/etc/named.rfc1912.zones,增加一個1.168.192.in-addr.arpa區域。
創建1.168.192.zone反向區域文件,我們可以拷貝正向區域文件來修改。
# cp tuchao.com.zone 1.168.192.zone
# chown :named /var/named/* ------------將文件的屬組改爲named
保存後,重啓named服務器,嘗試反向解析。
# dig -x 192.168.1.106
反向解析也成功了,現在配置從服務器。
編輯/var/named/tuchao.com.zone區域文件,添加一條NS記錄,以及對應的A記錄
反向的也是如此
現在去配置從服務器的/etc/named.rfc1912.zones文件
然後啓動從服務器上的named服務器,再到主服務器上重讀配置文件,主服務器的區域文件就會自動同步到從服務器上。
我們查看下從服務器的日誌,是不是已經傳送完成了?
我們再去slaves目錄看下,有沒有同步過來的區域文件。
# cd /var/named/slaves/
# ls
已經有了吧,看下內容?
正向區域
反向區域
和主DNS服務器一樣的吧,試下能不能解析。
解析正常吧。
如果要限制區域傳送使用:allow-transfer { }
這樣主服務器,只允許從服務器傳送區域數據
從服務器設置不允許任何人傳送區域數據:
這樣,我們的實驗算是圓滿完成了。
有問題歡迎與我交流QQ:1183710107