1. 程式人生 > >在Debian上用Bind 配置DNS伺服器

在Debian上用Bind 配置DNS伺服器

1 什麼是DNS

初學者可能不理解DNS到底是什麼,幹什麼用。我是在1998年大學畢業時才聽說這個詞的。那時我在聊天室碰到濰坊資訊港的一個網管,我恬不知恥地說我也是個網管,他說也維護DNS嗎?我說,DNS是什麼?

——DNS,DomainName Service,或者Domain Name Server,域名服務/域名伺服器。

你在你的瀏覽器裡面輸入http://www.linuxsir.com之後,之所以可以上去,就是因為有了DNS。

簡單地說,DNS把一串名字,轉換成了IP地址。你可能會說:如果我直接使用IP地址,那就不需要DNS了嗎?對!不過,請你接著往下看。

2 為什麼需要DNS 

2.1 網際網路需要DNS

現在幾乎整個網際網路都是基於TCP/IP的。在這個世界裡,不管你訪問哪個網站、哪臺機器,必須得知道它的IP地址才可以。好,我告訴你,202.106.185.203這個地址,是新浪網的IP地址,你每次上網,都得再瀏覽器的位址列裡面輸入http://202.106.185.203 才可以訪問新浪。你可能會說:沒問題,不就一串數字嘛,我記得住!可是,你想一下,在Internet上,有多少臺主機啊!你可能會記住其中幾臺甚至幾十 臺的IP地址,但是你肯定記不住全部。

正是由於IP地址不好記,人們才想了個辦法,讓你只需要記住名字,然後系統通過這個名字,到資料庫裡面去查詢它的IP地址,然後再把查到的IP地址反饋給你,比如反饋給瀏覽器,最後,瀏覽器用這個由DNS給的IP地址去訪問你想去的站點。

2.2 區域網需要DNS

那麼,在區域網內部呢?需要DNS嗎?

太需要了!你不要覺得,單位就這麼幾臺機器,用hosts解析,不也一樣嗎?你可千萬記住這個教訓,當公司越來越大,hosts的維護量將大的驚人!我所在的公司,前不久就面臨了這種尷尬。所以,一定要有一臺DNS,然後在公司內部定義一個規範的主機命名規則,這才是個好網管,呵呵。

3 BIND介紹

Bind是使用最廣泛的DomainName Server,它是Berkeley Internet Name Domain Service的簡寫,伯克裡大學編寫的。這個大學可真厲害,寫了不少著名程式。

原本bind的版本一直在4.8.x 4.9.x 左右,後來一口氣跳到8.1.x,是因為大幅度改進了功能,並修復了漏洞。現在bind有兩個版本在同時發展,bind 8.x 和 bind 9.x,最新版本是8.3.3和9.2.1。

3 安裝

3.1 軟體版本

目前debian的sid,同樣提供了8版本的bind和9版本的bind,後者的軟體包名字叫做bind9.deb,版本是最新的9.2.1版。

3.2 安裝

安裝過程非常簡單:

# apt-get install bind9

4 配置

由於我們前面第三章在配置郵件伺服器的時候,使用了hosts檔案來解析IP地址,現在我們需要把它去掉,讓系統通過DNS來解析它所需要的IP地址。

我們製作基本的配置。至於高階功能,我們將在本文的下一個版本里描述。

4.1 去掉hosts資訊

如果你閱讀過本文第三章,你就會知道,我有兩臺機器,一臺膝上型電腦安裝了win2000,名字叫notepad;另一臺臺式機裝了Debian,機器名叫debian。他們都屬於test.com這個域,這個域名沒有在ISP那裡註冊,是我們內部用 的。我分別編輯win2000機器上的\winnt\system32\drivers\etc\hosts這個檔案和debian機器上的/etc/hosts,去掉下面的這些行:

192.1.110.120debian.test.com debian

192.1.110.122notepad.test.com notepad

這時你可以在win2000機器上啟動OutlookExpress,做一下收取郵件的動作,它會說找不到debian.test.com——這就對了,因為hosts檔案裡面沒有指向這個名字的IP地址, 而且,我們也沒有給win2000指定DNS伺服器,所以它肯定找不到debian.test.com。

