http://www.l-penguin.idv.tw/article/dns.htm

參考資訊

DNS 是所有伺服之母,電腦連節時均以 IP 為主,比方說輸入 202.43.195.52 就會到台灣雅虎,當然您也可以打 tw.yahoo.com 到 Yahoo-Taiwan 首頁,但是,當您輸入 tw.yahoo.com 時,可曾想過其實背後是由 DNS 幫您做轉換成 IP 的動作!

DNS 的組成,是由分散式 DB 所構成的,每個 DNS 可以管理屬於自己的網域,也可以受權自己所屬的子網域給別人,在你得到網域之後,你上層的 DNS 就不會管你如何設定,如何受權;而你受權子網域之後,您也不用管理你的子網域如何管理,因為“一旦受權 完全自由”。當然,您可別先掛掉 (或你的上一層 DNS),不然就連你的小孩 (子網域) 都跟著掛了!

實作 DNS 管理

以下,假設 abc 實業公司申請屬於他們的 domain,一旦申請了自己的 網域名稱 之後,接下來就要設定讓你的 DNS 能夠活起來,在 Linux 裡,長久以來多數都使用 bind 這個套件來做 DNS 的管理,他經歷了歷史的考驗,因此在多絕大部份的功能上都最為完整。

檔案編輯

在編輯 DNS 時,大部份只需要編輯 database 檔,而初次或有網域變動時才會需要編輯到 /etc/named.conf。

編輯設定檔 (/etc/named.conf)

# vi /etc/named.conf

options {
directory "/var/named";
}
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
include "/etc/rndc.key";

當您開啟 /etc/named.conf 之後,您就可以發現已經存在一些資訊了,而 /etc/named.conf 這個目錄主要是設定每個網域資訊是存在那一個檔案裡,比方說 localhost 這個 domain 是存在 localhost.zone 的檔案裡,而 root domain 資訊是放在 named.ca 裡面。然而,假設現在已經申請了 abc.com.tw 這個 domain,所以當 .com.tw 受權過來後就可以設定我們所屬的網域了。

正解設定

編輯設定檔 (/etc/named.conf)

在 /etc/named.conf 裡面輸入一段設定,並指定 abc.com.tw 的網域資訊是放在那裡的。

zone "abc.com.tw" IN {
type master;
file "db-abc.com.tw";
allow-update { none; };
};

指定 abc.com.tw 的 domain 資訊放在 db-abc.com.tw,把 /etc/named.conf 存起來。接下來要去“那裡”編輯 db-abc.com.tw 呢?其實答案就在 /etc/named.conf 裡的 options { directory "/var/named"; } 這個區段裡,看到了吧!所以接下來的 db-abc.com.tw 就要在 /var/named 編好之後放在這裡,這樣才能正確被讀入呢!

編輯設定檔 (/var/named/db-abc.com.tw)

$TTL          86400
$ORIGIN abc.com.tw.
@ 1D IN SOA @ root.abc.com.tw. (
2005021801 ; 修改序號
3H ; refresh
15M ; retry
1W ; expiry
1D ) ; minimum @ IN NS dns.abc.com.tw.
dns.abc.com.tw. IN A 11.22.33.100 ;設定 MX record
@ IN MX 10 ms1
@ IN MX 20 ms2
ms1 IN A 11.22.33.69
ms2 IN A 11.22.33.70 www 10 IN A 11.22.33.85 ;www 做 load balancing
www 10 IN A 11.22.33.86 ;www 做 load balancing
web IN CNAME www ;讓 web.abc.com.tw 也指到 www

