這裏咱們總的來講下對DNS的理解:python
-->正向解析與反向解析:數據庫
1)正向解析:vim
正向解析是指域名到IP地址的解析過程。windows
2)反向解析:緩存
反向解析是從IP地址到域名的解析過程;反向解析的做用爲服務器的身份驗證。安全
-->主從DNS服務器:bash
主DNS服務器(Master DNS): 數據庫更新由管理員手動完成;服務器
輔助DNS服務器 (SlaveDNS):數據庫更新從主服務器或其餘輔助DNS服務器那裏完成;網絡
-->DNS 子域:dom
DNS服務器不只能夠爲屬於本域的客戶端用戶提供解析服務,也能夠受權給某個域,讓其也能夠提供相應的DNS解析服務,稱爲子域受權.
-->DNS 子域委派:
具體的做用是爲了方便管理 提升DNS的解析性能,實現通訊負載平衡.
-->DNS 轉發器的做用:
解析某本機不負責的區域內的名稱時不轉發給根,而是轉給指定的主機;
根服務只有13個,若是DNS的查詢所有都發送到根服務器效率比較低下,啓動DNS轉發器後,DNS進行查詢的時候,若是遇到本機不能解析的查詢,就向DNS轉發器請求查詢,DNS轉發器指定的地址通常都是比較大的DNS服務器,一般接受大量的DNS查詢操做,好比電信的核心DNS.
-->ACL-訪問控制列表:
將多個一同處理的地址定義爲一組,而且給它起個名字,這就是列表;
-->view 視圖:
所謂視圖簡單來講就是,將DNS服務器一切爲兩個部分;
所謂視圖咱們把一個DNS服務器工做在不一樣的多個邏輯界面上,一個區域能夠再不一樣的視圖中各自定義一次;
若是咱們定義了 視圖 全部區域都必須定義在 view 中,包括根;
-->資源記錄:
某些資源記錄不只包括DNS域中服務器的信息,還能夠用於定義域,即指定每臺服務器受權了哪些域,這些資源記錄就是SOA和NS資源記錄。
1)SOA資源記錄: 每一個區在區的開始處都包含了一個起始受權記錄(Start of Authority Record),簡稱SOA記錄。SOA定義了域的全局參數,進行整個域的管理設置。一個區域文件只容許存在惟一的SOA記錄。
2)NS資源記錄: 名稱服務器(NS)資源記錄表示該區的受權服務器,它們表示SOA資源記錄中指定的該區的主和輔助服務器,也表示了任何受權區的服務器。每一個區在區根處至少包含一個NS記錄。
3)A資源記錄: 地址(A)資源記錄把FQDN映射到IP地址,於是解析器能查詢FQDN對應的IP地址。
4)PTR資源記錄: 相對於A資源記錄,指針(PTR)記錄把IP地址映射到FQDN。
5)CNAME資源記錄: 規範名字(CNAME)資源記錄建立特定FQDN的別名。用戶可使用CNAME記錄來隱藏用戶網絡的實現細節,使鏈接的客戶機沒法知道。
6)MX資源記錄: 郵件交換(MX)資源記錄爲DNS域名指定郵件交換服務器。郵件交換服務器是爲DNS域名處理或轉發郵件的主機。處理郵件指把郵件投遞到目的地或轉交另外一不一樣類型的郵件傳送者。轉發郵件指把郵件發送到最終目的服務器,用簡單郵件傳輸協議SMTP把郵件發送給離最終目的地最近的郵件交換服務器,或使郵件通過必定時間的排隊。
-->DNS查詢:分爲遞歸查詢和迭代查詢兩種.
(1) 遞歸查詢: 即客戶端向本地DNS服務器請求查詢域名,本地DNS服務器收到查詢任務後如自身沒法回答則向其餘服務器查詢,直到查到結果後返回結果給客戶端。期間DNS服務器可能要查詢不少其餘DNS服務器。
(2)迭代查詢:即客戶端向本地服務器請求查詢域名,本地DNS服務器沒法回答,則給客戶端返回另外一個能查詢域名的服務器地址,客戶端再向另外一服務器查詢,期間可能客戶端需查詢多個DNS服務器,最終查到結果。
注意:若是您感受內容太長,那麼請到如下分支查看你所須要的內容:
1. 總結 DNS and BIND: http://xiaomazi.blog.51cto.com/5891742/1376225
2. 分支1- 正/反向域名解析之yum與編譯安裝: http://xiaomazi.blog.51cto.com/5891742/1376228
3. 分支2- 主從DNS服務器: http://xiaomazi.blog.51cto.com/5891742/1376231
4. 分支3- 子域受權、請求轉發: http://xiaomazi.blog.51cto.com/5891742/1377087
5. 分支4- ACL 及 view視圖: http://xiaomazi.blog.51cto.com/5891742/1377090
需求介紹:
1、DNS的經常使用命令
2、如何使用 yum安裝 並配置使用?
1.手動添加配置文件;
2.利用原有的配置文件文件進行修改;
3.以及反向解析的實現;
3、如何實現 BIND主從複製?
1.配置正向主從服務的實現;
2.配置反向主從服務的實現;
3.區域傳送的安全控制;
4、如何實現 子域受權、請求轉發及ACL?
1.遠程管理BIND的工具;
2.子域受權;
3.請求轉發;
5、ACL 設置 與 view 視圖;
6、如何在 編譯環境安裝bind ,配置並使用?
1、DNS的經常使用命令:
1.測試解析命令.
1). dig命令:
# dig [-t type] [-x addr] [name] [@server]
+[no]trace-->(跟蹤解析過程)
+[no]recurse-->(是否使用遞歸的方式)
+[no]tcp -->(是否使用tcp查詢,而不使用udp)
+[no]question-->(是否隱藏問題)
+[no]answer-->(是否隱藏答案)
+[no]authority-->(是否隱藏權威段)
+[no]additional-->(是否隱藏附加段)
2). host命令:
# host [-t type] {name} [server]
例子:
[root@localhost ~]# host -t MX xiaoma.com xiaoma.com mail is handled by 10 mail.xiaoma.com. [root@localhost ~]#
3). nslookup命令(交互式的命令):
nslookup>
server DNS_SERVER_IP
set q=TYPE
{name}
例子:
[root@localhost ~]# nslookup > set q=A > www.xiaoma.com Server:172.16.17.202 Address:172.16.17.202#53 Name:www.xiaoma.com Address: 172.16.17.203 >
2.啓動/重加載命令:
1).啓動命令:
# named -u named
# servcice named start(這個可能會依賴rndc.key的)
2).重載命令:
# service named reload
# killall -1 named
# killall named(關閉)
3.測試語法錯誤:
# service named configtest
# named-checkconf
# named-checkzone "xiaoma.com" /var/named/xiaoma.com.zone
2、bind的基本使用:
一、正向解析配置:
第一種:手動建立配置文件及區域文件:
前提:
掛載光盤: [root@xiaoma ~]# mkdir /media/cdrom [root@xiaoma ~]# mount /dev/cdrom /media/cdrom/ mount: block device /dev/sr0 iswrite-protected, mounting read-only 配置本地yum源: [root@xiaoma ~]# cd /etc/yum.repos.d/ [root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak [root@xiaoma yum.repos.d]# vim media.repo [media] name=media baseurl=file:///media/cdrom enabled=1 gpgcheck=0
1).將準備好的bind包安裝:
[root@localhost ~]# yum -y install bind
2).注意: 這裏沒有使用源配置文件,而是手動寫配置文件:
[root@localhost etc]# mv /tmp/named.conf /etc/named.conf.origin
3).新建編輯配置文件/etc/named.conf:
4).配置區域文件(這裏是系統自帶的哦):
⑴編輯/var/named/named.loopback文件(若是是新建的文件要修改其相關屬性):
[root@localhost ~]# vim /var/named/named.loopback $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1 PTR localhost.
⑵編輯/var/named/named.localhost文件(若是是新建的文件要修改其相關屬性):
[root@localhost ~]# vim /var/named/named.localhost $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 AAAA ::1
⑶編輯/var/named/xiaoma.com.zone文件(手動建立):
5).修改named.conf屬性:
[root@localhost named]# chown root:named /var/named/xiaoma.com.zone [root@localhost named]# chmod 640 /var/named/xiaoma.com.zone [root@localhost etc]# chown root:named /etc/named.conf [root@localhost etc]# chmod --reference=/etc/named.conf.origin /etc/named.conf(1)-->注意:這個(1)和(2)是同樣的. [root@localhost etc]# chmod 640 /etc/named.conf(2)
6).啓動測試語法/手動測試語法的使用:
第一:啓動時測試: [root@localhost etc]# service named configtest zone localhost/IN: loaded serial 0 zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0 第二:手動測試: [root@localhost etc]# named-checkconf [root@localhost etc]# 區域文件是系統自帶的,我這裏就沒有必要檢查語法了吆. root@localhost named]# named-checkzone "xiaoma.com" /var/named/xiaoma.com.zone zone xiaoma.com/IN: loaded serial 2014031301 OK [root@localhost named]#
7).啓動named服務:
[root@localhost etc]# service named start-->啓動時須要產生隨機數. Generating /etc/rndc.key: [root@localhost etc]# --> 若是這裏啓動不了就使用下面的這個命令:以root的身份啓動,啓動後以named用戶執行. [root@localhost etc]# named -u named
8).使用dig命令測試(這裏介紹了下面毫不會介紹):
2.正向解析配置:
第二種:直接修改配置文件及區域文件:
前提:
掛載光盤: [root@xiaoma ~]# mkdir /media/cdrom [root@xiaoma ~]# mount /dev/cdrom /media/cdrom/ mount: block device /dev/sr0 iswrite-protected, mounting read-only 配置本地yum源: [root@xiaoma ~]# cd /etc/yum.repos.d/ [root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak [root@xiaoma yum.repos.d]# vim media.repo [media] name=media baseurl=file:///media/cdrom enabled=1 gpgcheck=0
1).將準備好的bind包安裝:
[root@localhost ~]# yum -y install bind
2).修改配置文件:named.conf:
注意: 這裏只是把註釋的內容貼出來了: // listen-on port 53 { 127.0.0.1; }; // listen-on-v6 port 53 { ::1; }; // allow-query { localhost; }; // dnssec-enable yes; // dnssec-validation yes; // dnssec-lookaside auto; // bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic"; //include "/etc/named.root.key";
3).修改區域文件/etc/named.rfc1912.zones:
在文章尾部添加: [root@localhost named]# vim /etc/named.rfc1912.zones zone "xiaoma.com" { type master; file "xiaoma.com.zone"; };
4).修改其屬性:
[root@localhost named]# chmod 640 /var/named/xiaoma.com.zone [root@localhost named]# chown root:named /var/named/xiaoma.com.zone [root@localhost named]# named-checkconf [root@localhost named]# named-checkzone "xiaoma.com" /var/named/xiaoma.com.zone
5).啓動服務/從新加載服務:
[root@localhost named]# named -u named [root@localhost named]# service named reload [root@localhost named]# killall -1 named
6).測試解析:
[root@localhost ~]# dig -t MX xiaoma.com [root@localhost ~]# dig -t CNAME pop.xiaoma.com [root@localhost ~]# dig -t MX xiaoma.com [root@localhost ~]# dig -t CNAME pop.xiaoma.com [root@localhost ~]# dig -t CNAME ftp.xiaoma.com [root@localhost ~]# dig -t A www.xiaoma.com [root@localhost ~]# dig -t NS xiaoma.com [root@localhost ~]# dig -t NS xiaoma.com @172.16.17.202 [root@localhost ~]# dig -t A mail.xiaoma.com
--->咱們以它來測試查詢 mail 的 A 記錄:
上下圖片對比:
6).使用 +trace 跟蹤解析過程(要連上網絡的吆):
接上面的環境基礎(2.正向解析配置:):
3.配置反向解析:
1).定義區域文件/etc/named.rfc1912.zones:
[root@localhost ~]# vim /etc/named.rfc1912.zones zone "17.16.172.in-addr.arpa"{ type master; file "172.16.17.zone"; };
2).建立區域文件172.16.17.zone:
複製文件保持屬組及權限: [root@localhost named]# cp -p xiaoma.com.zone 172.16.17.zone
3).編輯區域文件172.16
.
17
.zone:
4).啓動測試語法/從新加載:
5).測試解析:
接上,其它解析:
[root@localhost named]# dig -x 172.16.17.204 [root@localhost named]# dig -x 172.16.17.203
6).host命令測試解析:
接上 2 和 3 的配置的基礎之上:
3、區域傳送的 主從複製:
注意:
這裏的主機名字我改了,爲了方便認出 主和從 的;
主DNS服務器: host1
從DNS服務器: host2
----不在同一網段也能夠同步----
前提:
掛載光盤: [root@host2 ~]# mkdir /media/cdrom [root@host2 ~]# mount /dev/cdrom /media/cdrom/ mount: block device /dev/sr0 iswrite-protected, mounting read-only 配置本地yum源: [root@host2 ~]# cd /etc/yum.repos.d/ [root@host2 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak [root@host2 yum.repos.d]# vim media1.repo [media1] name=media1 baseurl=file:///media/cdrom enabled=1 gpgcheck=0
-->將準備好的bind包安裝:
[root@localhost ~]# yum -y install bind
1.配置正向主從服務的實現:
1).主服務器配置 /var/named/xiaoma.com.zone:
2).主服務器配置 從新加載區域文件:
[root@host1 ~]# service named reload Reloading named: [ OK ]
3).測試主從服務器是否能通訊:
2).從服務器配置 /etc/named.conf:
注意: 這裏只是把註釋的內容貼出來了: // listen-on port 53 { 127.0.0.1; }; // listen-on-v6 port 53 { ::1; }; // allow-query { localhost; }; // dnssec-enable yes; // dnssec-validation yes; // dnssec-lookaside auto; // bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic"; //include "/etc/named.root.key";
3).從服務器配置 vim /etc/named.rfc1912.zones:
4).從服務器配置 啓動並查看端口53是否啓動:
[root@host2 ~]# named -u named [root@host2 ~]# ss tunl
5).從服務器配置查看/var/named/slaves/xiaoma.com.zone是否以同步:
6).從服務器配置 測試解析:
7).主服務器配置 從新加載並修改序列號:
I.添加一條記錄並修改序列號:
II.從新加載:
[root@host1 ~]# service named reload Reloading named: [ OK ]
8).查看日誌:
9).從服務器 查看是否同步:
10).其它解析:
[root@host2 ~]# dig -t NS xiaoma.com @172.16.17.100 [root@host2 ~]# dig -t MX xiaoma.com @172.16.17.100 [root@host2 ~]# dig -t CNAME pop.xiaoma.com @172.16.17.100 [root@host2 ~]# dig -t CNAME ftp.xiaoma.com @172.16.17.100
接上(1.配置正向主從服務的實現)
2.配置反向主從服務的實現:
1).從服務器配置 vim /etc/named.rfc1912.zones :
2).從服務器 測試語法並從新加載:
[root@host2 ~]# named-checkconf [root@host2 ~]# service named reload Reloading named: [ OK ]
3).從服務器 查看日誌:
4).從服務器 查看同步文件:
5).將主服務器的記錄添加至反向記錄:
咱們在主服務器(/var/named/172.16.17.zone)裏面加一條NS記錄,告訴主服務器有一個從服務器.(ns二、img以及從服務器的記錄).
6).啓動服務並從新加載:
7).主服務器 查看日誌:
8).從服務器 查看同步:
接上面(2.配置反向主從服務的實現)
3.區域傳送的安全控制:
注意:咱們都知道默認在未設置安全控制的狀況下,DNS服務器的區域傳送是傳送全部服務器的,那麼咱們應該如何防範別人同步你的服務器的數據呢?
1).主服務器配置 vim /etc/named.rfc1912.zones :
2).主服務器配置 測試語法/重加載:
[root@host1 ~]# named-checkconf [root@host1 ~]# service named reload Reloading named: [ OK ] [root@host1 ~]#
3).主服務器 測試區域傳送:
4).從服務器 測試區域傳送:
6).定從服務器的安全控制 vim /etc/named.rfc1912.zones:
7).從服務器 測試語法/重加載
[root@host2 ~]# named-checkconf [root@host2 ~]# service named reload Reloading named:
8).從服務器 測試:
接上面的環境配置.
4、如何實現 子域受權、請求轉發及ACL?
1.遠程管理BIND的工具:
簡單介紹:
rndc: Remote Name Domain Controller
rndc: 密鑰
rndc: 持有一半密鑰,保存於rndc的配置文件中;
BIND:持有一半密鑰,保存於主配置文件中;
經常使用選項:
reload : 重讀
reload zone : 重加區域文件
reconfig: 重讀配置文件並加載新增的區域;
querylog: 關閉或開啓查詢日誌;
flush: 清空服務器的緩存;
flushname name: 清空指定名稱相關的緩存;
trace: 打開debug,debug有級別的概念,每執行一次提高一次級別;
trace LEVEL: 指定deb②ug的級別;
若是rndc沒法正常工做,可嘗試使用rndc-confgen 生成/etc/rndc.conf配置文件,並將配置文件中的後半部分複製到BIND的主配置文件中並按指示啓用便可.
如: # rndc-confgen -r /dev/urandom > /etc/rndc.conf
# service named reload
還有一個就是在下面的小7)中的方法實現自動生成rndc.key文件.
1).首先主服務器上生成rndc的密鑰:
I.生成密鑰:
[root@host1 ~]# rndc-confgen -r /dev/urandom > /etc/rndc.conf
II.密鑰介紹:
2).在主服務器 將/etc/rndc.conf屬於BIND的複製到/etc/named.conf
3).在主服務器上 查看狀態:
4).再主服務器上查看端口:
[root@host1 ~]# ss -tunl
5).從服務器上升成密鑰:
與主服務器的步驟同樣:1)-2)-3)-4)-5) 這裏就不貼圖了哈.
6). 例子:
①第一次開啓,執行第二次關閉:rndc querylog
接上:
②中止rndc:
[root@host2 ~]# rndc stop [root@host2 ~]# ps aux | grep named root 263701.00.1103252828pts/0S+20:450:00grepnamed [root@host2 ~]# named -u named
③trace的使用:
[root@host2 ~]# rndc trace [root@host2 ~]# rndc trace 執行三次 [root@host2 ~]# rndc trace [root@host2 ~]# rndc status version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 CPUs found: 2 worker threads: 2 number of zones: 21 debug level: 3符合上面的三次. xfers running: 0 xfers deferred: 0 soa queries inprogress: 0 query logging isOFF recursive clients: 0/0/1000 tcp clients: 0/100 server isup andrunning [root@host2 ~]# rndc trace 0 (指定級別) [root@host2 ~]# rndc status version: 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 CPUs found: 2 worker threads: 2 number of zones: 21 debug level: 00級別 xfers running: 0 xfers deferred: 0 soa queries inprogress: 0 query logging isOFF recursive clients: 0/0/1000 tcp clients: 0/100 server isup andrunning [root@host2 ~]#
7).如何自動生成rndc.key , vim /etc/rc.d/init.d/named文件:
2.BIND子域受權的實現(主要將正向的,反向的很麻煩):
子域名和委派的區別?
子域文件在父域文件中
委派有獨立的區域文件
-->實驗環境
三臺虛擬機:一臺主,一臺從,一臺子域.
注意這三臺都要使用yum安裝bind吆.
前提:
掛載光盤: [root@xiaoma ~]# mkdir /media/cdrom [root@xiaoma ~]# mount /dev/cdrom /media/cdrom/ mount: block device /dev/sr0 iswrite-protected, mounting read-only 配置本地yum源: [root@xiaoma ~]# cd /etc/yum.repos.d/ [root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak [root@xiaoma yum.repos.d]# vim media.repo [media] name=media baseurl=file:///media/cdrom enabled=1 gpgcheck=0
>>>將準備好的bind包安裝:
[root@localhost ~]# yum -y install bind
主配置文件不須要更改;
1).主服務器配置 正向受權文件 vim /etc/rc.d/init.d/named:
接上 測試語法:
[root@host1 ~]# named-checkconf [root@host1 ~]# named-checkzone "xiaoma.com"/var/named/xiaoma.com.zone zone xiaoma.com/IN: tech.xiaoma.com/NS 'dns.tech.xiaoma.com'(out of zone) has no addresses records (A or AAAA) zone xiaoma.com/IN: loaded serial 2014031203 OK [root@host1 ~]# rndc reload [root@host1 ~]# service named restart
2).這裏配置了一臺子域服務器IP:172.16.200.21:
3).子域配置/etc/named.conf:
// listen-on port 53 { 127.0.0.1; }; // listen-on-v6 port 53 { ::1; }; // allow-query { localhost; }; // dnssec-enable yes; // dnssec-validation yes; // dnssec-lookaside auto; // bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic"; //include "/etc/named.root.key";
4).子域配置 定義/etc/named.rfc1912.zones :
5).子域配置 區域文件/var/named/tech.xiaoma.com.zone:
6).賦予權限屬性並啓動:
[root@localhost named]# hown root:named tech.xiaoma.com.zone [root@localhost named]# chmod 640 tech.xiaoma.com.zone [root@localhost named]# named-checkzone "xiaoma.com" /var/named/tech.xiaoma.com.zone zone xiaoma.com/IN: loaded serial 2014031201 OK [root@localhost named]# named-checkconfig [root@localhost named]# service named start Starting named: [ OK ] [root@localhost named]# rndc reload server reloadsuccessful [root@localhost named]#
7).子域 測試解析A記錄:
8).主服務器解析NS記錄,雖然有受權,可是不以父域的相應爲結果(父域能解析子域).
9).在子域上解析父域(子域不能解析父域)--這是須要轉發功能的:
接上2配置:
3.配置區域轉發:轉發域.
1).子域配置 /etc/named.rfc1912.zones:
2).重載服務.
[root@localhost named]# named-checkconf [root@localhost named]# rndc reload server reloadsuccessful 不行的就用這個: [root@localhost named]# service named restart Stopping named: . [ OK ] Starting named: [ OK ] [root@localhost named]#
3).在子域上測試解析父域的A記錄:
4).子域配置:怎麼解析其它的服務器呢?如www.google.com
I.配置/etc/named.conf文件:
II.配置/etc/named.rfc1912.zones:
5、ACL 設置 與 view 視圖;
1.ACL 的簡單配置:
1).ACL的安全控制選項:
allow-transfer {};
一般都須要啓用;
allow-query {};
此項一般僅用於服務器是緩存名稱服務器時,只開放查詢功能給本地客戶端;
allow-recursion { };
定義遞歸白名單;
allow-update { none; };
定義容許動態更新區域數據文件的主機白名單;
2).訪問控制列表只有定義後才能使用;一般acl要定義在named.conf的最上方;
3).BIND有四個內置的acl:
any: 任何主機
none: 無一主機
local: 本機
localnet: 本機的所在的網絡;
4).配置實例 /etc/named.conf文件中定義:
5).啓動並檢測語法錯誤:
[root@host1 ~]# named-checkconf [root@host1 ~]# service named restart Stopping named: . [ OK ] Starting named: [ OK ] [root@host1 ~]#
2.view視圖 的簡單配置:
若是咱們定義了 視圖 全部區域都必須定義在 view 中,包括根;
前提:
掛載光盤: [root@xiaoma ~]# mkdir /media/cdrom [root@xiaoma ~]# mount /dev/cdrom /media/cdrom/ mount: block device /dev/sr0 iswrite-protected, mounting read-only 配置本地yum源: [root@xiaoma ~]# cd /etc/yum.repos.d/ [root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak [root@xiaoma yum.repos.d]# vim media.repo [media] name=media baseurl=file:///media/cdrom enabled=1 gpgcheck=0
1).將準備好的bind包安裝:
[root@localhost ~]# yum -y install bind
2).修改配置文件:named.conf:
注意: 這裏只是把註釋的內容貼出來了: // listen-on port 53 { 127.0.0.1; }; // listen-on-v6 port 53 { ::1; }; // allow-query { localhost; }; // dnssec-enable yes; // dnssec-validation yes; // dnssec-lookaside auto; // bindkeys-file "/etc/named.iscdlv.key"; // managed-keys-directory "/var/named/dynamic"; //include "/etc/named.root.key";
3).修改區域文件/etc/named.rfc1912.zones:
[root@localhost ~]# vim /etc/named.rfc1912.zones //named.rfc1912.zones: // //Provided by Red Hat caching-nameserver package // //ISC BIND named zone configuration forzones recommended by //RFC 1912 section 4.1 : localhost TLDs and address zones //and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt //(c)2007 R W Franks // //See /usr/share/doc/bind*/sample/forexample named configuration files. // 定義內網的客戶端爲192.168.0.0/24的(根也在): view left { match-clients { 192.168.0.0/24; }; zone "."IN { typehint; file"named.ca"; }; zone "localhost.localdomain"IN { typemaster; file"named.localhost"; allow-update { none; }; }; zone "localhost"IN { typemaster; 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 { typemaster; file"named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa"IN { typemaster; file"named.loopback"; allow-update { none; }; }; zone "0.in-addr.arpa"IN { typemaster; file"named.empty"; allow-update { none; }; }; 外網的區域: zone "xiaoma.com"IN { typemaster; file"xiaoma.com.left"; }; }; 定義外網客戶端: view right { match-clients { 172.16.0.0/16; }; zone "xiaoma.com"IN { typemaster; file"xiaoma.com.right"; }; }; 定義其餘網絡找不到客戶端,就匹配到外網上去: view default { match-clients { any; }; zone "xiaoma.com"IN { typemaster; file"xiaoma.com.right"; }; };
4).檢查配置文件:
[root@localhost ~]# named-checkconf
5).配置區域文件 /var/named/xiaoma.com.left
6).配置區域文件 /var/named/xiaoma.com.right
7).賦予文件屬性:
[root@localhost named]# chown root:named xiaoma.com.* [root@localhost named]# chmod 640 xiaoma.com.*
8).啓動服務:
[root@localhost named]# service named start Generating /etc/rndc.key: [ OK ] Starting named: [ OK ] [root@localhost named]#ss -tunl
9).模擬IP地址:
[root@localhost ~]# ifconfig eth0:0 192.168.0.7/24 up
10).測試解析:
接上:
9).windows測試:
6、編譯安裝bind及應用:
>>>編譯安裝named(bind-
9.9
.
5
):
前提:配置好開發環境,安裝包組(yum安裝).
掛載光盤: [root@xiaoma ~]# mkdir /media/cdrom [root@xiaoma ~]# mount /dev/cdrom /media/cdrom/ mount: block device /dev/sr0 is write-protected, mounting read-only 配置本地yum源: [root@xiaoma ~]# cd /etc/yum.repos.d/ [root@xiaoma yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak [root@xiaoma yum.repos.d]# vim media.repo [media] name=media baseurl=file:///media/cdrom enabled=1 gpgcheck=0 安裝開發包組: [root@xiaoma ~]# yum grouplist | grep Development Desktop Platform Development Development tools Server Platform Development [root@xiaoma ~]# yum -y groupinstall "Server Platform Development" "Desktop Platform Development" "Development tools"
一、下載源代碼,編譯安裝:
1).將準備好的源碼包解壓並編譯安裝:
[root@xiaoma tmp]# tar xf bind-9.9.5.tar.gz [root@xiaoma tmp]# cd bind-9.9.5 [root@xiaoma bind-9.9.5]# ./configure --prefix=/usr/local/bind9 --sysconfdir=/etc/named/ --enable-threads --enable-epoll --disable-chroot root@xiaoma bind-9.9.5]# make root@xiaoma bind-9.9.5]# make install
2.建立主配置文件/etc/named/named.conf:
3.建立區域數據文件:
① 建立/var/named/named.ca :
[root@xiaoma ~]# mkdir /var/named [root@xiaoma ~]# cd /var/named/ [root@xiaoma named]# dig -t NS . @172.16.0.1 > named.ca
② 建立/var/named/named.loopback
:
[root@xiaoma named]# vim named.loopback $TTL 86400 @ IN SOA localhost. admin.localhost. ( 2014031101 2H 10M 7D 1D ) IN NS localhost. 1 IN PTR localhost.
③ 建立/var/named/named.localhost :
[root@xiaoma named]# vim named.localhost $TTL 86400 @ IN SOA localhost. admin.localhost. ( 2014031101 2H 10M 7D 1D ) IN NS localhost. localhost. IN A 127.0.0.1
④而後建立/var/named/xiaoma.com.zone
文件:
[root@xiaoma named]# vim /var/named/xiaoma.com.zone $TTL 86400 @ IN SOA dns.xiaoma.com. dnsadmin.xiaoma.com. ( 2014031101 2H 10M 3D 1D) IN NS dns IN MX 10mail dns IN A 172.16.17.202 mail IN A 172.16.17.202 www IN A 172.16.17.1
4.建立系統用戶,且測試啓動:
① 建立用戶:
[root@xiaoma ~]# groupadd -g 53 -r named [root@xiaoma ~]# useradd -g named -r named [root@xiaoma ~]# id named uid=496(named) gid=53(named) groups=53(named) [root@xiaoma ~]# ls /home/
② 賦予相應屬性:
[root@xiaoma named]# chmod 640 /etc/named/named.conf /var/named/* [root@xiaoma named]# chown root:named /etc/named/* /var/named/*
③ 設置PATH變量:
[root@xiaoma named]# echo 'export PATH=/usr/local/bind9/bin:/usr/local/bind9/sbin:$PATH' > /etc/profile.d/named.sh [root@xiaoma named]# cat /etc/profile.d/named.sh [root@xiaoma named]# source /etc/profile.d/named.sh
④ 檢查語法:
[root@xiaoma ~]# named-checkconf [root@xiaoma ~]# named-checkzone "0.0.127.in-addr.arpa" /var/named/named.loopback zone 0.0.127.in-addr.arpa/IN: loaded serial 2014031101 OK [root@xiaoma ~]# named-checkzone "localhost" /var/named/named.localhost zone localhost/IN: loaded serial 2014031101 OK [root@xiaoma named]# named-checkzone "xiaoma.com" xiaoma.com.zone zone xiaoma.com/IN: loaded serial 2014031101 OK [root@xiaoma ~]# killall -1 named
⑤ 測試啓動並查看端口:
[root@xiaoma named]# named -u named [root@xiaoma named]# ss -tunl
⑥測試解析A記錄:
[root@localhost named]# dig -t A www.xiaoma.com @172.16.17.202 ; <<>> DiG 9.9.5 <<>> -t A www.xiaoma.com @172.16.17.202 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49273 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.xiaoma.com. IN A ;; ANSWER SECTION: www.xiaoma.com. 86400 IN A 172.16.17.1 ;; AUTHORITY SECTION: xiaoma.com. 86400 IN NS dns.xiaoma.com. ;; ADDITIONAL SECTION: dns.xiaoma.com. 86400 IN A 172.16.17.202 ;; Query time: 0 msec ;; SERVER: 172.16.17.202#53(172.16.17.202) ;; WHEN: Fri Mar 07 01:37:43 CST 2014 ;; MSG SIZE rcvd: 93 [root@localhost named]#
5.提供服務腳本,並賦予權限:
1).腳本:
[root@xiaoma ~]# vim /etc/rc.d/init.d/named #!/bin/bash # # description: named daemon # chkconfig: - 25 80 # pidFile=/usr/local/bind9/var/run/named.pid lockFile=/var/lock/subsys/named confFile=/etc/named/named.conf [ -r /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions start() { if [ -e $lockFile ]; then echo "named is already running..." exit 0 fi echo -n "Starting named:" daemon --pidfile "$pidFile" /usr/local/bind9/sbin/named -u named -c "$confFile" RETVAL=$? echo if [ $RETVAL -eq 0 ]; then touch $lockFile return $RETVAL else rm -f $lockFile $pidFile return 1 fi } stop() { if [ ! -e $lockFile ]; then echo "named is stopped." # exit 0 fi echo -n "Stopping named:" killproc named RETVAL=$? echo if [ $RETVAL -eq 0 ];then rm -f $lockFile $pidFile return 0 else echo "Cannot stop named." failure return 1 fi } restart() { stop sleep 2 start } reload() { echo -n "Reloading named: " killproc named -HUP #killall -HUP named RETVAL=$? echo return $RETVAL } status() { if pidof named &> /dev/null; then echo -n "named is running..." success echo else echo -n "named is stopped..." success echo fi } usage() { echo "Usage: named {start|stop|restart|status|reload}" } case $1 in start) start ;; stop) stop ;; restart) restart ;; status) status ;; reload) reload ;; *) usage exit 4 ;; esac
2).賦予相應屬性:
[root@xiaoma ~]# chkconfig --add named [root@xiaoma ~]# chkconfig --list named named 0:off 1:off 2:off 3:off 4:off 5:off 6:off [root@xiaoma ~]# killall named -->關閉named [root@xiaoma ~]# chmod +x /etc/rc.d/init.d/named [root@xiaoma ~]# service named start Starting named: [ OK ]
A smile is the most beautiful language!!!
以本人的理解而寫出博客,如如有錯誤,歡迎指出.
---->小馬子