4.2 在客戶機上設定DNS

在我的Win2000機器裡面,在桌面上右擊“網路上的芳鄰”選擇屬性,在出現的視窗中右擊“本地連線”選擇屬性,然後雙擊TCP/IP,在右下角的“首選DNS”裡面,輸入192.1.110.120。這是我的Debian機器在區域網上的IP地址。如果你用的是 win98,那麼情況差不多,在一個叫做DNS的標籤裡面設定首選DNS。我很久不用98了,差不多忘了。

如果你是個急性子,你會發現,誒?怎麼設上了DNS了,我的OutlookExpress還是說找不到debian.test.com?呵呵,別急別急,我們的DNS伺服器還沒弄好吶!

4.3 在Debian上設定DNS

我們要事先把Debian機器的DNS指向它自己。修改/etc/resolv.conf,修改成:

search test.com

nameserver192.1.110.120

你不會把我的IP地址也抄上吧,呵呵。

4.4 配置DNS伺服器

4.4.1 應用環境

我們把實驗環境重新描述一下。

◆一個C類網段地址(本例中假定是192.1.110.0)

◆企業域名為test.com,沒有在ISP註冊。(主域名伺服器地址 192.1.110.120,主機名為 debian.test.com)

◆企業網通過路由器與Internet連線

假如你的應用環境與上述條件不同,也請往下看,本文會在上述例子的基礎上針對以下情況作修正:

◆多個網段

◆封閉的內部網

◆只能訪問區域性公共網的情況(如169網、上海熱線等)

我們將使用一個叫做rndc的工具,rndc可以用於啟動、中止、重啟動、重新整理DNS資料、輸出DNS資料等多種除錯功能。

4.4.2 配置named.conf

DNS伺服器的主體是域名伺服器程序 named ,named 啟動後向DNS客戶機提供域名解析服務,把域名轉換成IP地址。

named啟動時需要讀取一個初始化檔案,預設情況下是 /etc/bind/named.conf,這是bind的基本配置檔案,不過這裡面並不包含DNS資料。

注意,你也許會在網上找到一些教程,這些教程有的是以bind 4.x為藍本的,所以它的 named.conf裡面的註釋符號是分號“;”,但是自動bind 8開始,語法變了。下面我們來說一下:

; 這是bind4.x的註釋,前面用分號

//不過從bind8開始,有三種註釋符號可以用: C樣式, C++樣式, 或者shell樣式:

/*這是C樣式的註釋符號 */

//這是 C++樣式的註釋符號

#這是shell樣式的註釋符號

請你先把預設的/etc/bind/named.conf備份一下,我將給大家寫一個簡單的named.conf,用於做Caching-only的DNS配置。

// 指定 named /var/cache/bind 目錄下讀取 DNS 資料檔案。

// 這個目錄使用者可自行指定並建立,指定後所有的DNS 資料檔案都存放在此目錄下。

options {

    directory "/var/cache/bind"; 

};

// 指定 named 作為 test.com 域的主域名伺服器。

// db.test 檔案中包含所有*.test.com 形式的域名轉換資料。

zone"test.com" in { 

    type master;

    file "db.test"; 

};

// 指定 named 作為 192.1.110 網段地址轉換主伺服器。

// db.192.1.110 檔案中包含了所有 192.1.110.* 形式的地址到域名的轉換資料。

zone"110.1.192.in-addr.arpa" in { 

   type master; 

   file "db.192.1.110";

}; 

// 指定 named 作為127.0.0網段地址轉換主伺服器。

// db.127.0.0 檔案中包含了127.0.0.* 形式的地址到域名的轉換資料。

//127.0.0網段地址是區域網介面的內部 loopback 地址)

zone"0.0.127.in-addr.arpa" in { 

   type master; 

   file "db.127.0.0"; 

};

// 指定 named db.cache 檔案中獲得Internet 的頂層“根”伺服器地址。

zone "."in { 

   type hint;

   file "db.cache"; 

};

要注意第二和第三個區域中的網段地址是倒寫的,另外,各個區域所使用的資料檔案的檔名也是可以自行決定的。

