當前位置:妙知谷 >

遊戲數碼 >互聯網 >

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

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

操作方法

(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)大功告成,享受成果吧。

  • 文章版權屬於文章作者所有,轉載請註明 https://miaozhigu.com/sm/hulianwang/g0kye.html