linuxdns配置文件
通常Linux初學(xué)者會(huì)問:Linux 中有沒有一個(gè)標(biāo)準(zhǔn)的配置文件格式?一句話,沒有。不熟悉 Linux 的用戶一定會(huì)感到沮喪,因?yàn)槊總€(gè)配置文件看起來都象是一個(gè)要迎接的新挑戰(zhàn)。在 Linux 中,每個(gè)網(wǎng)管員都可以自由選擇自己喜歡的配置文件格式。DNS就是Domain Name System, DNS服務(wù)器可以分為三種,高速存服務(wù)器(Cache-only server)、主服務(wù)器(Primary Name server)、輔助服務(wù)器(Second Name Server)。 DNS的詳細(xì)原理、工作流程、術(shù)語(yǔ)、概念,限于篇幅,這里就不說了。一、Linux 下主要DNS配置文件Linux 下主要DNS配置文件見表一、二、三:表1 DNS主要配置文件文件名稱中文名稱作用/etc/hosts主機(jī)的一個(gè)列表文件包含(本地網(wǎng)絡(luò)中)已知主機(jī)的一個(gè)列表。如果系統(tǒng)的 IP不是動(dòng)態(tài)生成,就可以使用它。對(duì)于簡(jiǎn)單的主機(jī)名解析(點(diǎn)分表示法),在請(qǐng)求 DNS或 NIS網(wǎng)絡(luò)名稱服務(wù)器之前,/etc/hosts.conf通常會(huì)告訴解析程序先查看這里。/etc/host.conf轉(zhuǎn)化程序控制文件告訴網(wǎng)絡(luò)域名服務(wù)器如何查找主機(jī)名。(通常是 /etc/hosts,然后就是名稱服務(wù)器;可通過 netconf對(duì)其進(jìn)行更改)/etc/resolv.conf轉(zhuǎn)化程序配置文件在配置程序請(qǐng)求BIND域名查詢服務(wù)查詢主機(jī)名稱時(shí)必須告訴程序使用那個(gè)域名服務(wù)器和 IP地址來完成這個(gè)任務(wù)。Linux上的域名服務(wù)由named守護(hù)進(jìn)程控制,該進(jìn)程從主文件:/etc/named.conf中獲取信息。它包括一族將主機(jī)名稱映射為IP地址的各種文件:下面是named配置文件族詳細(xì)內(nèi)容。表2 named配置文件族名稱中文名作用/etc/named.conf主文件設(shè)置一般的name參數(shù),指向該服務(wù)器使用的域數(shù)據(jù)庫(kù)的信息源/var/named/named.ca根域名配置服務(wù)器指向文件指向根域名配置服務(wù)器,用于唯告訴緩存服務(wù)器初始化。/var/named/localhost.zoneLocalhost區(qū)正向域名解析文件用于將本地IP地址(127.0.0.1)轉(zhuǎn)化為回送方localhost名字。/var/named/name.localLocalhost區(qū)反向域名解析文件用于將localhost名字轉(zhuǎn)化為本地回送IP地址(127.0.0.1)。/var/named/name2ip.conf用戶配置區(qū)的正向解析文件將主機(jī)名映射為IP地址的區(qū)文件。/var/named/ip2name.conf用戶配置區(qū)的反向解析文件將IP地址映射為主機(jī)名稱的區(qū)文件named.conf時(shí)DNS中的核心它的配置 見表三:表3 named.conf文件的配置命令語(yǔ)法acl 定義IP地址的訪問控制清單 control定義rndc使用的控制通道include把其他文件包含到配置文件中 key 定義授權(quán)的安全密鑰 logging定義日志內(nèi)容和位置 opitons 定義全局配置選項(xiàng)和缺省值server 定義遠(yuǎn)程服務(wù)器的特征 zone 定義一個(gè)區(qū)二、DNS 配置文件檢查工具可以看出Linux下DNS配置文件比較復(fù)雜,不過我們可以通過一些工具來幫助你檢查DNS文件錯(cuò)誤。ping命令檢查DNS配置最簡(jiǎn)單的方法是使用Ping命令,直接Ping主機(jī)名稱。PING是一種很好的方法,它能夠決定當(dāng)特定主機(jī)處于開機(jī)運(yùn)行狀態(tài)時(shí),網(wǎng)絡(luò)是否正常運(yùn)行。遇到DNS問題時(shí)檢查的第一項(xiàng)是系統(tǒng)和網(wǎng)絡(luò)的狀態(tài),而且首先檢查并判斷存在問題的DNS服務(wù)器是否有響應(yīng)。如果能夠PING到DNS服務(wù)器,則能確保與DNS服務(wù)器的連接無誤。如果無法PING到DNS服務(wù)器,那么很有可能系統(tǒng)死機(jī)了。為了證實(shí)這是系統(tǒng)問題而非網(wǎng)絡(luò)問題,再來檢測(cè)DNS連接的路由器是否正常運(yùn)行。為DNS排錯(cuò)時(shí),應(yīng)盡量使用IP地址替代DNS名稱以減少由DNS服務(wù)器而不是主機(jī)產(chǎn)生問題的可能性。ping PING (192.168.1.1) 56(84) bytes of data64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.420 ms64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.374 ms64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.372 msnslookup命令在Linux下配置好DNS服務(wù)器,添加了相應(yīng)的記錄之后,只要IP地址保持不變,一般情況下我們就不再需要去維護(hù)DNS的數(shù)據(jù)文件了。不過在確認(rèn)域名解釋正常之前我們最好是測(cè)試一下所有的配置是否正常。許多人會(huì)簡(jiǎn)單地使用ping命令檢查一下就算了。不過Ping指令只是一個(gè)檢查網(wǎng)絡(luò)聯(lián)通情況的命令,雖然在輸入的參數(shù)是域名的情況下會(huì)通過DNS進(jìn)行查詢,但是它只能查詢A類型和CNAME類型的記錄,而且只會(huì)告訴你域名是否存在,其他的信息一概欠奉。所以如果你需要對(duì)DNS的故障進(jìn)行排錯(cuò)就必須熟練另一個(gè)更強(qiáng)大的工具nslookup。nslookup即名稱服務(wù)器查找(Name Server Lookup),用來查找DNS服務(wù)器上的DNS記錄。這個(gè)命令可以指定查詢的類型,可以查到DNS記錄的生存時(shí)間還可以指定使用那個(gè)DNS服務(wù)器進(jìn)行解釋。運(yùn)行nslookup需要安裝bind-utils,可以使用命令查詢:rpm qa|grep bind-utilsnslookup有兩種運(yùn)行模式:交互式和非交互式運(yùn)行模式。交互式運(yùn)行模式允許用戶通過域名服務(wù)器檢索各種主機(jī),并可以打印出主機(jī)名稱列表。非交互式運(yùn)行模式用來打印所請(qǐng)求的某個(gè)主機(jī)或域的特定的信息。進(jìn)入“nslookup”交互式運(yùn)行模式,運(yùn)行下面的命令:nslookup在使用交互模式。此時(shí)會(huì)出現(xiàn)提示符"<",nslookup提供了許多可用命令。下面列舉其中一些常用的詳細(xì)說明。help命令:顯示幫助信息,及一些簡(jiǎn)單的命令的作用。exit 命令:退出nslookup命令。lserver命令:查找指定的域名服務(wù)器并將其設(shè)置為默認(rèn)的域名服務(wù)器。server命令:和lserver相似,解析另一臺(tái)域名服務(wù)器并將其設(shè)置為默認(rèn)的服務(wù)器,不同在于本命令使用當(dāng)前的默認(rèn)服務(wù)器來解析。set命令:修改工作參數(shù),它也是nslookup中最常用的命令。它可以包含下面的幾種:set class:設(shè)置查詢的類型,一般情況下為Internet。set debug:設(shè)置調(diào)試模式。set nodebug:設(shè)置為非調(diào)試模式。set d2:設(shè)置詳細(xì)調(diào)試模式。set nod2:設(shè)置為非詳細(xì)調(diào)試模式。set nodefname:設(shè)置為defname,會(huì)在所有沒有加"o"的名字后,自動(dòng)加上默認(rèn)的域名。它是默認(rèn)的方式。set domain:設(shè)置默認(rèn)的域名。set port:DNS的默認(rèn)端口為53,用本命令可以設(shè)置其他端口,一般用于調(diào)試。set q(querytype):改變查詢的信息的類型。默認(rèn)的類型為A紀(jì)錄。set recurse:設(shè)置查詢類型為遞歸;若為set norecurse,查詢類型為跌代;缺省為前者。set retry:設(shè)置重試的次數(shù)。默認(rèn)的值為4。set root:設(shè)置默認(rèn)的根服務(wù)器。set timeout:設(shè)置等待應(yīng)答的限制時(shí)間(單位為秒),超出即為超時(shí),如果還可以重試,就會(huì)將長(zhǎng)超時(shí)值加倍,重新查詢。默認(rèn)的超時(shí)值為5秒。如果要進(jìn)入nslookup非交互式運(yùn)行模式,運(yùn)行下面的命令:nslookup 錯(cuò)誤實(shí)例:#nslookup* Cant find server name for address 192.168.2.1: Timed out* Default servers are not availableDefault Server: UnKnownAddress: 192.168.2.1錯(cuò)誤原因:如果出現(xiàn)錯(cuò)誤,該命令將不能啟動(dòng)。一般的錯(cuò)誤都是數(shù)據(jù)庫(kù)文件或配置文件筆誤所至。比如少個(gè)“.”或者文件明不正確等等。另外一個(gè)主要的原因是執(zhí)行 nslookup 的系統(tǒng)所使用的 server(如 192.168.2.1) 不能查詢其反解(1.2.168.192.in-addr.arpa)。解決方法:增加 server ip 所在的 reverse zone (如 2.168.192.in-addr.arpa),確定其中有 server 本身的反解項(xiàng)目。3、 使用dlint軟件檢查DNS故障dlint是一個(gè)專門檢查DNS配置文件開放源代碼軟件,運(yùn)行它系統(tǒng)要求安裝Perl語(yǔ)言和DiG命令(BIND中一個(gè)軟件包):軟件下載:dlint軟件主頁(yè)是 下載鏈接: 文件大小:22KB。軟件安裝:系統(tǒng)會(huì)將dlint安裝在/usr/bin/目錄下。dlint首先檢查拼寫錯(cuò)誤。有A記錄的主機(jī)名稱必須有PTR(稱 pointer, PTR反向解析)記錄。如果有A記錄的主機(jī)名稱沒有PTR,配置文件不能通過。Dlint可以在用戶配置文件中為A建立查找丟失的PTR記錄。dint會(huì)檢查in-addr.arpa區(qū)帶(Zone)的每一條PTR記錄是否有對(duì)應(yīng)的A記錄存在。dint會(huì)以遞歸的方式檢查子區(qū)帶(Zone),查找配置問題。應(yīng)用實(shí)例: ; 后邊是程序版本和解釋語(yǔ)句,ERROR后邊是Dlint對(duì)DNS配置文件的檢查結(jié)果。如果沒有ERROR字段表示配置正確。Dlint能檢查的DNS配置文件主要錯(cuò)誤:1. 沒有增加 SOA (start of authority) RR 的 serial 值 這是最主要的 DNS 出錯(cuò)的原因. 因?yàn)? serial 值沒有增加, secondary server 就不會(huì)在 primary server 的配置文件改變后隨之改變。 包括改變 SOA 里面其它的值, seconrary server 自己并不會(huì)發(fā)覺. 即使是修改 SOA RR 里面的資料, 也都要記得去改 SOA RR 的 serial 值. 改了 serial 后,secondary 到時(shí)后查出有增加, 就會(huì)從 primary 作一次 zone transfer. 改了 SOA RR 后, 最好去測(cè)試一下 secondary server 是不是有更新. 目前有dlint軟件可以分析任何DNS區(qū)帶。 2. 在 BIND 中的配置文件, 少寫了一個(gè)點(diǎn) (.) 少寫了一個(gè)點(diǎn), 看起來差不多. 但是卻造成了很大的問題. BIND 的設(shè)定檔案一定要小心的設(shè)定. 要不然很可能產(chǎn)生很多錯(cuò)誤。3、錯(cuò)誤的 resolv.conf 設(shè)定 resolv.conf 里面包含了 local domain, 當(dāng)你沒有把全部的 domain name 設(shè)定好時(shí), 就會(huì)自動(dòng)加上去這個(gè)東西. 然后機(jī)器就不會(huì)去查 DNS 而直接用這個(gè) domain name 連出去了. 要是 resolv.conf 有不正確的 domain name entry, 那就有可能連到一堆不存在的地方. (然后得到 error.)4. rndc命令rndc指令是系統(tǒng)管理員用來管理域名服務(wù)器的操作的命令。rndc主要命令:rndc reload用來裝入新的數(shù)據(jù)庫(kù)。rndc status 查看目前DNS服務(wù)器狀態(tài)。rndc stop 停止DNS服務(wù)器。rndc restart 從新啟動(dòng)DNS服務(wù)器。rndc stats 生成DNS統(tǒng)計(jì)報(bào)表。rndc dumpdb 將所有緩存輸入文件named_dump.db。 5 、DNS狀態(tài)檢測(cè)工具-DNSTOP在維護(hù)DNS服務(wù)器時(shí),網(wǎng)管員希望知道到底是哪些用戶在使用DNS服務(wù)器,同時(shí)也希望能對(duì)DNS狀態(tài)查詢做一個(gè)統(tǒng)計(jì)。通常想到是tcpdump i eth0 port 53來查看DNS查詢包,Tcpdump是一個(gè)命令行方式的嗅探器。它可以根據(jù)需要顯示出經(jīng)過一個(gè)網(wǎng)絡(luò)接口的所有數(shù)據(jù)包,供網(wǎng)絡(luò)管理員對(duì)網(wǎng)絡(luò)進(jìn)行檢測(cè)。但由于采用的是命令行方式,對(duì)這些數(shù)據(jù)包的分析可能會(huì)比較困難。這里我們可以使用DNSTOP查詢DNS服務(wù)器狀態(tài):軟件安裝:DNSTOP依賴Tcpdump和pcap庫(kù)(libpcap)對(duì)網(wǎng)絡(luò)上傳輸?shù)臄?shù)據(jù)包進(jìn)行截獲和過濾,所以你需要檢查系統(tǒng)是否安裝相應(yīng)軟件,可以使用命令:結(jié)果見圖1。 圖1 運(yùn)行DNSTOP必需軟件和庫(kù)函數(shù) 軟件主頁(yè):http:/dns.measurement- 下載鏈接:http:/dns.measurement- 軟件安裝: 運(yùn)行軟件:如果想查看通過eth0的DNS網(wǎng)絡(luò)流量可以使用命令在運(yùn)行DNSTOP的過程中,可以敲入如下命令: S,D,T,1,2,ctrl+R,ctrl+X,以交互方式來顯示不同的信息。更詳細(xì)信息可以查看dnstop help??偨Y(jié):在Linux下新手第一次配置DNS都會(huì)錯(cuò),請(qǐng)留意出錯(cuò)信息。DNS是一個(gè)很復(fù)雜的系統(tǒng)。用戶可能會(huì)做錯(cuò)很多事,并且會(huì)使系統(tǒng)不能正常運(yùn)行。伴隨DNS建立出現(xiàn)的許多問題都會(huì)引起相同的結(jié)果,但起因卻不同。但大多數(shù)問題是由于配置文件中的語(yǔ)法錯(cuò)誤而導(dǎo)致的。關(guān)于如何配置DNS筆者不作贅述了,另外網(wǎng)絡(luò)上有大量的文檔、FAQ和其他的資源。這些大量的文檔對(duì)于很好的利用DNS的各種功能是非常重要的。這里介紹的工具如:ping、 nslookup、dlint 、rndc、 dnstop都是一些檢查工具,如果你希望作為一名合格Unix/Linux的網(wǎng)絡(luò)管理員就應(yīng)該從需求方案出發(fā),以客戶的需求為導(dǎo)向,配置出我們自己需要的DNS服務(wù)器,這樣不但可以滿足需要,還能大大減少我們的工作量,以上這些都是你應(yīng)當(dāng)掌握的工具,但并不是說你可以忽略對(duì)DNS本身的了解。文章轉(zhuǎn)載自網(wǎng)管網(wǎng):