上述範列設定了一些技巧,以下一一解釋重要部份:

  • $ORIGIN abc.com.tw.

    說明這個設定檔是屬於那一個網域的。

  • root.abc.com.tw.

    指定管理者的 mail,也就 root@abc.com.tw,root 之後的 . 代表著 @ 的意思,不用 @ 的原因是 "@" 符號有特別的含意。

  • @ IN NS dns.abc.com.tw.

    指定當前 abc.com.tw. 的 dns 查詢主機是那一部

  • dns.abc.com.tw. IN A 11.22.33.44

    指定 dns.abc.com.tw. 的正解。

  • @ IN MX 10 ms1

    @ IN MX 20 ms2

    指定 abc.com.tw. 的 MX 記錄,分別指向 ms1.abc.com.tw 和 ms2.abc.com.tw、而 ms1 的優先等級高於 ms2,此為重要設定,若郵件無法傳遞,有部份原因是 MX 記錄沒有設好 (若有 mail gateway、mail routing 時尤為重要)。

  • ms1 IN A 11.22.33.50

    ms2 IN A 11.22.33.51

    設定 ms1.abc.com.tw 和 ms2.abc.com.tw 的正解 A 記錄。

  • www 10 IN A 11.22.33.85

    www 10 IN A 11.22.33.86

    既 www.abc.com.tw。設定了兩組 www 的 A 正解記錄主要是有兩台 www 伺服器在運作,為避免伺服器太過忙碌,而使用兩組設定以分攤流量 (Load balancing)。

  • web IN CNAME www

    既 web.abc.com.tw,其實就是指向 www.abc.com.tw,這只是 www.abc.com.tw 的一個別名而已。

符號說明:

@:當地的 domain 簡寫,也就是 abc.com.tw

;:這個符號代表註解,在 ; 之後的文字將被視為無效。

此時,abc.com.tw 的網域正解設定應已完成,接下來看看 DNS 是否能查得到

正解檢查

查 MX record

[root@rhel200 named]# host -t mx abc.com.tw
abc.com.tw mail is handled by 20 ms2.abc.com.tw.
abc.com.tw mail is handled by 10 ms1.abc.com.tw.
[root@rhel200 named]#

查 www.abc.com.tw

[root@rhel200 named]# host www.abc.com.tw
www.abc.com.tw has address 11.22.33.69
www.abc.com.tw has address 11.22.33.70

查 web.abc.com.tw

[root@rhel200 named]# host web.abc.com.tw
web.abc.com.tw is an alias for www.abc.com.tw.
www.abc.com.tw has address 11.22.33.85
www.abc.com.tw has address 11.22.33.86
[root@rhel200 named]#

反解設定

編輯設定檔 (/etc/named.conf)

加入一個 reserve zone。

zone "33.22.11.in-addr.arpa" IN {
type master;
file "db-11.22.33";
};

再到 /var/named 裡編輯 db-11.22.33

$TTL    86400
@ IN SOA abc.com.tw. root.abc.com.tw. (
2004102501 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS dns.abc.com.tw.
69 IN PTR ms1
70 IN PTR ms2
85 IN PTR www
86 IN PTR www
100 IN PTR dns

正反解的設其實都差不多,只是在新增對應反解時是使用 PTR 記錄。而 69 是 69.33.22.11.in-addr.arpa 的簡寫。

反解檢查

[root@mailgw named]# host 11.22.33.100
100.33.22.11.in-addr.arpa domain name pointer dns.abc.com.tw.
[root@mailgw named]# host 11.22.33.85
85.33.22.11.in-addr.arpa domain name pointer www.abc.com.tw.
[root@mailgw named]#

以上,若是正反解都 OK 了,那麼就可以開開心心的讓別人查到您的 DNS 了。

Bind 9 新功能 view

view 在實做上, 主要的功能就是可以讓你的 DNS 伺服器見人說人話, 見鬼說鬼話, 怎麼說呢, 比方說你在一些網路主機不想被別人使用 DNS 來查到, 那麼就可以使用 view 功能來隔開, 像一般公司內的伺服器, 會使用內部網段, 但是又不想要讓別人可以從外面查到 (就算查到對一般人也沒什麼用處), 又不想多增加一台所謂的內部 DNS 伺服器, 所以我們就可以使用 view 的功能, 看是 Client 連上來是屬於那一個區段來回應.

設定 acl

為什麼要設定 acl, 就是 Access Control List, 主要是用來分類群組用的. 以下的範例, 將把 intranet 設定在 192.168.1.0/24, 192.168.2.0/24, 192.168.3.0/24, 而不在這三個範圍之內的, 就叫 internet. 設定完之後, 再使用 view function 劃清界線.

以下, 在 /etc/named.conf 做設定

//acl 設定各不同 Client 的分組
acl "intranet" { 192.168.1.0/24; 192.168.2.0/24; 192.168.3.0/24; };
acl "internet" { ! 192.168.1.0/24; ! 192.168.2.0/24; ! 192.168.3.0/24; };
view "intranet" {
//使用 match-clients 來檢視查尋的 Client 來源 (公司網路)
match-clients { "intranet"; };
zone "." IN {
type hint;
file "named.ca";
}; zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
}; zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
}; zone "abc.com.tw" IN {
type master;
file "db.abc.com.tw";
}; zone "33.22.11.in-addr.arpa" IN { type master; file "db-11.22.33"; }; // 以下這一段就是不希望本公司以外的人可以查到
zone "company.abc.com.tw" IN {
type master;
file "db-in.company.abc.com.tw";
}; // the company.abc.com.tw PTR record
zone "1.168.192.in-addr.arpa" IN { type master; file "db-192.168.1.0"; };
};view "internet" {
//使用 match-clients 來檢視查尋的 Client 來源 (非公司網路)
match-clients { "internet"; };
zone "." IN {
type hint;
file "named.ca";
}; zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
}; zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
}; zone "abc.com.tw" IN {
type master;
file "db.abc.com.tw";
}; zone "33.22.11.in-addr.arpa" IN { type master; file "db-11.22.33"; };
};

