linux下dns配置
@ ----這個(gè)符號(hào)意味著SOA 與域是一樣的IN -----IN 是提供IP 地址的域名類(lèi)當(dāng),與A ,PTR 或CNAME 記錄一起使用時(shí)可將域名映射為IP 地址,反之一樣NS -----域名服務(wù)器
@ ----這個(gè)符號(hào)意味著SOA 與域是一樣的
IN -----IN 是提供IP 地址的域名類(lèi)當(dāng),與A ,PTR 或CNAME 記錄一起使用時(shí)可將域名映射為IP 地址,反之一樣
NS -----域名服務(wù)器指定的區(qū)域DNS 服務(wù)器的域名或IP 地址
MX ----MX記錄定義何種機(jī)器來(lái)為域或單個(gè)主機(jī)傳送電子郵件,為域定義就是告訴每個(gè)人將郵件發(fā)送給該域中要與之通信的人或機(jī)器
SOA-----Start Of Authority 指明其后的域名定義了主域名服務(wù)器及該域的聯(lián)系點(diǎn)的電子郵件地址。
PTR---將IP 地址映射為主機(jī)名,PTR 記錄執(zhí)行與A 及記錄相反的過(guò)程
A----將主機(jī)名映射為其IP 地址
DNS 簡(jiǎn)介
在Linux 中,域名服務(wù)(DNS )是由柏克萊網(wǎng)間名域(Berkeley Internet Name Domain ——BIND )軟件實(shí)現(xiàn)的。BIND 是一個(gè)客戶/服務(wù)系統(tǒng),它的客戶方面稱(chēng)為轉(zhuǎn)換程序(resolver ),它產(chǎn)生域名信息的查詢(xún),將這類(lèi)信息發(fā)送給服務(wù)器,DNS 軟件回答轉(zhuǎn)換程序的查詢(xún)。BIND 的服務(wù)方面是一個(gè)稱(chēng)為named (讀作“name”“d”)的守護(hù)進(jìn)程。
我們將討論三種基本BIND 配置任務(wù):
配置BIND 轉(zhuǎn)換程序。
配置BIND 域名服務(wù)。
建立服務(wù)器數(shù)據(jù)庫(kù)文件,稱(chēng)為“區(qū)文件(zone file)。
術(shù)語(yǔ)“區(qū)(zone )”往往可以與單詞“域(domain )”互換使用,但這里卻有一些區(qū)別,“區(qū)”是指域數(shù)據(jù)庫(kù)文件,而“域”則比較通用。在本書(shū)中,域是用域名定義的域結(jié)構(gòu)中的一部分,而區(qū)則是域數(shù)據(jù)庫(kù)文件中包含域信息的集合,包含域信息的文件稱(chēng)為“區(qū)文件”。
DNS 的作用是把IP 地址轉(zhuǎn)化為代表主機(jī)、網(wǎng)絡(luò)和郵件別名的助記名。它把整個(gè)Internet IP地址和名字空間分解為不同的邏輯組來(lái)做這項(xiàng)工作。每個(gè)組對(duì)它所擁有的計(jì)算機(jī)和其他信息具有控制權(quán)。
DNS 服務(wù)器的類(lèi)型
BIND 可以配置成以幾種不同的方法運(yùn)行的DNS ,常見(jiàn)的BIND 配置是唯轉(zhuǎn)換程序系統(tǒng)、唯高速緩存系統(tǒng)、主服務(wù)器和輔助服務(wù)器。
,轉(zhuǎn)換程序是一段要求域名服務(wù)器提供域信息的程序,在Linux 系統(tǒng)中,它是作為一個(gè)庫(kù)程序來(lái)實(shí)現(xiàn)的,不是一個(gè)單獨(dú)的客戶程序。在唯轉(zhuǎn)換程序系統(tǒng)中,僅使用轉(zhuǎn)換程序,并不運(yùn)行域名服務(wù)器。這種系統(tǒng)是很容易配置的,最多只需要設(shè)置
/etc/resolv.conf文件。其它三個(gè)BIND 配置選項(xiàng)都是用于 named服務(wù)軟件的。 唯高速緩存服務(wù)器 唯高速緩存服務(wù)器(caching-only server)可運(yùn)行域名服務(wù)器軟件但是沒(méi)有域名數(shù)據(jù)庫(kù)軟件。它從某個(gè)遠(yuǎn)程服務(wù)器取得每次域名服務(wù)器查詢(xún)的回答,一旦取得一個(gè)答案,就將它放在高速緩存中,以后查詢(xún)相同的信息時(shí)就用它予以回答。所有的域名服務(wù)器都按這種方式使用高速緩存中的信息,但唯高速緩存服務(wù)器則依賴(lài)于這一技術(shù)提供所有的域名服務(wù)器信息。唯高速緩存服務(wù)器不是權(quán)威性服務(wù)器,因?yàn)樗峁┑乃行畔⒍际情g接信息。
對(duì)于唯高速緩存服務(wù)器只需要配置一個(gè)高速緩存文件,但最常見(jiàn)的配置還包括一個(gè)回送文件,這或許是最常見(jiàn)的域名服務(wù)器配置。接著才是唯轉(zhuǎn)換程序配置,它是最容易配置的。
主服務(wù)器 主服務(wù)器(primary name server)是特定域所有信息的權(quán)威性信息源。它從域管理員構(gòu)造的本地磁盤(pán)文件中加載域信息,該文件(區(qū)文件)包含著該服務(wù)器具有管理權(quán)的一部分域結(jié)構(gòu)的最精確信息。主服務(wù)器是一種權(quán)威性服務(wù)器,因?yàn)樗越^對(duì)的權(quán)威去回答對(duì)它域的任何查詢(xún)。
配置主服務(wù)器需要一整套配置文件,包括正規(guī)域的區(qū)文件(named.hosts )和反向域的區(qū)文件(named.rev )、引導(dǎo)文件(named.conf )、高速緩存(named.ca )和回送文件(named.local ),其它的配置都不需要這樣一整套文件。
輔助域名服務(wù)器 輔助域名服務(wù)器(secondary name server)可從主服務(wù)器中轉(zhuǎn)移一整套域信息。區(qū)文件是從主服務(wù)器中轉(zhuǎn)移出來(lái)的,并作為本地磁盤(pán)文件存儲(chǔ)在輔助服務(wù)器中。這種轉(zhuǎn)移稱(chēng)為“區(qū)文件轉(zhuǎn)移”。在輔助域名服務(wù)器中有一個(gè)所有域信息的完整拷貝,可以有權(quán)威地回答對(duì)該域的查詢(xún),因此,輔助域名服務(wù)器也稱(chēng)作權(quán)威性服務(wù)器。
配置輔助域名服務(wù)器不需要生成本地區(qū)文件,因?yàn)榭梢詮闹鞣?wù)器中下載該區(qū)文件。然而其它的文件是確是需要的,包括引導(dǎo)文件、高速緩存文件和回送文件。
一個(gè)域名服務(wù)器可以是這類(lèi)配置中的任何一種,但經(jīng)常是將多種配置類(lèi)型的元素組合在一起。然而所有的系統(tǒng)都要運(yùn)行轉(zhuǎn)換程序。
DNS 常用術(shù)語(yǔ)
DNS 是一個(gè)很復(fù)雜的概念,表1列出了常用的DNS 術(shù)語(yǔ)。
表1 常用DNS 術(shù)語(yǔ)
術(shù)語(yǔ)
,說(shuō)明
域
代表網(wǎng)絡(luò)一部分的邏輯實(shí)體或組織
域名
主機(jī)名的一部分,它代表包含這個(gè)主機(jī)的域。它可以和域交換使用
主機(jī)
網(wǎng)絡(luò)上的一臺(tái)計(jì)算機(jī)
節(jié)點(diǎn)
網(wǎng)絡(luò)上的一臺(tái)計(jì)算機(jī)
域名服務(wù)器
提供DNS 服務(wù)的計(jì)算機(jī),它將DNS 名字轉(zhuǎn)化為IP 地址
解析
把一個(gè)DNS 服務(wù)器轉(zhuǎn)化為與其相映的IP 地址的過(guò)程
解析器
從域名服務(wù)器中提取DNS 信息的程序或庫(kù)子程序
反向解析
將給出的IP 地址轉(zhuǎn)化為其相映的DNS 名字
欺騙
使網(wǎng)絡(luò)看上去好象具有不同的IP 地址或域名的行為
在概念上可以把DNS 分為三個(gè)部分:
域名空間這是標(biāo)識(shí)一組主機(jī)并提供他們的有關(guān)信息的樹(shù)結(jié)構(gòu)的詳細(xì)說(shuō)明。樹(shù)上的每一個(gè)節(jié)點(diǎn)都有它控制下的主機(jī)的有關(guān)信息的數(shù)據(jù)庫(kù)。查詢(xún)命令試圖從這個(gè)數(shù)據(jù)庫(kù)中提取適當(dāng)?shù)男畔?。?jiǎn)單地說(shuō),這只是所有不同類(lèi)型信息的列表,這些信息是域名、IP 地址、郵件別名和那些在DNS 系統(tǒng)中能查到的內(nèi)容。
,域名服務(wù)器它們是保持并維護(hù)域名空間中的數(shù)據(jù)的程序。每個(gè)域名服務(wù)器含有一個(gè)域名空間子集的完整信息,并保存其它有關(guān)部分的信息。一個(gè)域名服務(wù)器擁有它控制范圍的完整信息??刂频男畔磪^(qū)進(jìn)行劃分,區(qū)可以分布在不同的域名服務(wù)器上,以便為每個(gè)區(qū)提供服務(wù)。每個(gè)域名服務(wù)器都知道每個(gè)負(fù)責(zé)其他區(qū)的域名服務(wù)器。如果來(lái)了一個(gè)請(qǐng)求,它請(qǐng)求給定域名服務(wù)器負(fù)責(zé)的那個(gè)區(qū)的信息,那么這個(gè)域名服務(wù)器只是簡(jiǎn)單地返回信息。但是,如果請(qǐng)求是不同區(qū)的信息,那么這個(gè)域名服務(wù)器就要與控制該區(qū)的相映服務(wù)器聯(lián)系。
解析器 解析器是簡(jiǎn)單的程序或子程序庫(kù),它從服務(wù)器中提取信息以響應(yīng)對(duì)域名空間中主機(jī)的查詢(xún)。
配置轉(zhuǎn)換程序
使用DNS 的第一步是在用戶的計(jì)算機(jī)上配置轉(zhuǎn)換程序,即讓機(jī)器能夠能夠從DNS 服務(wù)器中獲取域名解析/反解析服務(wù)。轉(zhuǎn)換程序不是一個(gè)單獨(dú)而明確的處理進(jìn)程,而是網(wǎng)絡(luò)進(jìn)程調(diào)用的一個(gè)標(biāo)準(zhǔn)C 程序庫(kù)。如果本地系統(tǒng)不運(yùn)行named ,就必須配置本地轉(zhuǎn)換程序。
轉(zhuǎn)換程序控制文件/etc/host.conf
/etc/host.conf是用來(lái)控制本地轉(zhuǎn)換程序的文件的設(shè)置。該文件告訴轉(zhuǎn)換程序使用哪些服務(wù)、按照什么順序進(jìn)行。該文件的字段可以用空格或制表符分隔。字符“#”表示注釋行。表2是可在host.conf 中指定的選項(xiàng)。
表2 /etc/host.conf文件的配置選項(xiàng)
選項(xiàng)
說(shuō)明
order
指定按照哪種順序來(lái)嘗試不同的名字解析機(jī)制。按列出的順序來(lái)進(jìn)行指定的解析服務(wù)。支持下面的名字解析機(jī)制:
hosts 試圖通過(guò)查找本地/etc/hosts文件來(lái)解析名字
bind 使用DNS 域名服務(wù)器來(lái)解析名字
nis 使用網(wǎng)絡(luò)信息服務(wù)(NIS )協(xié)議來(lái)解析主機(jī)名字
multi
以off 和on 為參數(shù)。與host 查詢(xún)一起使用,用來(lái)確定一臺(tái)主機(jī)是否在/etc/hosts文件中指定了多個(gè)IP 地址
nospoof
,如果用逆向解析找出與指定的地址匹配的主機(jī)名,對(duì)返回的地址進(jìn)行解析以確認(rèn)它確實(shí)與您查詢(xún)的地址相配。為了防止“騙取”IP地址,通過(guò)指定nospoof on來(lái)允許這種功能
alert
以off 和on 為參數(shù)。如果打開(kāi),任何試圖騙取IP 地址的行為都通過(guò)syslog 工具進(jìn)行記錄
trim
以域名為參數(shù)。在/etc/hosts中查找名字前,trim 刪除這個(gè)域名。著使你只把基本主機(jī)名放在/etc/host.conf中而不指定域名
下面這個(gè)例子是主機(jī)vlager 上的/etc/host.conf文件:
# /etc/host.conf
# We have named running, but no NIS (yet)
order bind hosts
# Allow multiple addrs
multi on
# Guard against spoof attempts
nospoof on
# Trim local domain (not really necessary).
trim vbrew.com.
這個(gè)例子給出了域vbrew.com 的通用解析程序配置。該解析程序首先使用DNS 然后使用/etc/hosts文件查找主機(jī)名。在解析查找中指定本地 /etc/hosts文件是一個(gè)好主意。如果由于某種原因不能使用域名服務(wù)器了,我們還可以使用主機(jī)文件中列出的那些主機(jī)名。該機(jī)器上允許使用多個(gè)IP 地址,主機(jī)通過(guò)重新解析主機(jī)名字(從IP 地址逆向查找返回的主機(jī)名字)來(lái)檢查IP 欺騙。
轉(zhuǎn)換程序/配置文件/etc/resolv.conf
當(dāng)配置轉(zhuǎn)換程序使用BIND 域名服務(wù)查詢(xún)主機(jī)時(shí),我們必須告訴轉(zhuǎn)換程序使用哪一個(gè)域名服務(wù)器。用來(lái)完成這項(xiàng)任務(wù)的工具就是 /etc/resolv.conf 文件。
/etc/resolv.conf控制轉(zhuǎn)換程序使用DNS 解析主機(jī)名使用的方式,它可以明確地定義系統(tǒng)的配置,允許我們命名由于缺省服務(wù)器不響應(yīng)而使用的備份服務(wù)器。因此,盡管會(huì)增加系統(tǒng)負(fù)荷,但在某些場(chǎng)合使用resolv.conf 是很受歡迎的。
,/etc/resolv.conf是一個(gè)簡(jiǎn)單而易讀的文件。在/etc/resov.conf中使用的命令,具有系統(tǒng)專(zhuān)用的形式,但一般都支持domain 和nameserver 兩項(xiàng)命令。
nameserver 項(xiàng)利用IP 地址去識(shí)別讓轉(zhuǎn)換程序去識(shí)別查詢(xún)域信息的那些服務(wù)器。我們可以多次使用nameserver 選項(xiàng),可以使用多達(dá)三個(gè)域名服務(wù)器。這些名服務(wù)器是按照它們?cè)谖募械捻樞蜻M(jìn)行查詢(xún)的,如果沒(méi)有接收到一個(gè)服務(wù)器的響應(yīng),就去試表中的下一個(gè)服務(wù)器,直到所有服務(wù)器試完為止(如果在 /etc/resolv.conf文件中設(shè)置了三個(gè)以上的域名服務(wù)器,那么,即使前三個(gè)服務(wù)器都沒(méi)有響應(yīng)查詢(xún)請(qǐng)求,Linux 也不會(huì)去請(qǐng)求后面的服務(wù)器)。我們應(yīng)該將最可靠的域名服務(wù)器列在最前面,以便在查詢(xún)時(shí)不會(huì)超時(shí)。如果resolv.conf 文件中不包含nameserver 項(xiàng),或者不存在 resolv.conf文件,就將所有名服務(wù)器查詢(xún)發(fā)送給本地主機(jī)。然而,如果有一個(gè)resolv.conf 文件,它包含nameserver 項(xiàng),除非有一項(xiàng)指向本地主機(jī),否則就不查詢(xún)本地主機(jī)。在配置唯轉(zhuǎn)換程序的主機(jī)中,resolv.conf 文件包含nameserver 項(xiàng),但沒(méi)有一個(gè)項(xiàng)指向本地主機(jī)。
domain 項(xiàng)用來(lái)定義缺省域名(主機(jī)的本地域名)。轉(zhuǎn)換程序會(huì)將缺省域名掛在任何不含點(diǎn)的主機(jī)名后面。例如,轉(zhuǎn)換程序接收到主機(jī)名 vale(它不含點(diǎn)),就將其缺省域名掛接在vale 后面,構(gòu)成對(duì)它的查詢(xún)。如果domian 域中的name 值是vbrew.com ,那么轉(zhuǎn)換程序就將查詢(xún)vale.vbrew.com 。如果沒(méi)有出它,則轉(zhuǎn)換程序就試圖通過(guò)getdomainname()系統(tǒng)調(diào)用來(lái)獲得本地域名。
如果聽(tīng)起來(lái)讓人迷惑不解的話,我們可以看看下面這個(gè)例子,這是Virtual Brewery 中的resolv.conf 文件:
# /etc/resolv.conf
# Our domain
domain vbrew.com
#
# We use vlager as central nameserver:
nameserver 191.72.1.1
在該例中,通過(guò)domain 指定缺省域名,并列出一個(gè)用于解析主機(jī)名的域名服務(wù)器。在這個(gè)例子中沒(méi)有指定查尋順序(使用search 選項(xiàng)),因此如果要查詢(xún)一臺(tái)機(jī)器的地址(如vale ),解析器則首先試圖查找vale ,如果沒(méi)找到,則查找vale.vbrew.com ,然后再查找vbrew.com 。
唯轉(zhuǎn)換程序配置
配置唯轉(zhuǎn)換程序是非常簡(jiǎn)單的,下面是一個(gè)唯轉(zhuǎn)換程序的/etc/resolv.conf文件的例子:
,# /etc/resolv.conf
# Our domain
domain vbrew.com
#
# We use vlager as central nameserver:
nameserver 191.72.1.1
# netx try vale
namesever 191.72.1.3
該配置文件告訴轉(zhuǎn)換程序?qū)⑺械牟樵?xún)發(fā)送給主域名服務(wù)器vlager ,如果失敗,就試vale 。這些查詢(xún)是永遠(yuǎn)不能在本地轉(zhuǎn)換的。這一個(gè)簡(jiǎn)單的resolv.conf 文件就可以滿足唯轉(zhuǎn)換程序配置的全部要求。
設(shè)置域名服務(wù)器
在Linux 上的域名服務(wù)是由named 守護(hù)進(jìn)程來(lái)執(zhí)行的,named 最早是為BSD 向客戶機(jī)提供域名服務(wù)而開(kāi)發(fā)的。named 守護(hù)進(jìn)程通常在系統(tǒng)啟動(dòng)時(shí)開(kāi)始工作,并一直工作到系統(tǒng)關(guān)閉。該進(jìn)程從被稱(chēng)作/etc/named.boot的配置文件中獲取有關(guān)信息和將主機(jī)名映射為IP 地址的各種文件。
為了運(yùn)行named ,只要在命令行中輸入:
# /etc/rc.d/init.d/named start
named 就會(huì)開(kāi)始運(yùn)行,讀取named.boot 文件及其定義的任何區(qū)文件并將它的進(jìn)程ID 以ASCII 碼的形式寫(xiě)入/var/run/named.pid中,下載任何來(lái)自主服務(wù)器的區(qū)文件,如果有必要的話在端口53等待DNS 請(qǐng)求。
雖然轉(zhuǎn)換程序的配置只需要一個(gè)配置文件, 但是在配置named 時(shí)卻要使用多個(gè)文件, 一整套named 配置文件如表3所示。
表3 named配置文件
配置文件
說(shuō)明
named.conf
,設(shè)置一般的named 參數(shù),指向該服務(wù)器使用的域數(shù)據(jù)庫(kù)信息的源, 這類(lèi)源可以是本地磁盤(pán)文件或遠(yuǎn)程服務(wù)器
named.ca
指向根域名服務(wù)器
named.local
用于在本地轉(zhuǎn)換回送地址
named.hosts
將主機(jī)名映射為IP 地址
named.rev
用于反向域的、將IP 地址映射到主機(jī)名的區(qū)文件
在下面各節(jié)中我們將探討如何利用其中的每一個(gè)文件去配置named 。
/etc/named.conf文件
named.conf 文件通常很小,只包括一些指向DNS 信息源的信息。其中某些源是本地文件,其他則是遠(yuǎn)程服務(wù)器。下面我們將看到一個(gè)需要生成的每種文件類(lèi)型的例子。 表4概括了named.conf 文件中使用的各種配置語(yǔ)句,它提供的信息能幫助我們了解這一些例子:
表4 named.boot文件的配置選項(xiàng)
選項(xiàng)
說(shuō)明
Directory
指定DNS 文件所在的目錄。您可以重復(fù)此選項(xiàng)以指定幾個(gè)不同的目錄。可以給出這些目錄相關(guān)的文件路徑名
Master
以一個(gè)域名和一個(gè)文件名為參數(shù)。此選項(xiàng)聲明named 對(duì)指定的域具有控制權(quán),并使named 從指定的區(qū)域加載信息
Hint
,為named 建立高速緩存信息。以一個(gè)域名和一個(gè)文件名為參數(shù)。域名通常用“.”指定。指定的文件包括一組稱(chēng)為服務(wù)器提示的記錄,這些記錄列出了根域名服務(wù)器的信息
Forwarders
以一個(gè)域名服務(wù)器的列表作為參數(shù)。告訴本地域名服務(wù)器:如果它不能從它的本地信息中解析出地址,那么就與該列表中的服務(wù)器聯(lián)系
Slave
把本地域名服務(wù)器變成一個(gè)從屬服務(wù)器。如果給出了此選項(xiàng),那么本地服務(wù)器就試著通過(guò)遞歸查詢(xún)來(lái)解析DNS 名字。它只把請(qǐng)求傳遞給forwarders 選項(xiàng)行列出的服務(wù)器中的一個(gè)
配置named.conf 文件所使用的方法,是用來(lái)控制將域名服務(wù)器作為主服務(wù)器、輔助服務(wù)器還是唯高速緩存服務(wù)器的。理解不同配置的最佳方法是討論各種named.conf 的示例文件。
1. 唯高速緩存服務(wù)器
配置唯高速緩存域名服務(wù)器是很簡(jiǎn)單的。必須有named.conf 和named.ca 文件,通常也要用到named.local 文件。下面是用于唯高速緩存服務(wù)器的named.conf 文件的例子,其中以“//”開(kāi)頭的是注釋?zhuān)?/p>
// generated by named-bootconf.pl
options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
,};
//
// a caching only nameserver config
//
//
// a caching only nameserver config
//
zone "." {
type hint;
file "named.ca";
};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";
directory 這一行告訴named 到哪里去找尋文件。所有其后命名的文件都將是相對(duì)于此目錄的。該文件告訴named 去維持一個(gè)域名服務(wù)器響應(yīng)的高速緩存,并利用 named.ca 文件的內(nèi)容去初始化該高速緩存。該高速緩存初始化文件的名字可以是任何名字,但一般使用/var/named/named.ca。并不是在該文件中使用一個(gè)hint 語(yǔ)句就能使它成為唯高速緩存配置,幾乎每一種服務(wù)器的配置都要用到cache 語(yǔ)句,而是因?yàn)闆](méi)有master 和slave 語(yǔ)句才使它成為一個(gè)唯高速緩存配置。
但是,在我們這個(gè)例子中卻有一個(gè)master 語(yǔ)句。事實(shí)上,幾乎在每一個(gè)唯高速緩存的配置文件中都有這一個(gè)語(yǔ)句,它將本地服務(wù)器定義為它自己的回送域的主服務(wù)器,并假定該域的信息存儲(chǔ)在named.local 文件中。這個(gè)回送域是一個(gè)in- addr.arpa域(in-addr.arpa 域用于指定逆向解析,或IP 地址到DNS 名字解析),它將地址127.0.0.1映射為名字 localhost。轉(zhuǎn)換自己的回送地址對(duì)于大多數(shù)人都是有意義的,因?yàn)榇蠖鄶?shù)的named.conf 文件都包含這一項(xiàng)。
在大多數(shù)唯高速緩存服務(wù)器的配置文件中,這種directory 、master 和hint 語(yǔ)句是唯一使用的語(yǔ)句,但也可以增加其他的語(yǔ)句,forwarders 和slave 等語(yǔ)句都可以使用。
2. 主服務(wù)器和輔助服務(wù)器的配置