Linux下DNS伺服器bind的安裝、配置和應用

來源:酷知科普網 1.51W

操作方法

(01)DNS工作原理1.當要進行域名解析的時候,系統會向本地DNS發出解析請求,由本地DNS伺服器解析域名與對應的IP地址。2.本地DNS伺服器接收到解析請求後,再自己的本地資料庫中查詢與請求相匹配的DNS記錄條目,如果本地沒有相匹配的記錄,則本地DNS伺服器就會向根域名伺服器發出查詢請求。3.根域名伺服器在接收到查詢請求時,會把查詢請求傳送到相應的頂級域,再由頂級域傳送到二級域,再由二級域傳送到三級域,以此類推,直到查詢到請求的相應記錄,然後傳送回本地DNS伺服器。4.最終由本地DNS伺服器把結果返回給客戶端。5.如果經過查詢後仍然無記錄,則由本地DNS伺服器向客戶端返回無法解析的錯誤資訊。

(02)安裝bind軟體1.解壓[root@~]#tar zxvf 2.安裝[root@~]#./configure –prefix=/usr/local/named –sysconfdir=/usr/local/name/etc –enable-thread3.生成配置檔案[root@~]#/usr/local/src/bind-9.9.2/bin/configen/rndc-configren | tail -10| head -9 |sed ‘s/# //g’ > /usr/local/etc/4.啟動和關閉Bind安裝完bind後,可以讓bind後臺執行[root@~]#/usr/local/named/sbin/named &使用-g引數可以實現顯示啟動過程中的詳細資訊。[root@~]#/usr/local/named/sbin/named –g &22-Nov-2012 20:41:30.832 built with '--prefix=/usr/local/named/' '--sysconfdir=/usr/local/named/etc' '--enable-thread'22-Nov-2012 20:41:30.832 ----------------------------------------------------22-Nov-2012 20:41:30.832 BIND 9 is maintained by Internet Systems Consortium,22-Nov-2012 20:41:30.832 Inc. (ISC), a non-profit 501(c)(3) public-benefit22-Nov-2012 20:41:30.832 corporation.  Support and training for BIND 9 are22-Nov-2012 20:41:30.832 available at 20:41:30.833 ----------------------------------------------------22-Nov-2012 20:41:30.833 using 1 UDP listener per interface22-Nov-2012 20:41:30.833 using up to 4096 sockets22-Nov-2012 20:41:30.841 loading configuration from '/usr/local/named/etc/'22-Nov-2012 20:41:30.841 reading built-in trusted keys from file '/usr/local/named/etc/'22-Nov-2012 20:41:30.842 using default UDP/IPv4 port range: [1024, 65535]22-Nov-2012 20:41:30.843 using default UDP/IPv6 port range: [1024, 65535]22-Nov-2012 20:41:30.870 automatic empty zone: 22-Nov-2012 20:41:30.870 automatic empty zone: 22-Nov-2012 20:41:30.870 automatic empty zone: 22-Nov-2012 20:41:30.870 automatic empty zone: 22-Nov-2012 20:41:30.870 automatic empty zone: 22-Nov-2012 20:41:30.871 automatic empty zone: 22-Nov-2012 20:41:30.878 /usr/local/named/etc/:7: couldn't add command channel #953: address in use22-Nov-2012 20:41:30.878 ignoring config file logging statement due to -g option22-Nov-2012 20:41:30.879 managed-keys-zone: loaded serial 022-Nov-2012 20:41:30.881 all zones loaded22-Nov-2012 20:41:30.882 running關閉:kill 程序ID號

(03)配置named伺服器1.開機自動啟動編寫bind服務啟動關閉的指令碼:vi /etc/init.d/named#/bin/bash#Start script for the Berkeley Internet Name Domain Server# chkconfig: 345 35 75# description:BIND is a Name Domain Server# Source function library.. /etc/rc.d/init.d/functions# Source function [ -f /etc/init.d/functions ]; then. /etc/init.d/functionselif [-f /etc/rc.d/init.d/functions ]; then. /etc/rc.d/init.d/functionselseexit 0finamed=/usr/local/named/sbin/namedprog=namedRETVAL=0#start functionstart(){if [-n "'/sbin/pidof $prog'" ]thenecho $prog": already running"echoreturn 1fiecho "Starting "$prog": "base=$prog$named &RETVAL=$?usleep 500000if [ -z "'/sbin/pidof $prog'" ]then#The child processes have died after fork()ingREVEL=1fiif [ $RETVAL -ne 0 ]thenecho 'Startup failure'elseecho 'Startup success'fiechoreturn$RETVAL}stop () {echo "Stopping "$prog":"killall$namedRETVAL=$?if [ $RETVAL -ne 0 ]thenecho "Shutdown failure"elseecho "Shutdown success"fiecho}# See how we were "$1" instart)start;;stop)stop;;status)status $namedRETVAL=$?;;restart)stop;usleep 500000start;;*)echo $"Usage:$prog {start | stop | restart |status}"exit 1esacexit $RETVAL2.新增到到開機啟動項:chkconfig named add3.檢查開啟動項中named啟動級別是否on;[[email protected]]# chkconfig --listip6tables0:off1:off2:on3:on4:on5:on6:offiptables0:off1:off2:on3:on4:on5:on6:offirqbalance0:off1:off2:off3:on4:on5:on6:offkdump0:off1:off2:off3:on4:on5:on6:offlvm2-monitor0:off1:on2:on3:on4:on5:on6:offmcelogd0:off1:off2:off3:on4:off5:on6:offmdmonitor0:off1:off2:on3:on4:on5:on6:offmessagebus0:off1:off2:on3:on4:on5:on6:offnamed0:off1:off2:on3:on4:on5:on6:offnetconsole0:off1:off2:off3:off4:off5:off6:offnetfs0:off1:off2:off3:on4:on5:on6:off

(04)Bind伺服器配置Bind的主要配置檔案是包括和相應的區域檔案,Bind中的給中配置都是通過修改這些檔案來完成的,修改後需要重新啟動Bind服務是配置生效。配置檔案是Bind的主要配置檔案,裡面儲存了大量的Bind自身的設定資訊。Bind安裝完後並不會自動建立該配置檔案,使用者需要通過命令手工生成,新生成的配置檔案的預設內容如下:配置檔案是由配置語句和註釋組成。每條配置語句以分號“;”做為結束符,多條配置語句組成一個語句塊;註釋語句使用了兩個“//”作為註釋符。配置檔案中所支援的所有配置語句如表:支援的所有語句:其中,常用的配置語句介紹如下:語句acl語句用於定義地址匹配列表,其格式如下:acl acl –name {address_match_list};Bind預設定義了一些匹配列表,如下rols語句controls語句用於定義rndc工具與Bind服務程序的通訊,系統管理員可以通過rndc向Bind程序發出控制命令,並接受由Bind返回的結果。其格式如下:controls {[inet (ip_addr | *) [port ip_addr] allow {address_match_list}Keys{key_list};][inet …;][unix path perm number owner number groupnumber keys {key_list};][unix …;]};ude語句include語句用於把所指定的檔案的內容新增進配置檔案中,該語句的格式如下所示:include filename;語句key語句用於定義TSIG或命令通道所使用的加密金鑰。其格式如下key key_id {algorithm string;secret string;}ons語句options語句用於設定影響整個DNS伺服器的全域性選項,該語句在中只能出現一次。如果沒有設定語句,那麼Bind將使用預設的options值,該語句支援的選項特別多,下面是一些常見的選項格式:options{[directorypath_name;][forward (only | frist);][forwarders {[ip_addr[port ip_port];……] };][query-source ((ipv4_addr |*)[port (ip_port |*)] |[address (ipv4_addr| *)][port (ip_port | *)] ); ][query-source –v6( (ip6_addr | *)[port (ip_port |*)] |[address (ip6_addr| *)] |[port (ip_port |*)]);][statistics-interval number ;]};Directory選項用於定義伺服器的工作目錄,在配置檔案中所指定的所有相對路徑都是相對於該路徑來定義。該目錄也是伺服器中大部分輸出檔案(例如)的儲存位置。如果沒有設定directory,那麼系統預設使用”.”(即Bind啟動的目錄)作為工作目錄。一般會把Bind的工作目錄設定為/var/named,如下所示:directory “/var/named”;forwarders選項用於指定DNS請求的轉發到其他DNS伺服器上,該選項預設為空,也就是不進行轉發。選項值可以是一個IP地址或主機名,也可以是主機的列表。不同主機IP地址或名稱之間使用分號”;”進行分割。如下所示:forwareders {; ;;;};forward選項僅僅在forwareders選項不為空時生效。該選項用於控制DNS伺服器的請求轉發操作。如果選項值設定為first,則DNS伺服器會先把請求發給forwarders選中的指定的遠端DNS伺服器。如果遠端DNS伺服器無法響應該請求,則Bind將嘗試自行解析該請求;如果選擇被設定為only,則bind值轉發請求,並不進行處理。query-source和query-source-v6分別設定DNS伺服器所使用的Ipv4或者Ipv6以及埠號。預設的埠號為53,如果指定其他埠號,將無法與其他的DNS伺服器通訊。。statistics-interval選項用於指定DNS伺服器記錄統計資訊的時間間隔,單位為分鐘。其預設值為60,最大值為28天(即40320分鐘)。如果該選項設定為0,則伺服器不記錄統計資訊。er語句Bind有可能與其他的DNS伺服器進行通訊,但並非所有的DNS伺服器都運行同一個版本的Bind,而且就算安裝了相同Bind版本的伺服器,它們的設定,軟硬體平臺都會有所不同。在server語句中可以設定遠端伺服器的特徵資訊,以使雙方能夠正常通訊,該語句的格式如下:server_ip_addr [/prefixlen] {[bogusyes_or_no;][provide-ixfryes_or_no;][request-ixfryes_or_no;][edns yes_or_no;][edns-udp-sizenumber;][max-udp-sizenumber;][transfersnumber;][transfer-format(one-answer | many-answers);][keys{string;[string; […]]}; ][transfer-source(ipv4_addr| *) [port ip_port];][transfer-source-v6(ip6_addr|*) [port ip_port]][notify-source(ipv4_addr | *) [port ip_port];][notify-source-v6(ip6_addr | *) [port ip_port];][query-source[address (ip_addr | *) ] [port ip_port|*];][query-srouce-v6[address (ip_addr | *)] [port ip_port | *];][use-queryport-toolyes_or-no;][queryport-pool-portsnumber;][queryport-pool-intervalnumber;]}語句view語句可以使用Bind根據客戶端的地址決定需要返回的域名解析結果。也就是說,不同的主機通過同一臺DNS伺服器對同一個域名進行解析,會得到不同的解析結果。其格式如下:view view_name[class] {match-clients{address_match_list};match-destinations{address_match_list};match-recursive-onlyyes_or_no;[ view_option; …][ zone_statement;…]};每一條view語句定義了一個客戶端集合所能看到的檢視,如果客戶端匹配檢視中的match-clients選項所定義的客戶端列表,那麼Bind將根據該檢視返回解析結果。例如,希望對內網和外網使用者進行區分,使他們訪問同一個域名時,會得到不同的結果。可以通過view語句定義兩個不同的檢視,在兩個檢視中分別定義不同的屬性。已達到上述的效果。配置如下:語句zone語句是檔案的核心部分。每一條zone語句定義一個區域,使用者可以在這個區域中設定該區域相關的選項。Bind中可以設定多種型別的區域。不同型別的區域,其zone語句定義的格式也有所不同,下面只介紹最常用的master和hint兩種型別的區域的zone語句格式:加入要定義一個根區域檔案,可以如下:zone“.”{type master;file“”;};主DNS區域檔案是Bind照哦給你最基本的區域型別,它又可以分為正向解析和反向解析兩種,。正向解析就是通過查詢域名查詢對應的IP地址;而反向解析則是通過IP地址查詢對應的域名。例如:one“”{type ;master;file“”;allow-update [none;];}Allow-update選項定義了允許對主區域進行動態DNS更新的伺服器列表。None表示不執行進行更新。一般情況下,使用者只會進行正向的解析,根據域名來查詢對應的IP地址。但是在一起特殊的情況下,也會使用反向解析查詢IP地址對應的域名。下面是一個反向解析的例子。zone“” in {type master;file “l”;allow-update (none;);};是該反向解析區域的名稱。其中“”是反向解析區域名稱中固定的字尾格式,左邊的部分是由需要解析的IP地址或網段的十進位制表示方法逆序字串。

Linux下DNS伺服器bind的安裝、配置和應用
Linux下DNS伺服器bind的安裝、配置和應用 第2張
Linux下DNS伺服器bind的安裝、配置和應用 第3張
Linux下DNS伺服器bind的安裝、配置和應用 第4張
Linux下DNS伺服器bind的安裝、配置和應用 第5張

(05)配置檔案e是一個特殊的區域檔案,在該檔案中記錄了Internet上的根DNS伺服器的名稱和IP地址。DNS伺服器接收到客戶端傳送來的請求後,如果子本地找不到匹配的DNS記錄,則把請求傳送到該文中所定義的根DNS伺服器上即興逐級查詢。由於internet上的根DNS伺服器會隨時發生變化,因為檔案的內容也是不斷更新的,所以使用者可以到定期到下載最新版本的檔案可以看到,在該檔案中定義了全球13個根DNS伺服器,其中第一列為伺服器名,第四列為伺服器的IP地址

(06)正向解析區域檔案正向解析區域檔案用於對映域名和IP地址,檔案中包含了該區域的所有引數,包括域名、IP地址、重新整理時間、重試時間、超時等。下面是一個正向解析的區域檔案的例子第一行的“$ttl1D”用於設定客戶端的DNS快取資料的有效期。該值預設的單位為妙,使用者可以明確指定使用H(小時)、D(天)、或W(星期)作為單位。第二到九行則用於設定該域的控制資訊,可以看到,控制資訊包括域名、有效時間、網路地址型別等,其格式如下所示:name:定義SOA的域名,以“.”結束,也可以使用@代替ttl:定義有效時間,如果不設定該值,則系統預設使用第一行中定義的ttl值。class:定義網路的詆譭子型別。對於TCP/IP網路應設定為IN。orgin:定義這個域的主域名伺服器的主機名,以“.”結尾。contact:定義該DNS伺服器的管理員郵件地址,因此@在SOA記錄中有特殊的意義,所以用”.”代替,本例中的表示。serial:定義區域檔案的版本號,它是一個整數值。Bind可以通過它來得知區域檔案時什麼時間修改的。每次更改區域檔案都應該時這個數加一。refresh:定義從DNS伺服器在試圖檢查主DNS伺服器的SOA記錄之前應等待的時間。該選項以及括號中除了serial以外的其他選項都是以秒為單位,也可以使用M(分鐘)、H(小時)、W(星期)等。如果SOA記錄不經常改變,可以把這個值設定的大一些。在本例中為3小時。retry:定義從DNS伺服器在主DNS不能使用時,重試對主DNS伺服器發出請求應等待的時間。通常,該時間不應該超過1小時。在本例中設定為15分鐘。expire:定義從DNS伺服器在無法與主DNS伺服器進行通訊的情況下,其區域資訊儲存的時間。在本例中為一個星期。minimum:當沒有定義TTL時,預設使用的TTL值。如果噢玩過的變化不大,那麼可以把該值設定的大一些。在本例中為1天。在本例中第10行是DNS的資源記錄(NS),指定該域中的DNS伺服器名稱。其格式如下:[name][ttl]classNSname-server-hostname本例中指定的DNS伺服器為;

Linux下DNS伺服器bind的安裝、配置和應用 第6張
Linux下DNS伺服器bind的安裝、配置和應用 第7張

(07)反向解析區域反向解析區域檔案用於定義IP地址到域名的解析,它採用的與正向借些檔案類似的選項和格式,但由於是反向解析,所以該檔案是使用PTR指標記錄,而不是主機記錄。例如:第9~12行定義了用於反向解析的PTR記錄,其格式如下所示:[address][ttl]addr-classPTRdomain-name

Linux下DNS伺服器bind的安裝、配置和應用 第8張

(08)配置例項環境:BBT公司現在要是實現這樣的功能:內網使用者可以正向解析所有內網的計算機以及外網的伺服器,反向解析內網的計算機,允許使用遞迴查詢;外網使用者只能正向解析外網伺服器,不能借些內外那個計算機。不允許使用遞迴解析。其區域網的網段為,其中有5臺計算機,分為為server1()、server2()、server3()、server4()和server5()。在外網中有3臺應用伺服器:FTP伺服器(主機名為ftp,IP地址為),網站伺服器(主機名www,IP地址為)和郵件伺服器(主機名mail,IP地址為)此外還有一臺DNS伺服器,其主機名為dns,內網IP地址為,外網的IP地址為,具體網路拓撲如下圖:1.配置為了區分內網網路使用者的解析結果,需要通過檢視實現。在本例中定義兩個試圖internal和external,分別對應內部網路和外部網路的使用者。在這兩個檢視中分別定義不同的區域檔案,從而實現內外網使用者能得到不同的解析結果。定義bind的加密金鑰以及mdc間的控制。定義Bind的選項,內網使用者所對應的檢視以及各個解析域,如下所示:定義外網使用者所對應的檢視以及相關的解析域,如下所示:1.配置區域檔案2.測試結果

Linux下DNS伺服器bind的安裝、配置和應用 第9張
Linux下DNS伺服器bind的安裝、配置和應用 第10張
Linux下DNS伺服器bind的安裝、配置和應用 第11張
Linux下DNS伺服器bind的安裝、配置和應用 第12張

(09)大功告成,享受成果吧。

熱門標籤