RHCE培训笔记——DNS基础
RHCE培訓筆記——DNS基礎
DNS(Donmain Name Service)域名系統是一個分布式數據系統,其作用是將域名解析成IP地址。Linux DNS一般使用bind來完成,其中主要是對named服務的配置。
本文實驗平臺為CentOS 6.2。
DNS服務器
主機名:itpro ? ? ? ?IP地址:192.168.1.53
輔助DNS服務器
主機名:itsec ? ? ? ?IP地址:192.168.1.54
客戶端測試機
主機名:itclient ? ?IP地址:192.168.1.100
一、DNS服務器端配置
1.安裝相關軟件
bind是linux的DNS服務器程序,bind-chroot是bind的一個功能,使bind可以在一個chroot的模式下運行,也就是說bind運行時的/(根)目錄并不是系統真正的/(根)目錄,而是系統中的一個子目錄,這樣做的目的是為了提高安全性,因為在chroot的模式下,bind可以訪問的范圍僅限于這個子目錄的范圍里,無法進一步提升、進入到系統的其他目錄中。
[root@itpro ~]# yum install bind bind-chroot
[root@itpro ~]# service named start
Stopping named: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[ ?OK ?]
Generating /etc/rndc.key:^C
[root@itpro ~]# rndc-confgen -r /dev/urandom -a
wrote key file "/etc/rndc.key"
[root@itpro ~]# service named start
Stopping named: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[ ?OK ?]
Starting named: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[ ?OK ?]
[root@ itpro ~]# chkconfig named on
(注:實驗之初,安裝完成bind及bind-chroot后,重啟named服務時,rndc找不到key,等半天沒反應,主要原因在于RHEL6上沒有caching-named這個包。在網上查到,使用rndc-confgen -r /dev/urandom –a這條命令可以解決問題。另,記得將named設為開機啟動。)
進入到偽目錄/var/named/chroot,
[root@itpro ~]# cd /var/named/chroot/
[root@itpro chroot]# ls
dev ?etc ?usr ?var
[root@itpro chroot]# ls etc/
localtime ?named.conf ? ? ? ?named.rfc1912.zones ?pki
named ? ? ?named.iscdlv.key ?named.root.key ? ? ?rndc.key
[root@itpro chroot]# ls var/named/
chroot ?dynamic ?named.empty ? ? ?named.loopback
data ? ?named.ca ?named.localhost ?slaves
注:在偽目錄里,也有etc和var目錄,從這里讀到的配置及軟件相關文件,其實是根目錄下/etc和/var里面文件的一部分,但其他與named服務不相關的文件就看不到了,提高了操作的安全性。
實際操作建議在偽目錄中進行,也可以root目錄下進行。
為避免路徑過長或因切換路徑等而作多余的啰嗦,本文是在root目錄下進行的,請注意。
2.修改主配文件/etc/named.conf
在RHEL 6中,安裝完bind后,將會自動生成主配文件named.conf,現要對其進行修改。
修改后的內容如下
[root@itpro ~]# cat /etc/named.conf
1.options {
2.listen-on port 53 { any; }; //any表示監聽所有客戶端發來的信息
3.listen-on-v6 port 53 { any; }; //這個是針對IPv6的,當前環境下可以不改
4.directory "/var/named";
5.dump-file "/var/named/data/cache_dump.db";
6.statistics-file "/var/named/data/named_stats.txt";
7.memstatistics-file "/var/named/data/named_mem_stats.txt";
8.allow-query { any; }; //any表示允許所有客戶端進行dns查詢
9.recursion yes; //是否使用遞歸式DNS服務器,默認為yes
10.dnssec-enable yes;
11.dnssec-validation yes;
12.dnssec-lookaside auto;
13./* Path to ISC DLV key */
14.bindkeys-file "/etc/named.iscdlv.key";
15.managed-keys-directory "/var/named/dynamic";
16.};
17.logging {
18.channel default_debug {
19.file "data/named.run";
20.severity dynamic;
21.};
22.};
23.zone "." IN {
24.type hint; //表示這個區被定義為啟動時初始化高速緩存的域名服務器
25.file "named.ca";
26.};
27.include "/etc/named.rfc1912.zones";
28.include "/etc/named.root.key";
(注:主配置文件 named.conf里面只有“.”區域,在最下面有個 named.rfc1912.zones定義,是一個named.conf的輔助區域配置文件。意思是除了根域外,其他所有的區域配置建議在named.rfc1912.zones文件中配置,主要是為了方便管理,不輕易破壞主配置文件named.conf。)
3.修改輔助區域配置文件/etc/named.rfc1912.zones
在文件最末添加正向解析和反向解析域(注:本實驗,正向解析、反向解析一并實現),
修改后的內容為:
[root@itpro ~]# cat /etc/named.rfc1912.zones
1.…………省略部分輸出…………
2.zone "88181.com" IN { //這個是正向解析區域,區域名一般使用需要被解析的域名
3.type master; //master表示這個區被定義為主域名服務器
4.file "88181.com.zone"; //定義正向解析域的文件,名字隨意,一般標記為:域名+.zone
5.allow-update { none; };
6.};
7.zone "1.168.192.in-addr.arpa" IN { //這個是正向解析區域,這里遵循一般的命名格式
8.type master;
9.file "88181.com.local"; //定義反向解析域的文件, ,名字隨意,一般標記為:域名+.local
10.allow-update { none; };
11.};
4.創建解析文件
在/var/named中,以named.localhost為模板,創建正向和反向解析文件,
這兩個文件的文件名,要以/etc/named.rfc1912.zones 文件中定義的一致,即88181.com.zone和88181.com.local
[root@itpro ~]# ls /var/named/
chroot dynamic named.empty named.loopback
data named.ca named.localhost slaves
[root@itpro named]# cp -p /var/named/named.localhost /var/named/88181.com.zone
[root@itpro named]# cp -p /var/named/named.localhost /var/named/88181.com.local
[root@itpro named]# ll /var/named/
total 44
drwxr-x---. 6 root named 4096 Mar 18 02:04 chroot
drwxrwx---. 2 named named 4096 Mar 18 02:12 data
drwxrwx---. 2 named named 4096 Mar 22 06:11 dynamic
-rw-r-----. 1 root named 1892 Feb 18 2008 named.ca
-rw-r-----. 1 root named 152 Dec 15 2009 named.empty
-rw-r-----. 1 root named 152 Jun 21 2007 named.localhost
-rw-r-----. 1 root named 168 Dec 15 2009 named.loopback
drwxrwx---. 2 named named 4096 Feb 23 14:26 slaves
-rw-r-----. 1 root named 175 Mar 22 07:05 88181.com.local
-rw-r-----. 1 root named 175 Mar 22 06:59 88181.com.zone
(注:使命cp命令時,要使用-p選項,以保留文件的權限屬性。通過ll查看,可以看到這里的文件都是屬于named用戶組的,如果cp時不加-p選項,生成的文件將會屬root用戶組,不符合要求)
88181.com.zone文件內容為正向域名解析記錄,修改后內容如下:
[root@itpro ~]# cat /var/named/88181.com.zone
1.$TTL 1D
2.@ IN SOA ns.88181.com root ( //@表示當前域,IN指internet ,SOA起始授權機構,
3.//root管理員郵箱地址,也可寫作root.88181.com.,相當于root@88181.com.
4.0 ; serial
5.1D ; refresh
6.1H ; retry
7.1W ; expire
8.3H ) ; minimum
9.NS ns.88181.com. // ns指定域名服務器,只是個名稱
10.ns A 192.168.1.53 //指定域名服務器IP地址
11.//以下增加目標解析文件,可以是www、ftp等
12.www A 192.168.1.100 //A指定域名對應IP,這里表示www.88181.com
13.ftp A 192.168.1.101 //如果還有其他服務,依次添加映射,如ftp
(注:輸入的內容中,“ns.88181.com.”后面有一個“.”,表示根域,不能漏掉,如果不加,則表示nd.88181.com域還有后綴.88181.com, named會重啟失敗)
88181.com.local文件內容為反向域名解析記錄,修改后內容如下:
[root@itpro ~]# cat /var/named/88181.com.local
1.$TTL 1D
2.@ IN SOA ns.88181.com. root (
3.0 ; serial
4.1D ; refresh
5.1H ; retry
6.1W ; expire
7.3H ) ; minimum
8.NS ns.88181.com.
9.ns A 192.168.1.53
10.100 PTR www.88181.com. //反向解析是PTR
11.101 PTR ftp.88181.com.
5.重啟dns服務
[root@itpro ~]# service named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
(如果重啟報錯,請檢查設置是否正確)
二、客戶端配置及測試
這里使用的客戶端是Linux系統,需要修改resolv.conf文件,
如果是Windows客戶端直接在本地連接屬性窗口里改就可以了。
1.修改resolv.conf文件
使DNS指向域名服務器(192.168.1.53)
[root@ itclient ~]# cat /etc/resolv.conf
nameserver 192.168.1.53
2.使用nslookup測試
[root@ itclient ~]# nslookup www.88181.com
Server: 192.168.1.53
Address: 192.168.1.53#53
Name: www.88181.com
Address: 192.168.1.100
[root@ itclient ~]# nslookup 192.168.1.100
Server: 192.168.1.53
Address: 192.168.1.53#53
100.1.168.192.in-addr.arpa name = www.88181.com.
[root@ itclient ~]# nslookup ftp.88181.com
Server: 192.168.1.53
Address: 192.168.1.53#53
Name: ftp.88181.com
Address: 192.168.1.101
客戶端能解析正常,說明DNS服務器的配置順利完成。
三、輔助DNS服務器配置
輔助DNS服務器(Slave DNS),也可以向客戶機提供域名解析服務,但是它的數據不是直接輸入的,而是從其他Master或Slave DNS服務器中復制過來的。
1.安裝相關軟件
首先也是要安裝bind及bind-chroot;然后啟動,并在chkconfig中設為開機啟動。
2.修改主配文件/etc/named.conf
同主DNS服務器的配置,就是將listen-on port 53、allow-query大括號中的值改為any。
3.修改輔助區域配置文件/etc/named.rfc1912.zones
在文件最末添加正向解析和反向解析域(注:本實驗,正向解析、反向解析一并實現),
修改后的內容為:
[root@itpro ~]# cat /etc/named.rfc1912.zones
1.…………省略部分輸出…………
2.zone "88181.com" IN { //這個是正向解析區域
3.type slave; //slave表示這個區被定義為輔助域名服務器
4.file "slaves/88181.com.zone";
5.masters { 192.168.1.53; }; //指明主DNS,可以是多個,
6.allow-update { none; };
7.};
8.zone "1.168.192.in-addr.arpa" IN { //這個是反向解析區域
9.type slave;
10.file "slaves/88181.com.local";
11.masters { 192.168.1.53; };
12.allow-update { none; };
13.};
4.重啟DNS
[root@itsec ~]# service named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
重啟后,在/var/named/slaves/目錄下會生成一個88181.com.zone文件和一個88181.com.local文件,里面的內容是分別從主DNS服務器上的88181.com.zone和88181.com.local中讀過來的。
[root@itsec ~]# cat /var/named/slaves/88181.com.zone
1.$ORIGIN .
2.$TTL 86400 ; 1 day
3.88181.com IN SOA ns.88181.com.88181.com. root.88181.com. (
4.0 ; serial
5.86400 ; refresh (1 day)
6.3600 ; retry (1 hour)
7.604800 ; expire (1 week)
8.10800 ; minimum (3 hours)
9.)
10.NS ns.88181.com.
11.$ORIGIN 88181.com.
12.ftp A 192.168.1.101
13.ns A 192.168.1.53
14.www A 192.168.1.100
[root@itsec ~]# cat /var/named/slaves/88181.com.local
1.$ORIGIN .
2.$TTL 86400 ; 1 day
3.1.168.192.in-addr.arpa IN SOA ns.88181.com. root.1.168.192.in-addr.arpa. (
4.0 ; serial
5.86400 ; refresh (1 day)
6.3600 ; retry (1 hour)
7.604800 ; expire (1 week)
8.10800 ; minimum (3 hours)
9.)
10.NS ns.88181.com.
11.$ORIGIN 1.168.192.in-addr.arpa.
12.100 PTR www.88181.com.
13.101 PTR ftp.88181.com.
14.ns A 192.168.1.53
至此,從DNS服務器設置完成。比主DNS服務器的設置簡單多了。
1.修改客戶端的resolv.conf文件
增加一條指向從DNS服務器的記錄,修改后內容如下:
[root@ itclient ~]# cat /etc/resolv.conf
nameserver 192.168.1.53
nameserver 192.168.1.54
2.在客戶端使用nslookup命令測試
可以看到此時是通過主DNS服務器(192.168.1.53)解析域名的,
[root@itclient ~]# nslookup www.88181.com
Server: 192.168.1.53
Address: 192.168.1.53#53
Name: www.88181.com
Address: 192.168.1.100
3.在主DNS服務器上關閉dns服務
[root@itpro ~]# service named stop
Stopping named: . [ OK ]
4.再在客戶端使用nslookup命令測試
可以看到此時是通過輔助DNS服務器(192.168.1.54)解析域名的,
[root@itclient ~]# nslookup www.88181.com
Server: 192.168.1.54
Address: 192.168.1.54#53
Name: www.88181.com
Address: 192.168.1.100
[root@itclient ~]# nslookup 192.168.1.101
Server: 192.168.1.154
Address: 192.168.1.154#53
101.1.168.192.in-addr.arpa name = ftp.88181.com.
5.在客戶端使用dig命令可以查看到更詳細的信息
[root@itclient ~]# dig www.88181.com
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6.3 <<>> www.88181.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50191
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; QUESTION SECTION:
;www.88181.com. IN A
;; ANSWER SECTION:
www.88181.com. 86400 IN A 192.168.1.100
;; AUTHORITY SECTION:
88181.com. 86400 IN NS ns.88181.com.
;; ADDITIONAL SECTION:
ns.88181.com. 86400 IN A 192.168.1.53
;; Query time: 2 msec
;; SERVER: 192.168.1.54#53(192.168.1.54)
;; WHEN: Tue Mar 26 05:39:07 2013
五、主輔DNS服務器數據同步問題
主DNS服務器修改記錄,輔助DNS同步不過去,或者需要很長時間。這在現實生活中,會造成各地訪問的結果不同。
通過修改主DNS服務器上的配置文件,是可以做到將數據快速同步到其他輔助DNS服務器的。這里用到一個also-notify字段。
1.在主DNS服務器的主配文件/etc/named.conf的options{ }里,增加一條記錄:
also-notify { 192.168.1.54; }; //這里指通知的對象是192.168.1.54輔助DNS
2.主DNS數據變更,這里以修改區域88181.com為例,
刪除里面的“ftp A 192.168.1.101”記錄,同時將序列號數值加1,
[root@itpro ~]# cat /var/named/88181.com.zone
1.$TTL 1D
2.@ IN SOA ns.88181.com root (
3.1 ; serial //這里由0改為1
4.1D ; refresh
5.1H ; retry
6.1W ; expire
7.3H ) ; minimum
8.NS ns.88181.com.
9.ns A 192.168.1.53
10.www A 192.168.1.100
修改完成后,重啟DNS
[root@itpro ~]# service named restart
Stopping named: . [ OK ]
Starting named: [ OK ]
3.在輔助DNS上查看88181.com的信息,可以看到,主DNS上該區域的信息已經同步過來了,
[root@itsec ~]# cat /var/named/slaves/88181.com.zone
1.$ORIGIN .
2.$TTL 86400 ; 1 day
3.88181.com IN SOA ns.88181.com.88181.com. root.88181.com. (
4.1 ; serial
5.86400 ; refresh (1 day)
6.3600 ; retry (1 hour)
7.604800 ; expire (1 week)
8.10800 ; minimum (3 hours)
9.)
10.NS ns.88181.com.
11.$ORIGIN 88181.com.
12.ns A 192.168.1.53
13.www A 192.168.1.100
(注:序列號的值務必要改大,輔助DNS收到主DNS的通知后,會先檢查序列號,如果主DNS發過來的信息,序列號的值小于輔助DNS中序號的值,輔助DNS是會將新信息丟棄的。)
also-notify這個字段可以在named.conf中options里聲明,也可以在單個區域文件中聲明。不過我在單個文件區域,比如本實驗中主DNS的/etc/named.rfc1912.zones中zone "88181.com" IN { }里聲明時,并不生效。未解決。
轉載于:https://blog.51cto.com/captain8/1273074
總結
以上是生活随笔為你收集整理的RHCE培训笔记——DNS基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python爬虫学习日记(1) scra
- 下一篇: PushMail初体验