精解Linux RHEL 6.x DNS 服務器
vim
=============================================
緩存
一、DNS的原理安全
二、緩存服務器bash
三、DNS的測試工具服務器
四、DNS主從服務器網絡
五、DNS的轉發dom
六、DNS的子域受權ide
七、DNS的acl規則和view視圖工具
八、DNS的日誌系統的使用oop
=================================================
一、DNS的原理
DNS (Domain Name Server) 域名解析服務,他能夠完成域名與IP地址的互換,能夠經過IP地址解析到域名,也能夠經過域名解析到IP地址,IP地址是平面結構,且不容易記住,DNS是層次化的結構,便於記憶。
DNS的層次化
1)根域:根域位於層次結構的最頂部並用小句點「.」表示全球有十三個根服務器,一個主根服務器,十二個輔助根服務器。
2)頂級域:頂級域是按照組織類別或地理位置來劃分的
.gov | 政府組織 |
.com | 商業組織 |
.net | 網絡中心 |
.org | 非營利性組織 |
.edu | 教育部門 |
.cn .uk .us | 國家國別的代碼,cn表示中國,uk表示英國,us表示美國 |
3)二級域:由國際域名組織爲互聯網中的我的或部門指定和登記的二級域
(如51cto.com,sohu.com)
DNS的查詢方式
迭代查詢:本地域名服務器向根域名服務器的查詢一般是採用迭代查詢。當根域名服 務器收到本地域名服務器的迭代查詢請求報文時,要麼給出所要查詢的 IP 地址,要麼告訴本地 域名服務器:「你下一步應當向哪個域名服務器進行查詢」。而後讓本地域名服務器進行後續的查詢
遞歸查詢:主機向本地域名服務器的查詢通常都是採用遞歸查詢。若是主機所詢問的本地域名服務器不知道被查詢域名的 IP 地址,那麼本地域名服務器就以 DNS 客戶的份,向其餘根域名服務器繼續發出查詢請求報文會給客戶端一個準確的返回結果,不管是成功與否。
步驟1:當客戶端在IE輸入www.baidu.com,客戶端去請求本地域服務器解析,此過程爲發
起遞歸查詢。
步驟2:本地服務器接到查詢請求後,查看區域文件,發現不是本身管制的區域,則發
送給根域進行解析。此過程爲迭代查詢。
步驟3:根域服務接收到 請求後,查看區域文件,回覆請求的主機,去找.com域服務器。此
過程是迭代查詢。
步驟4:本地域服務器,接收到根域服務器的回覆後,去找.com域服務器,請求解析。此過
程序是迭代查詢。
步驟5:.com服務器接收到請求以後,查看本身的區域文件,回覆主機去找
baidu.com域服務,此過程是迭代查詢。
步驟6:本地域服務器,接收到.com域服務器的回覆後,去找baidu.com域服務器,
請求解析,此過程是迭代查詢。
步驟7:baidu.com域服務器接收到請求後,查看本身的區域文件,發現是本身所管制
的區域,而後查看區域解析文件,把對應的IP地址發送給請求的服務器,此過
程是迭代查詢。
步驟8:本地服務器接收到baidu.com域服務器的回覆,把FQDN對應IP地址傳送給客
戶端,此過程爲遞歸查詢。
DNS的解析類型
FQDN:(Fully Qualified Domain Name)徹底合格域名,由主機名+域名組成
(如www.51cto.com)
正向解決:FQDN----->IP,把徹底合格域名,解析爲IP地址
方向解析:IP-------->FQDN,把IP解析爲徹底合格域名。
Linux服務器實現DNS服務器的軟件有bind、powerdns,此博客主要講bind。
bind的相關軟件包
bind:提供域名服務的主程序和相關文件
bind-libs:提供域名服務器所依賴的庫文件
bind-utils:提供了對DNS服務的測試工具程序
rpm -qc 包名 查看包安裝生成的文件清單
rpm -qi 包名 查看包的摘要信息
二、緩存服務器
1)安裝軟件包
yum -y install bind
2)bind配置文件
安裝完後,會用到四個配置文件,四個配置文件的關係
3)DNS bind named的關係
DNS是一個服務,是提供域名解析的服務;
bind是實現這個服務的軟件包;
named是dns這個服務的守護進程
4)配置緩存服務器的思路
把客戶端發送的請求,轉發給能解析到的服務器
在主配置文件裏面修改 (/etc/named.conf)
開啓服務, service named start(/etc/rc.d/init.d/named start)
第一次須要開啓服務,以後只須要加載配置文件便可
service named reload (rndc reload)
named-checkconf
三、DNS的測試工具
[root@jie2 data]# rpm -ql bind-utils
/usr/bin/dig #dig測試命令工具
/usr/bin/host #host測試命令工具
/usr/bin/nslookup #nslookup測試命令工具
/usr/bin/nsupdate
/usr/share/man/man1/dig.1.gz
/usr/share/man/man1/host.1.gz
/usr/share/man/man1/nslookup.1.gz
/usr/share/man/man1/nsupdate.1.gz
命令的使用用法:
dig [option] 資源記錄類型名稱 [@server-ip]
option:
[ -t type] 指定類型
[-x addr] 指定IP
資源記錄類型名稱:
NS :對應DNS服務器的FQDN
A :表明"主機名稱"與"IP"地址的對應關係, 做用是把名稱轉換成IP地址
PTR:表明"IP地址"與"主機名"的對應關係,做用恰好與A記錄相反
[@server-ip]:
不寫IP,默認是本地服務器的IP
用@server-ip,指定服務器的IP
eg:dig -t A www.51cto.com @172.16.0.1
host [option] 資源記錄類型名稱 [server-ip]
eg:host -t A www.51cto.com 172.16.0.1
nslookup FQDN [server-ip]
eg: nslookup www.51cto.com 172.16.0.1
四、DNS主從服務器
Master的配置
配置完成後,檢查語法是否錯誤,而後加載配置文件便可。
Slave的配置
[root@jie3 ~]# cd /var/named/slaves/
[root@jie3 slaves]# ls
jie.com.zone
[root@jie3 slaves]#
小結:在實際工做中,能夠把Master做爲正向區域的主,反向做爲slave的從。
五、DNS的轉發
###jie.com服務器的主配置文件########### 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; forward only; //只容許轉發 forwarders { 172.16.122.4; }; //轉發到ltt.com服務上 // 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"; }; include "/etc/named.rfc1912.zones"; //include "/etc/named.root.key"; ######區域文件和區域解析文件仍是以前的文件內容##############
##########ltt.com服務器的主配置文件###################### 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; allow-recursion { 172.16.22.2; }; //只爲jie.com服務器進行遞歸查詢 // 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"; }; include "/etc/named.rfc1912.zones"; //include "/etc/named.root.key"; ##############ltt.com服務器的區域配置文件的部門內容################### zone "ltt.com" IN { type master; file "ltt.com.zone"; }; #################ltt.com服務器的區域解析文件的內容################### cat /var/named/ltt.com.zone $TTL 1D @ IN SOA dns.ltt.com. admin.ltt.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS dns.ltt.com. dns IN A 172.16.122.4 www IN A 172.16.122.40 www IN A 172.16.122.140 www IN A 172.16.122.240 ftp IN A 172.16.122.200 mail IN A 172.16.122.250 ###注意文件的屬組和權限######################3
[root@PC ~]# grep -v "^#" /etc/resolv.conf | grep -v "^$"
search com
nameserver 172.16.22.2
[root@PC ~]# host -t A www.ltt.com
www.ltt.com has address 172.16.122.240
www.ltt.com has address 172.16.122.40
www.ltt.com has address 172.16.122.140
小結:實際工做中,你的轉發的IP通常設置爲運營商的DNS服務器的IP地址,運營商的DNS服務器能夠接受你的轉發
六、DNS的子域受權
#######父域的主配置文件和區域配置文件仍是以前的不須要改動###### #########修改區域解析庫文件vim /var/named/jie.com.zone######### $TTL 6400 @ IN SOA dns.jie.com. admin.jie.com. ( 2013081401 ;serial numbel 2h ;refresh time 5m ;retry time 7d ;expire time 1d ;minimum ) IN NS dns.jie.com. dns.jie.com. IN A 172.16.22.2 www IN A 172.16.22.2 www IN A 172.16.22.20 www IN A 172.16.22.200 ftp IN A 172.16.22.220 son IN A 172.16.122.4 #添加子域的A記錄 IN NS son.jie.com. #添加子域的NS記錄 dns IN A 172.16.122.4
###子域的主配置文件/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"; // allow-query { localhost; }; 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"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; #####子域的區域配置文件/etc/named.rfc1912.com添加一點內容######## zone "son.jie.com" IN { type master; file "son.jie.com.zone"; }; ########子域的區域解析庫文件/var/named/son.jie.com.zone添加一點內容#### $TTL 1D @ IN SOA dns.son.jie.com. admin.son.jie.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS dns.son.jie.com. dns IN A 172.16.122.4 www IN A 172.16.122.40 www IN A 172.16.122.140 www IN A 172.16.122.240 ftp IN A 172.16.122.200 mail IN A 172.16.122.250
父域的測試:父域是直接能夠解析子域的,子域默認是不能解析父域
[root@jie2 named]# host -t A www.son.jie.com
www.son.jie.com has address 172.16.122.240
www.son.jie.com has address 172.16.122.40
www.son.jie.com has address 172.16.122.140
子域也能解析父域,①能夠把子域的DNS指向父域,②在子域上面作轉發,父域接收子域的轉發請求
七、DNS的acl規則和view視圖
###jie.com服務器的主配置文件###### 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; 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; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; ######區域配置文件###################### view LAN { zone "." IN { #把主配置文件的根域放到了區域配置文件中 type hint; file "named.ca"; }; zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "localhost" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; match-clients { 172.16.22.0/16; }; #當匹配這個網段的IP訪問jie.com服務器時,返回172.16.22.128 zone "jie.com" IN { type master; file "lan.jie.com"; }; }; view WAN { match-clients { any; }; #其餘任何網段訪問時返回1.1.1.128 zone "jie.com" IN { type master; file "wan.jie.com"; }; }; #######區域解析庫文件的內容################# #############/var/named/lan.jie.com##################### $TTL 1D @ IN SOA dns.jie.com. admin.jie.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS dns.jie.com. dns IN A 172.16.22.128 www IN A 172.16.22.128 ftp IN A 172.16.22.128 mail IN A 172.16.22.128 www IN A 172.16.22.1 #############/var/named/wan.jie.com##################### $TTL 1D @ IN SOA dns.jie.com. admin.jie.com. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS dns.jie.com. dns IN A 1.1.1.128 www IN A 1.1.1.128 ftp IN A 1.1.1.128 mail IN A 1.1.1.128 www IN A 1.1.1.1
驗證:
[root@LanPC ~]# ifconfig | grep -A 1 eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:9C:14:36
inet addr:172.16.22.3 Bcast:172.16.255.255 Mask:255.255.0.0
[root@LanPC ~]# host -t A www.jie.com 172.16.22.2
Using domain server:
Name: 172.16.22.2
Address: 172.16.22.2#53
Aliases:
www.jie.com has address 172.16.22.128
www.jie.com has address 172.16.22.1
[root@WanPC ~]# ifconfig | grep -A 1 eth0
eth0 Link encap:Ethernet HWaddr 00:0C:29:D1:6F:09
inet addr:192.168.0.4 Bcast:192.168.255.255 Mask:255.255.0.0
[root@WanPC ~]# host -t A www.jie.com 172.16.22.2
Using domain server:
Name: 172.16.22.2
Address: 172.16.22.2#53
Aliases:
www.jie.com has address 1.1.1.1
www.jie.com has address 1.1.1.128
八、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; }; 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; }; channel querylog { file "/var/log/bindquery.log" versions 3 size 10M; severity dynamic; print-time yes; print-category yes; print-severity yes; }; category queries { querylog; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; ##########其它文件不須要修改 touch /var/log/bindquery.log chown named:named /var/log/bindquery.log
驗證:
[root@LanPC ~]# host -t A ftp.jie.com 172.16.22.2
Using domain server:
Name: 172.16.22.2
Address: 172.16.22.2#53
Aliases:
ftp.jie.com has address 172.16.22.128
[root@LanPC ~]# host -t A www.jie.com 172.16.22.2
Using domain server:
Name: 172.16.22.2
Address: 172.16.22.2#53
Aliases:
www.jie.com has address 172.16.22.1
www.jie.com has address 172.16.22.128
[root@jie2 log]# cat /var/log/bindquery.log
08-Aug-2013 06:27:51.720 queries: info: client 172.16.22.3#36432: view LAN: query: ftp.jie.com IN A + (172.16.22.2)
08-Aug-2013 06:27:52.406 queries: info: client 172.16.22.3#34500: view LAN: query: ftp.jie.com IN A + (172.16.22.2)
08-Aug-2013 06:27:52.880 queries: info: client 172.16.22.3#34935: view LAN: query: ftp.jie.com IN A + (172.16.22.2)
08-Aug-2013 06:31:27.921 queries: info: client 172.16.22.3#38660: view LAN: query: ftp.jie.com IN A + (172.16.22.2)
08-Aug-2013 06:31:34.402 queries: info: client 172.16.22.3#52686: view LAN: query: www.jie.com IN A + (172.16.22.2)
能夠生成日誌
小結:DNS實現CDN會用到view,理清楚配置文件之間的關係。當服務開啓不了時多查看日誌(/var/log/messages),注意配置文件的語法格式。博客內容有點多,望各位博友能多多指點