以上設定, 就不示範如何設定 db 資料庫檔, 因為設定方法就如同上面所說的一樣, 沒有什麼改變.

你可以很明確的發現, 在我們設定 view "internet" 和 view "intranet" 時, 都需要把原本的 zone 都重新定義才行, 看起來就會像是獨立的 DNS Server, 現在只要使用不同的網路, 就可以發現你的 DNS 是見人說人話, 見鬼說鬼話了!

授權子網域

如果當您的網路規摩有一定的程度之後, 也許會想要再新增一個子網域. 在這個範例之後, 將會示範如何在一個現有的網域下再新增一個 DNS 網域, 並把該子網域授權給下層的單位管理.

新增一個 demo.abc.com.tw 的子網域, 並把 demo.abc.com.tw 的 DNS 伺服器指到 211.6.9.85

編輯 /var/named/db.abc.com.tw

$ORIGIN demo.abc.com.tw.
demo.abc.com.tw. IN NS dns.demo.abc.com.tw.
dns.demo.abc.com.tw. IN A 211.6.9.85

避免成為 Open DNS servers

Open DNS servers 簡單來說,就是只要大家指向你為查詢伺服器,那麼你就會為大家努力的查詢,而且來者不拒。成為 Open DNS servers,一般除了 ISP 之外,其它私人或企業伺服器應該是不需要的。

以下設定,可以設定為只為 192.168.1.0/24 查詢,不為外界的連線查詢。

建立一個 acl:

root # vi /etc/named.conf

---------------/etc/named.conf-----------------------
#在檔案最上面加入 trusted 的 acl。
acl "trusted" {127.0.0.1; 192.168.1.0/24;};
----------------------------------------------------------
root # 在 option {}; 區段加入 allow-recursion 設定: root # vi /etc/named.conf
---------------/etc/named.conf-----------------------
options {
~其它 option 設定~
allow-recursion { trusted; };
};
----------------------------------------------------------
root #

經過以上的設定之後,這台 DNS 就只會為 192.168.1.0/24 和 127.0.0.1 (本機) 查詢。

