Linux下DNS配置文件詳解
Linux 下DNS 配置文件祥解最近,為了配置DNS 服務(wù)器我收集了不少有關(guān)配置DNS 服務(wù)器方面的資料。在這里我將這些資料加上我在配置DNS 服務(wù)器時的一些經(jīng)驗進行一下整理。希望能對和我一樣在配置
Linux 下DNS 配置文件祥解
最近,為了配置DNS 服務(wù)器我收集了不少有關(guān)配置DNS 服務(wù)器方面的資料。在這里我將這些資料加上我在配置DNS 服務(wù)器時的一些經(jīng)驗進行一下整理。希望能對和我一樣在配置DNS 服務(wù)器時遇到困難的朋友一些啟示。
DNS 服務(wù)器軟件即BIND 的安裝應(yīng)該說是比較容易的,正常情況下是不會出現(xiàn)什么問題的。因此,本文在著重要討論的是DNS 服務(wù)器的幾個配置文件的配置問題。本文將以REDHA T8.0自帶的BIND9.2.1為依據(jù)進行討論。以下是本人這次配置DNS 服務(wù)器的幾個配置文件:
/etc/named.conf
/在NAMED.CONF 配置文件中使用//和/* */來進行注釋,
options { /*OPTIONS選項用來定義一些影響整個DNS 服務(wù)器的環(huán)境,如這里的DI RECTORY 用來指定在本文件指定的文件的路徑,如這里的是將其指定到 /var/named 下, 在這里你還可以指定端口等等。不指定則端口是53
*/
directory "/var/named";
}; //
//
// a caching only nameserver config
//
controls {
inet 127.0.0.1 allow { localhost; } keys { rndckey; };
};
zone "." IN { //在這個文件中是用zone 關(guān)鍵字來定義域區(qū)的,一個zone 關(guān)鍵字定義一個域區(qū) type hint;
/*在這里type 類型有三種,它們分別是master,slave 和hint 它們的含義分別是:
master:表示定義的是主域名服務(wù)器
slave :表示定義的是輔助域名服務(wù)器
hint:表示是互聯(lián)網(wǎng)中根域名服務(wù)器
*/
file "named.ca"; //用來指定具體存放DNS 記錄的文件
};
zone "localhost" IN { //定義一具域名為localhost 的正向區(qū)域
type master;
file "localhost.zone" ;
allow-update { none; };
};
zone "test.net" IN { //指定一個域名為test.net 的正向區(qū)域
,type master;
file "test.net”
allow-update { none;};
};
zone "0.0.127.in-addr.arpa" IN { //定義一個IP 為127.0.0.*的反向域區(qū)
type master;
file "named.local";
allow-update { none; };
};
zone "0.192.168.in-addr.arpa" IN { //定義一個IP 為168.192.0.*反向域區(qū)
type master;
file "168.192.0";
/var/named/test.net文件
@ IN SOA linux.test.net. Webmaster.test.net. ( SOA表示授權(quán)開始
/*上面的IN 表示后面的數(shù)據(jù)使用的是INTERNET 標(biāo)準。而@則代表相應(yīng)的域名,如在這里代表test.net, 即表示一個域名記錄定義的開始。而linux.test.net 則是這個域的主域名服務(wù)器,而webmaster.test.net 則是管理員的郵件地址。注意這是郵件地址中用. 來代替常見的郵件地址中的@.而SOA 表示授權(quán)的開始
*/
2003012101 ; serial (d. adams) /*本行前面的數(shù)字表示配置文件的修改版本,格式是年月日當(dāng)日修改的修改的次數(shù),每次修改這個配置文件時都應(yīng)該修改這個數(shù)字,要不然你所作的修改不會更新到網(wǎng)上的其它DNS 服務(wù)器的數(shù)據(jù)庫上,即你所做的更新很可能對于不以你的所配置的DNS 服務(wù)器為DNS 服務(wù)器的客戶端來說就不會反映出你的更新,也就對他們來說你更新是沒有意義的。
*/
28800 ; refresh
/*定義的是以為單位的刷新頻率 即規(guī)定從域名服務(wù)器多長時間查詢一個主服務(wù)器,以保證從服務(wù)器的數(shù)據(jù)是最新的
*/
7200 ;retry
/*上面的這個值是規(guī)定了以秒為單位的重試的時間間隔,即當(dāng)從服務(wù)試圖在主服務(wù)器上查詢更時,而連接失敗了,則這個值規(guī)定了從服務(wù)多長時間后再試
*/
3600000 ; expiry
/*上面這個用來規(guī)定從服務(wù)器在向主服務(wù)更新失敗后多長時間后清除對應(yīng)的記錄,上述的數(shù)值是以分鐘為單位的
*/
8400 )
/*上面這個數(shù)據(jù)用來規(guī)定緩沖服務(wù)器不能與主服務(wù)聯(lián)系上后多長時間清除相應(yīng)的記 錄
*/
IN NS linux
,IN MX 10 linux
linux IN A 168.192.0.14
it-test1 IN A 168.192.0.133
www IN CNAME linux
/*上面的第一列表示是主機的名字,省去了后面的域。
NS :表示是這個主機是一個域名服務(wù)器,
A :定義了一條A 記錄,即主機名到IP 地址的對應(yīng)記錄
MX 定義了一郵件記錄
CNAME :定義了對應(yīng)主機的一個別名
/var/named/168.192.0
@ IN SOA linux.test.net. webmastert.linux.net. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS linux.test.net.
/*以上的各關(guān)鍵字的含義跟test.net 是相同的
14 IN PTR linux.test.net.
133 IN PTR it-test1.test.net.
/*
上面的第一列表示的是主機的IP 地址。省略了網(wǎng)絡(luò)地址部分。如14完整應(yīng)該是: 168.192.0.14
PTR :表示反向記錄
最后一列表示的是主機的域名。
Linux 下配置完整安全的DHCP 服務(wù)器詳解
DHCP 是動態(tài)主機配置協(xié)議. 這個協(xié)議用于向計算機自動提供IP 地址, 子網(wǎng)掩碼和路由信息。網(wǎng)絡(luò)管理員通常會分配某個范圍的IP 地址來分發(fā)給局域網(wǎng)上的客戶機。當(dāng)設(shè)備接入這個局域網(wǎng)時,它們會向 DHCP 服務(wù)器請求一個 IP 地址。然后DHCP 服務(wù)器為每個請求的設(shè)備分配一個地址,直到分配完該范圍內(nèi)的所有 IP 地址為止。已經(jīng)分配的IP 地址必須定時地延長借用期。這個延期的過程稱作leasing ,確保了當(dāng)客戶機設(shè)備在正常地釋放IP 地址之前突然從網(wǎng)絡(luò)斷開時被分配的地址可以歸還給服務(wù)器。本文以Redhat Linux 9.0為例,介紹如何建立一個完整和安全的DHCP 服務(wù)器。
,一、建立DHCP 服務(wù)器配置文件
可以使用Redhat Linux 9.0自身攜帶rpm 包安裝。安裝結(jié)束后, DHCP 端口監(jiān)督程序 dhcpd 配置文件是/etc目錄中的名為dhcpd.conf 的文件。下面手工建立/etc/dhcpd.conf文件。/etc/dhcpd.conf通常包括三部分:parameters 、declarations 、option 。
1.DHCP 配置文件中的parameters (參數(shù)):表明如何執(zhí)行任務(wù),是否要執(zhí)行任務(wù),或?qū)⒛男┚W(wǎng)絡(luò)配置選項發(fā)送給客戶。主要內(nèi)容見表1
參數(shù) 解釋
ddns-update-style 配置DHCP-DNS 互動更新模式。
default-lease-time 指定確省租賃時間的長度,單位是秒。
max-lease-time 指定最大租賃時間長度,單位是秒。
hardware 指定網(wǎng)卡接口類型和MAC 地址。
server-name 通知DHCP 客戶服務(wù)器名稱。
get-lease-hostnames flag 檢查客戶端使用的IP 地址。
fixed-address ip 分配給客戶端一個固定的地址。
authritative 拒絕不正確的IP 地址的要求。
2. DHCP 配置文件中的declarations (聲明):用來描述網(wǎng)絡(luò)布局、提供客戶的IP 地址等。主要內(nèi)容見表2:
聲明 解釋
shared-network 用來告知是否一些子網(wǎng)絡(luò)分享相同網(wǎng)絡(luò)。
subnet 描述一個IP 地址是否屬于該子網(wǎng)。
range 起始IP 終止IP 提供動態(tài)分配IP 的范圍。
host 主機名稱 參考特別的主機。
group 為一組參數(shù)提供聲明。
allow unknown-clients ﹔deny unknown-client 是否動態(tài)分配IP 給未知的使用者。 allow bootp;deny bootp 是否響應(yīng)激活查詢。
allow booting﹔deny booting 是否響應(yīng)使用者查詢。
2005520124131.htm 開始啟動文件的名稱,應(yīng)用于無盤工作站。
next-server 設(shè)置服務(wù)器從引導(dǎo)文件中裝如主機名,應(yīng)用于無盤工作站。
3. DHCP配置文件中的option (選項):用來配置DHCP 可選參數(shù),全部用option 關(guān)鍵字作為開始,主要內(nèi)容包括見表3:
,選項 解釋
subnet-mask 為客戶端設(shè)定子網(wǎng)掩碼。
domain-name 為客戶端指明DNS 名字。
domain-name-servers 為客戶端指明DNS 服務(wù)器IP 地址。
host-name 為客戶端指定主機名稱。
routers 為客戶端設(shè)定默認網(wǎng)關(guān)。
broadcast-address 為客戶端設(shè)定廣播地址。
ntp-server 為客戶端設(shè)定網(wǎng)絡(luò)時間服務(wù)器IP 地址。
time -offset 為客戶端設(shè)定和格林威治時間的偏移時間,單位是秒。
注意:如果客戶端使用的是視窗操作系統(tǒng),不要選擇"host-name" 選項,即不要為其指定主機名稱。
下面是一個筆者使用的DHCP 配置文件,這是一個C類網(wǎng)絡(luò),共126個IP 地址可以分配的例子。讀者可以復(fù)制后使用,注意紅色部分是必須要修改的。
ddns-update-style interim;
ignore client-updates;
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.254;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option domain-name-servers 192.168.1.3;
option domain-name "www.cao.com"; #DNS名稱#
option domain-name-servers 192.168.1.3;
option time-offset -18000;
range dynamic-bootp 192.168.1.128 192.168.1.255;
default-lease-time 21600;
max-lease-time 43200;
host ns {
hardware ethernet 52:54:AB:34:5B:09;#運行DHCP 的網(wǎng)絡(luò)接口的MAC 地址# fixed-address 192.168.1.9;
}
}
,二、建立客戶租約文件
運行DHCP 服務(wù)器還需要一個名為 dhcpd.leases 的文件,保持所有已經(jīng)分發(fā)出去的 IP 地址。在Redhat Linux 發(fā)行版本中,該文件位于 /var/lib/dhcp/ 目錄中。如果您通過 RPM 安裝 ISC DHCP,那么該目錄應(yīng)該已經(jīng)存在。dhcpd.leases 的文件格式為:
Leases address {statement }
一個典型的文件內(nèi)容如下:
lease 192.168.1.255 { #DHCP服務(wù)器分配的IP 地址#
starts 1 2005/05/02 03:02:26; # lease 開始租約時間#
ends 1 2005/05/02 09:02:26; # lease 結(jié)束租約時間#
binding state active;
next binding state free;
hardware ethernet 00:00:e8:a0:25:86; #客戶機網(wǎng)卡MAC 地址#
uid "10050$0 6"; #用來驗證客戶機的UID 標(biāo)示#
client-hostname "cjh1"; #客戶機名稱#
}
注意lease 開始租約時間和lease 結(jié)束租約時間是格林威治標(biāo)準時間(GMT ),不是本地時間。
第一次運行DHCP 服務(wù)器時dhcpd.leases 是一個空文件,也不用手工建立。如果不是通過 RPM 安裝 ISC DHCP,或者 dhcpd 已經(jīng)安裝,那么您應(yīng)該試著確定 dhcpd 將其 lease 文件寫到何處,并確保該文件存在。也可以手工建立一個空文件:
#touch /var/lib/dhcp/dhcpd.leases
三、啟動和檢查DHCP 服務(wù)器
,使用命令啟動DHCP 服務(wù)器:
#service dhcpd start
使用ps 命令檢查dhcpd 進程:
#ps -ef | grep dhcpd
root 2402 1 0 14:25 ? 00:00:00 /usr/sbin/dhcpd
root 2764 2725 0 14:29 pts/2 00:00:00 grep dhcpd
使用檢查dhcpd 運行的端口:
# netstat -nutap | grep dhcpd
udp 0 0 0.0.0.0:67 0.0.0.0:* 2402/dhcpd
四、配置DHCP 客戶端
通常網(wǎng)管員使用選擇手工配置 DHCP 客戶,需要修改 /etc/sysconfig/network 文件來啟用聯(lián)網(wǎng);并修改 /etc/sysconfig/network-scripts 目錄中每個網(wǎng)絡(luò)設(shè)備的配置文件。在該目錄中,每個設(shè)備都有一個叫做 ifcfg-eth ? 的配置文件,eth ?是網(wǎng)絡(luò)設(shè)備的名稱。 如eth0等。如果你想在引導(dǎo)時啟動聯(lián)網(wǎng),NETWORKING 變量必須 被設(shè)為 yes 。 除了此處之外/etc/sysconfig/network 文件應(yīng)該包含以下行:
NETWORKING=yes
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
五、DHCP 配置常見錯誤排除
,通常配置DHCP 服務(wù)器很容易,不過,在這里有一些技巧可以幫助您避免出現(xiàn)問題。對服務(wù)器而言,要確保網(wǎng)卡正常工作,并具備廣播功能。對客戶機而言,還要確??蛻魴C的網(wǎng)卡正常工作。最后,要考慮網(wǎng)絡(luò)的拓撲,并考慮客戶機向 DHCP 服務(wù)器發(fā)出的廣播消息是否會受到阻礙。另外如果dhcpd 進程沒有啟動,那么可以瀏覽 syslog 消息文件來確定是哪里出了問題。這個消息文件通常是 /var/log/messages。
典型故障:
1.DHCP 服務(wù)器配置完成,沒有語法錯誤。但是網(wǎng)絡(luò)中的客戶機卻沒辦法取得IP 地址。
通常是Linux DHCP 服務(wù)器沒有辦法接收來自255.255.255.255 的 DHCP 客戶機的Request 封包造成的。一般是Linux DHCP 服務(wù)器的網(wǎng)卡沒有設(shè)置具有MULTICAST 功能。為了讓dhcpd(dhcp程序的守護進程) 能夠正常的和DHCP 客戶機溝通,dhcpd 必須傳送封包到255.255.255.255這個IP 地址,但是有些Linux 系統(tǒng)里255.255.255.255這個IP 地址被用來做為監(jiān)聽區(qū)域子網(wǎng)域(local subnet)廣播的 IP 地址,所以需要在路由表(routing table)里加入255.255.255.255以激活MULTICAST 功能;
使用命令:
route add -host 255.255.255.255 dev eth0
如果報告錯誤消息:255.255.255.255:Unkown host
那么請先修改/etc/hosts加入一行:
255.255.255.255 dhcp
2. DHCP客戶端程序和DHCP 服務(wù)器不兼容
由于Linux 有許多發(fā)現(xiàn)版本,不同版本使用DHCP 客戶端程序和DHCP 服務(wù)器也不相同。Linux 提供了四種DHCP 客戶端程序:pump, dhclient, dhcpxd, 和dhcpcd 。了解不同Linux 發(fā)行版本的服務(wù)器端和客戶端程序?qū)τ诔R婂e誤排除是必要的。筆者曾經(jīng)遇到過使用SuSE Linux 9.1 DHCP服務(wù)器和使用Mandrake Linux 9.0客戶機不兼容的情況。此時就必須更換客戶端程序。方法是先停止客戶機的網(wǎng)絡(luò)服務(wù),卸載原程序,安裝和服務(wù)器端兼容程序。附表:主要Linux 發(fā)行版使用的DHCP 客戶端。
發(fā)行版本
,缺省 DHCP 客戶端
可選 DHCP 客戶端
DHCP 客戶端啟動
腳本
附加配置文件
Red Hat Linux 9.0
dhclient
無
/sbin/ifup
/etc/sysconfig/network,
/etc/sysconfig/network-scripts/ifcfg-eth0
Debian Linux 3.0
dhclient
無
/sbin/ifup
/etc/network/interfaces,
/etc/dhclient.conf
Mandrake Linux 9.1
dhclient
dhcpcd, dhcpxd, pump
/sbin/ifup
/etc/sysconfig/network,
/etc/sysconfig/network-scripts/ifcfg-eth0, /etc/dhclient-eth0.conf
SuSE Linux 9.1
dhcpcd
dhclient
/sbin/ifup-dhcp
/etc/sysconfig/network/dhcp, /etc/sysconfig/network/ifcfg-eth0
六、DHCP 服務(wù)器的安全
1. 在指定網(wǎng)絡(luò)接口啟動DHCP 服務(wù)器
如果你的Linux 系統(tǒng)連接了不止一個網(wǎng)絡(luò)界面,但是你只想讓 DHCP 服務(wù)器啟動其中之一,
,你可以配置 DHCP 服務(wù)器只在那個設(shè)備上啟動。在 /etc/sysconfig/dhcpd 中,把界面的名稱添加到 DHCPDARGS 的列表中:
DHCPDARGS=eth0
或者直接使用命令:
Echo “DHCPDARGS=eth0”>> /etc/ sysconfig/dhcpd
這樣對于帶有兩個網(wǎng)卡的防火墻機器,更加安全:一個網(wǎng)卡可以被配置成 DHCP 客戶來從互聯(lián)網(wǎng)上檢索 IP 地址;另一個網(wǎng)卡可以被用作防火墻之后的內(nèi)部網(wǎng)絡(luò)的 DHCP 服務(wù)器。僅指定連接到內(nèi)部網(wǎng)絡(luò)的網(wǎng)卡使系統(tǒng)更加安全,因為用戶無法通過互聯(lián)網(wǎng)來連接它的守護進程。
2. 讓DHCP 服務(wù)器在監(jiān)牢中運行
所謂" 監(jiān)牢" 就是指通過chroot 機制來更改某個軟件運行時所能看到的根目錄,即將某軟件運行限制在指定目錄中,保證該軟件只能對該目錄及其子目錄的文件有所動作,從而保證整個服務(wù)器的安全。這樣即使出現(xiàn)被破壞或被侵入,所受的損失也較小。
將軟件chroot 化的一個問題是該軟件運行時需要的所有程序、配置文件和庫文件都必須事先安裝到chroot 目錄中,通常稱這個目錄為chroot jail (chroot" 監(jiān)牢" )。如果要在" 監(jiān)牢" 中運行dhcpd ,而事實上根本看不到文件系統(tǒng)中那個真正的目錄。因此需要事先創(chuàng)建目錄,并將dhcpd 復(fù)制到其中。同時dhcpd 需要幾個庫文件,可以使用ldd (library Dependency Display縮寫)命令,ldd 作用是顯示一個可執(zhí)行程序必須使用的共享庫。
ldd dhcpd