DNS Domain Name System 域名解析系統
dns作用
正向解析:將域名轉換成對應的ip地址
反向解析:將ip地址轉換成對應的域名
使用端口 tcp/udp 53 DNS在進行區域傳輸的時候使用TCP協議,其它時候則使用UDP協議;
域名解析過程
dns服務器類型 緩存服務器 主域名服務器 從域名服務器
使用rpm包或者yum安裝DNS服務的軟件bind bind-chroot caching-nameserver
bind 服務器軟件包
bind-chroot 切換路徑包
caching-nameserver 模板文件
[root@localhostServer]# rpm -ivh bind-9.3.6-20.P1.el5_8.5.x86_64.rpmbind-chroot-9.3.6-20.P1.el5_8.5.x86_64.rpm caching-nameserver-9.3.6-20.P1.el5_8.5.x86_64.rpm
安裝bind-chroot軟件包後配置文件的根目錄到/var/named/chroot下
[root@localhost~]# cd /var/named/chroot/etc 編輯主配置文件named.conf,可以複製caching-nameserver.conf文件內容做模板修改 [root@localhostetc]# cp -p named.caching-nameserver.conf named.conf [root@localhostetc]# ls localtime named.caching-nameserver.conf named.conf named.rfc1912.zones rndc.key
編輯主配置文件
[root@localhostetc]# vim named.conf options { listen-on port 53 { 192.168.10.1; }; 監聽IP,DNS服務器本機的IP地址 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 { any; }; 允許訪問的客戶機 allow-query-cache { any; }; }; logging { channel default_debug { file"data/named.run"; severity dynamic; }; }; viewlocalhost_resolver { match-clients { any; }; 允許匹配的客戶端 match-destinations { any; }; recursion yes; include "/etc/named.rfc1912.zones"; };
編輯/etc/named.rfc1912.zones文件
[root@localhostetc]# vim named.rfc1912.zones zone"example.com" IN { 正向解析 type master; //type類型 hint根區域 ,master主區域,slave從區域,forward轉發區域 file "example.com.zone"; }; zone"10.168.192.in-addr.arpa" IN { 反向解析 type master; file "192.168.10.arpa"; };
編輯example.com.zone和192.168.10.arpa文件,可以從named.loacl等文件複製模板。
[root@localhostetc]# cd /var/named/chroot/var/named/ [root@localhostnamed]# ls data localhost.zone named.ca named.local slaves localdomain.zone named.broadcast named.ip6.local named.zero [root@localhostnamed]# cp -p named.local example.com.zone
編輯正向解析文件
[root@localhostnamed]# vim example.com.zone $TTL 86400 @ IN SOA example.com. root.example.com. ( @代表域名(實驗爲example.com) 2014030301 ; Serial 版本號,自己編寫 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400) ; Minimum IN NS dns1.example.com. 對DNS服務器本地的聲明,[zone] IN NS [主機名稱] NS後面接的一定是主機名稱,代表:這個zone的查詢請向後面這部主機要求。所以如果你這個zone有兩部以上的DNS服務器負責時,就必須寫兩個NS,而NS後面接的主機名稱必須要有ip的對應,這時就需要A這個標記了。 dns1 IN A 192.168.10.1 對DNS服務器本機的地址解析 www IN A 192.168.10.2 對域名的地址解析 @ IN MX 5 mail.example.com. 郵件解析,MX與MAIL SERVER有關,其用途是郵件轉發,MX後面的數值越小越優先,而接的主機名稱必須有A記錄纔可以。 mail IN A 192.168.10.3 bbs IN A 192.168.10.4 blogs IN CNAME bbs 設置別名 @ IN A 192.168.10.2 * IN A 192.168.10.2 匹配地址.example.com前加任何字符的查詢 $GENERATE20-200 station$ IN A 192.168.10.$調用函數
編輯反向解析文件,可以複製正向解析文件編輯
[root@localhostnamed]# cp -p example.com.zone 192.168.10.arpa [root@localhostnamed]# vim 192.168.10.arpa $TTL 86400 @ IN SOA example.com. root.example.com. ( 2014030301 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400) ; Minimum IN NS dns1.example.com. 1 IN PTR dns1.example.com. 2 IN PTR www.example.com. 3 IN PTR mail.example.com. 4 IN PTR bbs.example.com. $GENERATE 20-200 $IN PTR station$.example.com
對編輯的配置文件進行語法的檢測named-checkconf,named-chenkzone
[root@localhostnamed]# named-checkconf /var/named/chroot/etc/named.conf [root@localhostnamed]# named-checkzone example.com /var/named/ chroot/var/named/example.com.arpa zone example.com/IN:loaded serial 2014030301 OK [root@localhostnamed]# named-checkzone example.com /var/named/ chroot/var/named/192.168.10.arpa zone example.com/IN:loaded serial 2014030301 OK
配置從DNS服務器
[root@localhost~]# cd /var/named/chroot/etc/ [root@localhostetc]# ls localtime named.caching-nameserver.conf named.rfc1912.zones rndc.key [root@localhostetc]# cp -p named.caching-nameserver.conf named.conf [root@localhostetc]# vim named.conf options { listen-on port 53 { 192.168.10.254; }; 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"; // Those options should be usedcarefully because they disable port // randomization // query-source port 53; // query-source-v6 port 53; allow-query { any; }; allow-query-cache { any; }; }; logging { channel default_debug { file"data/named.run"; severity dynamic; }; }; viewlocalhost_resolver { match-clients { any; }; match-destinations { any; }; recursion yes; include"/etc/named.rfc1912.zones"; }; [root@localhostetc]# vim named.rfc1912.zones zone "example.com" IN { type slave; file"slaves/example.com.zone"; masters{192.168.10.1;}; }; zone "10.168.192.in-addr.arpa" IN { type slave; file"slaves/192.168.10.zrpa"; masters {192.168.10.1;}; };
在主DNS服務器的主配置文件中添加,只允許此IP地址的客戶端從主DNS服務器獲得解析文件
[root@server1~]# vim /var/named/chroot/etc/named.conf allow-transfer { 192.168.10.1; };
子域授權。
dns是分層負責解析的,子域授權就是在一個域內新建幾個子域,然後客戶端的dns指向父域的地址,能夠解析到父域管轄內子域的記錄,子域的客戶端把DNS指向子域能夠解析父域的地址。減輕父域的負擔
配置DNS服務器的子域授權。正常配置兩臺DNS服務器,在父DNS服務器的正向解析文件中添加子域DNS服務器的地址指向。有時配置不成功,需要在父域主配置文件中添加allow-recursion { any };允許遞歸查詢。在子域DNS服務器中全局配置中添加forwarders { 192.168.10.254; };,當有DNS請求發給子域DNS服務器時,子域可以將請求轉發給父域。
我們的DNS在本地指定的DNS找不到解析後,會直接向跟發起請求,爲了使根的負載變小,我們可以設置請求轉發。在/etc/named.conf中可以在options段中使用forwarders和forward指令設置DNS轉發:
轉發格式:
forwarders {
DNS_IP_1;
DNS_IP_2;
};
forwarders指令用於設置將DNS請求轉發到哪個服務器,可以指定多個服務器的IP地址。
forward
forward first | only;
forward指令用於設置DNS轉發的工作方式:
forward first設置優先使用forwarders DNS服務器做域名解析,如果查詢不到再使用本地DNS服務器做域名解析。
forward only設置只使用forwarders DNS服務器做域名解析,如果查詢不到則返回DNS客戶端查詢失敗。
轉發某特定區域:
zone "特定區域" IN {
type forward;
forwarders { IP; }
forward only|first;
}
DNS緩存服務器
利用forwarders可以做DNS緩存服務器。只需在主配置文件中添加forwarders { ; };
父域 [root@server1~]# vim /var/named/chroot/var/named/tarena.com.zone bj.example.com. IN NS dns1.example.com. dns1.bj.example.com. IN A 192.168.10.2 子域配置 [root@localhostetc]# vim /var/named/chroot/etc/named.conf forwarders { 192.168.10.254; }; 全局配置中
分離解析
根據不同客戶端的來源地址在訪問相同域名時,可以給出不同解析結果。
[root@localhostetc]# vim /var/named/chroot/etc/named.conf viewlocalhost_resolver { view名字不能一樣 match-clients { any; }; //設置使用此zone的匹配的客戶端限制,telecom電信,unicom聯通。 match-destinations { any; }; recursion yes; include"/etc/named.rfc1912.zones"; }; viewlocalhosti1_resolver { match-clients { any; }; match-destinations { any; }; recursion yes; include"/etc/named.rfc1913.zones"; 文件名不能一樣 }; [root@localhostetc]# cp -p named.rfc1912.zones named.rfc1913.zones [root@server1~]# vim /var/named/chroot/etc/named.rfc1913.zones 不能與原來文件名一樣 zone"tarena.com" IN { type master; file "ly.example.com.zone"; 正向解析 }; zone"10.168.192.in-addr.arpa" IN { 反向解析 type master; file "ly.192.168.10.arpa"; };
編輯正向解析文件
[root@server1named]# cp -p example.com.zone ly.example.com.zone [root@server1named]# vim ly.example.com.zone $TTL 86400 @ IN SOA example.com.root.example.com. ( 2014030601 ; Serial 28800 ; Refresh 14400 ; Retry 3600000 ; Expire 86400) ; Minimum IN NS dns1.example.com. dns1 IN A 192.168.10.254 www IN A 192.168.10.2