【转】bind - DNS 設定的更多相关文章

  1. Windows的免費hMailServer搭配SpamAssassin過濾垃圾郵件:安裝與設定

    http://jdev.tw/blog/1677/hmailserver-with-spamassassin-sawin32 為了解決垃圾信泛濫的狀況,這兩天「跨界」測試了運行在Windows上的免費 ...

  2. 免安裝、免設定的 Hadoop 開發環境 - cloudera 的 QuickStart VM

    cloudera 的 QuickStart VM,為一種免安裝.免設定 Linux 及 Hadoop,已幫你建好 CDH 5.x.Hadoop.Eclipse 的一個虛擬機環境.下載後解壓縮,可直接以 ...

  3. JavaFX結合 JDBC, Servlet, Swing, Google Map及動態產生比例圖 (3):部署設定及應用 (转帖)

    說明:這一篇主要是說明如何將程式部署到Application Server,以及程式如何運作,產生的檔案置於何處,以及如何以瀏覽器呈現(Applet),或是當成桌面應用程式,或是 桌面Applet,這 ...

  4. 修正 Memo 設定為 ReadOnly 後, 無法有複製的功能

    问题:当 Memo 設定為 ReadOnly = True 後, 选取一段文字后,無法有複製的功能. 适用:XE6 Android 系统(目前 iOS 还找不到方法) 修正方法: 请将源码 FMX.P ...

  5. ASP.NET MVC3 在_ViewStart設定Layout後用RenderAction的注意事項

    ASP.NET MVC3 在_ViewStart設定Layout後用RenderAction的注意事項 3/24 TW MVC第一次活動圓滿的結束了,雖然是RC,但也來了不少願意聽我們分享的好朋友. ...

  6. 【转】什麼是 Team Explorer Everywhere 2010 ?TFS 專用的 Eclipse 整合套件的安裝與設定

    前言- 大家都知道 版本管控是一件很重要的事情!而且也知道分別有 VSS , SVN , TFS 等- 多數人都會覺得, .NET 的開發工具要用 VSS . TFS .SVN 而 Java 的 Ec ...

  7. [系统开发] Bind DNS 管理系统

    一.问题的产生 很多公司的 DNS 是用 BIND 建立的:DNS 服务非常重要,BIND 功能虽然强大,但是是基于配置文件进行管理的,管理员对 DNS 进行的任何操作都要通过修改配置文件来实现,稍不 ...

  8. 在Windows驗證網站設定部分匿名存取

    最近接連遇到幾次的需求:供內部使用的ASP.NET網站,全站使用Windows驗證,使用者以網域AD帳號登入,但網站包含少數API性質的ASHX.ASPX或MVC Action,提供其他系統呼叫整合. ...

  9. ASP.NET MVC 4 部署到 Windows Azure 如何轉換時區設定

    由於公司慢慢地開始將新的專案都移往 Windows Azure 雲端平台做網站代管,漸漸地也開始遇到一些小問題,這些問題在還沒上雲端之前通常不會發生,像我們這次遇到的問題就跟顯示時間有關.由於 Win ...

随机推荐

  1. js中的类数组对象---NodeList

    动态 NodeList 这是文档对象模型(DOM,Document Object Model)中的一个大坑. NodeList 对象(以及 HTML DOM 中的 HTMLCollection对象)是 ...

  2. Android studio 菜单介绍 3.1.文件(File)

    文件(File) 3.1.1.New 1. Android Studio中的Project相当于Eclipse中的Workspace 3.1.5.Close Prject 关闭当前项目打开的窗口 2. ...

  3. null和undefined区别(转)

    目前,null和undefined基本是同义的,只有一些细微的差别. null表示"没有对象",即该处不应该有值.典型用法是: (1) 作为函数的参数,表示该函数的参数不是对象. ...

  4. 第五篇T语言实例开发,数组空间使用

    数组空间使用 排序算法 在实际中,当有多个无序数据时.我们就需要多数据进行排序 典型的排序:冒泡排序 排序原理 冒泡排序算法的运作如下:(从后往前) 比较相邻的元素.如果第一个比第二个大,就交换他们两 ...

  5. gui2

    事件:描述发生了什么的对象. 存在各种不同类型的事件类用来描述各种类型的用户交互. 事件源:事件的产生器. 事件处理器:接收事件.解释事件并处理用户交互的方法. 比如在Button组件上点击鼠标会产生 ...

  6. 【转载】 Java 7之基础 - 强引用、弱引用、软引用、虚引用

    原文地址:http://blog.csdn.net/mazhimazh/article/details/19752475 1.强引用(StrongReference) 强引用是使用最普遍的引用.如果一 ...

  7. MYCAT 安装(转)

    1.安装JAVA环境JDK 基于JAVA开发,所以需要安装JDK 2.下载安装Mycat https://github.com/MyCATApache/Mycat-download 本次安装1.5版本 ...

  8. maven3.2.3+eclipse4.4+JDK1.8+win8.1_64bit环境搭建

    --------------------------------------- 博文作者:迦壹 博客标题:win8.1_64bit+eclipse4.4+maven3.2.3+JDK1.8环境搭建 博 ...

  9. Fatal error 829---数据库 ID 8,页 (1:80740) 已标记为 RestorePending,可能表明磁盘已损坏(日志备份和热备、双机的重要性)

    问题现象: 在业务数据库中查询:SELECT a.NAME FROM SYSOBJECTS a WHERE a.NAME LIKE '%2015' AND a.XTYPE='u' 提示:消息 21,级 ...

  10. 一个简易的反射类库NMSReflector

    转自:http://blog.csdn.net/lanx_fly/article/details/53914338 背景简介 以前看过一些代码,是简单的读取SqlReader然后赋值给Model,我不 ...