請把上面的內容儲存為你的/etc/bind/named.conf。

4.4.3 準備資料檔案

上面的那個named.conf,相信你已經看明白了。那裡面提到,在/var/cache/bind這個目錄下面,應該有DNS資料檔案db.test、db.192.1.110、db.127.0.0 還有  db.cache。下面我們就要建立這些檔案。

4.4.3.1 建立 db.test 檔案

根據/etc/bind/named.conf 的定義,我們在 /var/cache/bind 目錄下建立 db.test,其中應該包括所有在test.com 域內的主機節點。但在機器數量較多時,為了除錯方便,建議一開始只把幾臺節點的資料放入檔案,待 named 正常工作後再把其他節點的資料補充進去。下面是 db.test的例子:

@ IN SOAdebian.test.com. root.debian.test.com. (

200211131 ; serial,todays date + todays serial #

28800 ; refresh,seconds

7200 ; retry,seconds

3600000 ; expire,seconds

86400 ) ; minimum,seconds

NS debian.test.com.

MX 10debain.test.com.

; 域名伺服器列表

test.com.  IN NS debian.test.com.

; 計算機名稱和地址

localhost.test.com.  IN A        127.0.0.1

debian.test.com.     IN A         192.1.110.120

notepad.test.com.    IN A        192.1.110.122

; 別名

www                  IN CNAME     debian.test.com.

ftp                  IN CNAME     debian.test.com.

其中第一行是SOA 記錄,定義了域名資料的基本資訊,依次是 DNS 伺服器名、DNS 管理員郵件地址,括號內的第一個數字是檔案版本號,每次本檔案內容修改後,必須更改此號。其餘數字與DNS伺服器直接的資料交換有關,在這裡我們不需要改 動。

括號後面有一條NS記錄和一條MX記錄,定義了域名伺服器本身的域名和[email protected]形式郵件地址所對應的郵件伺服器名字。

在此以下是各種域名/地址轉換資料,其中A記錄是DNS域名到IP地址的記錄,是必須有的。

CNAME定義了一些主機的別名,比如我們將debian.test.com作為公司的www和ftp伺服器,所以我們提供了www.test.com和ftp.test.com作為debian.test.com的別名,使用者只需要根據習慣就可以訪問公司的www、ftp服務 器了,如果將來我們換用別的主機作www和ftp伺服器,只需要修改CNAME記錄就可,對使用者沒有影響。

注意: CNAME記錄最後的帶域名的主機名後必須帶一個“.”。

複製這個檔案到bind的工作目錄/var/cache/bind,這個目錄是我們剛才在/etc/bind/named.conf裡面定義的。

4.4.3.2 建立 db.127.0.0檔案

這是個反向DNS資料檔案。 反向資料檔案是這樣用的:知道 IP地址,查詢主機名。每個網段分別有一個數據檔案。

反向 DNS資料檔案中的主要部分是 PTR 記錄,PTR 記錄中的 IP 地址都只有主機號,named 會根據 named.conf 的定義自動加上前面的網路號,注意後面的主機名要附加一個“.”

對於內部網段 127.0.0通常只有一個地址,即 127.0.0.1 loopback 地址,db.127.0.0 內容如下:

@ IN SOAdebian.test.com root.debian.test.com. (

2002111300 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Minimum

IN NSdebian.test.com.

1            IN PTR            localhost.

把這個檔案到複製/var/cache/bind目錄下面。

4.4.3.2 建立 db.192.1.110 文 件

把所有相同網段的主機IP地址和主機名,都寫在裡面:

@ IN SOAdebian.test.com root.debian.test.com. (

2002111300 ; Serial

28800 ; Refresh

14400 ; Retry

3600000 ; Expire

86400 ) ; Minimum

IN NSdebian.test.com.

; 所有主機都寫在這兒

120 PTRdebian.test.com.

122 PTRnotepad.test.com.

同樣,要把這個檔案到複製/var/cache/bind目錄下面。

4.4.3.3 建立 db.cache 檔案

預設情況下,我們在安裝bind9的時候,應該有個檔案在/etc/bind/db.root,這個檔案就是我們的想要的根的定義。由於我們在 named.conf中指定的檔名是 db.cache,所以我們把它複製為db.cache:

# cp /etc/bind/db.root/var/cache/bind/db.cache

5 測試

我們使用rndc這個工具來控制bind。

5.1 讓新配置檔案生效

因為我們剛才改了配置,所以,需要重新載入一下:

# rndc reload

然後還需要重新配置一下:

# rndc reconfig

如果有問題,你可以使用debian為我們準備的指令碼重新啟動bind:

# /etc/init.d/bind9 restart

5.2 在win2000機器上測試

在win2000上(就是我們的notepad.test.com),使用OutlookExpress,收發郵件。

看,正常了吧!證明,我們的win2000通過192.1.110.120這臺DNS伺服器,找到了debian.test.com這臺機器的IP地址了。

5.3 測試工具介紹

在debian上,我推薦大家使用dig或者host來測試DNS設定,因為nslookup快要退休了,以後版本的軟體可能不再提供nslookup這個工具了。要使用這些工具,需要安裝dnsutils:

# apt-get install dnsutils

然後,就可以使用dig來測試DNS了:

# dig -x 192.1.110.120

第一次執行,可能比較慢,彆著急,等一會。

6 TODO

這是本文的0.1版,純粹針對初學者的,僅僅實現了最普通的功能。

在下一個版本,我將深入講解DNS的設定。

7 結束語

本文是《Debian伺服器設定入門》系列教程之第五章,建議您按照順序閱讀,有問題可以和作者kanaka聯絡。

8 參考文獻

《在Linux上建立DNS伺服器》,曹江華,2001年12月27日。地址是:http://www.ccidnet.com/html/tech/os/2001/12/27/92_3895.html

讓我們一起感謝原文作者!

相關推薦

DebianBind 配置DNS伺服器

1 什麼是DNS 初學者可能不理解DNS到底是什麼,幹什麼用。我是在1998年大學畢業時才聽說這個詞的。那時我在聊天室碰到濰坊資訊港的一個網管,我恬不知恥地說我也是個網管,他說也維護DNS嗎?我說,DNS是什麼? ——DNS,DomainName Service,或者Dom

在Ubuntu 14.04BIND配置一個私有網路DNS伺服器

系列教程 本教程為7篇系列中的第6篇:DNS管理簡介 前言 伺服器管理中很重要的一部分就是設定一個有效的域名系統(DNS),這樣可以方便的通過網路名稱連線到指定的IP地址和埠。使用有效域名(FQDN)相比IP的好處是,它們簡化了服務和應用的網路配置,提

CentOS通過bind配置DNS伺服器

一、建立DNS主伺服器 1、安裝bind並配置主配置檔案 主伺服器為CentOS 7,主服務地址為172.16.11.55 安裝bind [[email protected] ~]# yum install bind 安裝完成後檢

[轉]Ubuntu配置DNS伺服器--bind(已測試)

每次重啟計算機之後這個檔案都會被自動改寫,所以每次重啟後需要手動設定此檔案f. 測試:使用nslookup 測試tonybox2:~# nslookup> set type=any> mydebian.orgServer: 192.168.102.47Address: 192.168.102.47

四條命令快速在Ubuntu16.04配置DNS伺服器

1. apt install dnsmasq -y 2. vim /etc/dnsmasq.d/resolv.conf  address=/xxx.yyy.com/21.xx.xx.x 3. service dnsmasq start 4. iptables -I INPU

在ubutntuSamba配置活動目錄域控制器

視頻 roo div directory tar ati ebo mba onf 本文是對Youtube上的一個視頻做個簡單總結:視頻地址:configure Active Directory Domain Controller With Samba on Ubuntu S

Bind配置dns

文件 watermark one 信息 網卡 bin 配置dns ado 復制 Bind服務(1)掛載yum安裝bind服務(2)修改/etc/named.conf文件(3)正向解析 修改 /etc/named.rfc1912.zones/(4)復制cp -a named.

在樹莓派安裝AdGuardHome當DNS伺服器,來遮蔽廣告和追蹤的DNS請求

AdGuardHome專案地址:AdGuardHome 樹莓派先安裝好,連上網。 1. wget https://github.com/AdguardTeam/AdGuardHome/releases/download/v0.9-hotfix1/AdGuardHome_v0.9-hotf

windows下nginx配置https伺服器

1.安裝nginx 先到nginx官網下在nginx http://nginx.org/en/download.html 將下載好的檔案解壓出來修改檔名為 nginx ,然後拷貝到C盤下,目錄如下: 執行 nginx start nginx 驗證 在

在WIN7 64位安裝bind提供DNS服務

bind下載地址:http://www.isc.org/downloads 參考文章: http://windcao.blog.51cto.com/414277/1269035 http://www.zytrax.com/books/dns/ch5/win2k.html

Ubuntu Linux 學習篇 配置DNS伺服器

BIND9 DNS(Domain Name Server,域名伺服器)是進行域名(domain name)和與之相對應的IP地址 (IP address)轉換的伺服器。DNS中儲存了一張域名(domain name)和與之相對應的IP地址 (IP address)的表,以解析訊息的域名。 域名是

投票平臺系統什麼配置伺服器好?

在回答你這個問題之前我們可以先深入瞭解一下投票平臺的系統在執行中會佔用伺服器的哪些資源:   首先:投票系統的執行是動態資料呼叫並實時更新,這樣就會極大增加電腦的運算需求及資料呼叫頻率,伺服器

Ubuntu採用bind9配置DNS伺服器

 Ubuntu採用bind9配置DNS伺服器 最近公司專案需要用到dns伺服器,就搭建了dns伺服器。   1. BIND9 的安裝與配置1.1 bind簡介BIND (Berkeley Inter

為雲伺服器Windows Server2012 配置DNS伺服器

一、安裝DNS伺服器 1.開啟伺服器管理器,點選新增角色和功能 2.一直下一步,選擇基於角色或基於功能的安裝 3.選擇目標伺服器,只有一臺 4.新增DNS伺服器 5.一直下一步直到安裝成功 二、配置DNS伺服器 之前安裝好了DNS伺服器,但是還需要進一步的配置。

虛擬機器的Linux配置tftp伺服器與下載uImage到mini2440開發板成功經驗

我配tftp想下載u-boot.bin到NandFlash。我的Fedora14是跑在win7 PC 上的virtualbox虛擬機器上的。win7PC與開發板通過一根網線直連。此時問題出來了:我不明白Fedora14怎麼通過VBox使用win7的網絡卡繼而與開發板建立tf

CentOS7基於BIND9部署DNS伺服器

最近在做GTM方面的測試,就考慮使用Linux下部署的DNS伺服器作為測試平臺。以前零星的用過一段時間BIND,感覺功能挺強大的,鑑於BIND是開源的,就在CentOS上部署一下進行測試。以下是我安裝BIND9的詳細步驟。我的CentOS版本資訊如下:(192.168.55.

Ubuntu vsftpd 配置FTP伺服器

網上的文章好難懂啊。。只想要簡單粗暴,弄好能用就行啊,複雜的以後研究不行嗎。。。折騰好久,其實弄出來能用不就這麼點內容嗎。。。 本文在Ubuntu Server 14.04 amd64系統測試。 安裝ftp sudo apt-get install vsftpd 配置vsftpd.conf

linux 安裝配置DNS伺服器

VM虛擬的環境CENTOS 5.6 IP:192.168.1.170 本地XP系統 IP:192.168.1.108 一.。安裝DNS       LINUX安裝DNS主要要安裝2個程式:       yum install bind*                 

Hadoop 通過bind9配置DNS伺服器替代hosts的IP對映(ubuntu版)

最開始搭建hadoop叢集時,我是用hosts的ip對映實現的各個主機名與IP之間的對映關係。 但是,hosts的ip對映的缺點是,當我們在叢集裡面增加一個機器時,所有機器都要更新他們的hosts檔案,這樣就顯得很繁瑣。 通過查詢資料,可以使用bind9配置DNS來替代原先

Kali Linux橋接模式配置DNS伺服器

操作環境: 虛擬機器作業系統: Kali Linux 2017.2 虛擬化軟體: VMWare Workstation 14 pro 操作前的準備: