twbsd.org
 
  Select Language: Home  SmbFTPD Bug Tracker  Forum 

書籍資料

ch00 序.htm

ch01 FreeBSD 簡介.htm

ch02 安裝 FreeBSD.htm

ch03 UNIX 系統入門.htm

ch04 使用者管理.htm

ch05 網路設定.htm

ch06 檔案系統管理.htm

ch07 系統安全.htm

ch08 編譯核心.htm

ch09 系統調校.htm

ch10 軟體安裝.htm

ch11 X Window 的使用.htm

ch12 NAT 及防火牆.htm

ch13 網頁伺服器.htm

ch14 網頁伺服器進階應用.htm

ch15 FTP 伺服器.htm

ch16 郵件伺服器.htm

ch17 郵件伺服器進階應用.htm

ch18 DHCP伺服器.htm

ch19 資料庫系統.htm

ch20 Samba 網路芳鄰.htm

ch21 NFS.htm

ch22 DNS 伺服器.htm

ch23 指令應用.htm

ch24 Shell Script.htm

cha1 附錄A etc目錄下的檔案介紹.htm

cha2 附錄B 製作 FreeBSD 安裝光碟.htm

cha3 附錄C 版權宣告.htm

 


View printable page

第十八章 DHCP伺服器

DHCP (Dynamic Host Configuration Protocol) 伺服器可以用來讓網路中的電腦自動取得 IP 設定。架設 DHCP 伺服器可以讓網路中的電腦設定更容易,您不必再去一台台為每一台電腦設定 IP,這對於大型網路而言可以大幅減少管理者的負擔。

讀完本章後,您將了解下列主題:

  • 如何架設 DHCP 伺服器。
  • DHCP 伺服器的運作原理。
  • 如何使用 DHCP 伺服器來追蹤網路問題。

18.1 DHCP 簡介

一台電腦要連上網路必須要先設定 IP、子網路遮罩、路由、DNS 等。一般使用者對這些網路設定並不熟,如果要使用者自己設定這些項目很麻煩。而且,如果網路上有十幾台,甚至幾百台電腦,如果由 MIS 人員分配 IP、設定電腦實在太累人了。日後如果有新的電腦加入您的網域,系統管理者又要一台台去設定網路資料。這種無趣又乏味的設定工作對管理者而言實在是浪費時間。如果您有使用筆記型電腦,在沒有 DHCP 的情形下,在公司要設定一次 IP,回到家又要再設定一次,太麻煩了。

如果有了 DHCP 伺服器,網路上的電腦只要設定好自動取得 IP,系統開機後就可以自動取得網路設定。管理者不需要告訴使用者該使用什麼 IP,不必再為一台台電腦設定 IP,生活從此更美好了。有了 DHCP 伺服器之後,使用筆記型電腦的人只要設定好使用 DHCP,將電腦插上網路線後就可以自動取得 IP,而不必再做任何設定。

在設定 DHCP 伺服器時,我們會設定要讓使用者自動取得的 IP 位址範圍、路由、DNS,在啟動 DHCP 伺服器之後,這些資訊就會放到記憶體中等客戶端來問。當一台使用 DHCP 自動取得 IP 的電腦連上網路後,它會以廣播的方式詢問網路上有沒有 DHCP 伺服器,而 DHCP 伺服器會回應,並送給客戶端網路設定的資料。客戶端收到這些資訊後,就將它設定為自己的 IP、DNS 等。

如果以 DHCP 的術語來說,DHCP 分配出一個 IP 的情形叫做 DHCP「出租」IP 給客戶端。DHCP 的租約是有期限的,時間到了之後,客戶端就必須重新取得一次 IP,不過客戶端可以要求繼續使用同一個 IP。為了避免有機器一直要求使用同一個 IP,我們也可以設定同一個 IP 最長的租期是多久。

除了動態的分配 IP 外,DHCP 也可以同時設定指派固定 IP。每一張網路卡都會有一個固定的網路卡位址 (MAC、Physical Address),例如,我們可以在 FreeBSD 中使用指令 ifconfig 或是在 Windows 中使用 ipconfig/all 來看到 MAC 的資訊。以下列為例:

# ifconfig
fxp0: flags=88c3<UP,BROADCAST,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500
options=b<RXCSUM,TXCSUM,VLAN_MTU>
inet6 fe80::202:b3ff:fe48:7c74%fxp0 prefixlen 64 scopeid 0x1
inet 10.0.0.1 netmask 0xff000000 broadcast 10.255.255.255
ether 00:02:b3:48:7c:74
media: Ethernet autoselect (100baseTX <full-duplex>)
status: active

上列粗體部份「00:02:b3:48:7c:74」就是網路卡位址,我們可以設定某個網路卡位址一定使用固定 IP,如此一來,只要這一台機器使用 DHCP 要求 IP 時,DHCP 伺服器都會給它固定的位址。

如果您的機器有多張網路卡,在設定 DHCP 時,我們可以指定只要接受某個網卡進來的要求。DHCP 伺服器所需要的系統資源很少,所以通常除了 DHCP 外,我們還會在同一台機器上架設其它服務。例如,NAT、防火牆、網頁伺服器、或 DNS 等。以一個公司而言,DHCP 是一種內部所使用的伺服器,它和網路上要使用 DHCP 服務的電腦一定有所連結,中間不會有防火牆阻擋了 DHCP 的封包。通常我會將 DHCP 和 NAT、或 DNS 伺服器放在一起。

18.2 安裝 DHCP 伺服器

在安裝 DHCP 伺服器之前,請確定您的核心有支援 bpf 裝置。FreeBSD 的 GENERIC 核心預設就有支援 bpf 裝置,如果您有修改過核心,請重新加入 bpf 的支援。

DHCP 伺服器有很多軟體可以使用,我們使用 ISC DHCP,請使用下列指令安裝:

# cd /usr/ports/net/isc-dhcp3-server
# make install clean

執行上述指令後,將出現下列畫面:

圖 18-1

我們只要使用預設的設定即可。

安裝完後,在 /usr/local/etc/dhcpd.conf.sample 有一份預設的 DHCP 設定檔。我們可以將它複製成 /usr/local/etc/dhcpd.conf 並進行修改。以下是 筆者的設定檔範例:

authoritative;
option domain-name "twbsd.org";
option domain-name-servers 168.95.1.1;
option subnet-mask 255.255.0.0;
option broadcast-address 192.168.255.255;
# 本地時間與格林威治時間差(快八小時)。
option time-offset 28800;
# 預設租期時間長度: 一天(秒)。
default-lease-time 86400;
# 最大租期長度: 十天(秒)。
max-lease-time 864000;
ddns-update-style none;

# 子網路與網路遮罩。
subnet 192.168.0.0 netmask 255.255.0.0 {
	# 動態分配 IP 位置範圍。
	range dynamic-bootp 192.168.100.1 192.168.100.253;
	range dynamic-bootp 192.168.101.1 192.168.101.253;
	# 子網路路由器。
	option routers 192.168.1.1;
}

# 設定使用固定 IP 的機器
host alexserver {
	hardware ethernet 00:07:e9:03:39:80;
	fixed-address 192.168.1.2;
}

dhcpd.conf 設定檔中,每一個項目的說明如下:

  • authoritative:如果這台 DHCP 伺服器是網路中的「官方」伺服器,則加這一行。
  • option domain-name:用來設定網域名稱。
  • option domain-name-servers:設定 DNS 伺服器 IP。
  • option subnet-mask:設定要給 client 的預設子網路遮罩。
  • option broadcast-address:設定要給 client 的預設廣播位址。
  • option time-offset:設定本地時間和格林威治時間差幾秒。
  • default-lease-time:設定預設的租期。租期以秒計算,租約到期後,伺服器會回收該 IP。
  • max-lease-time:當租約到期後,客戶端可以繼續要求使用同一個 IP,這個選項控制該 IP 最長可以被使用多久。
  • ddns-update-style:這是用來設定是否支援 ddns 更新 IP,這個選項一定要存在才不會有錯誤。

接下來的 subnet 設定中,我們所使用的子網路是 192.168.0.0/255.255.0.0,DHCP 的 IP 分配範圍是 192.168.100.1~192.168.100.253 及 192.168.101.1~192.168.100.253。並設定預設的路由器為 192.168.1.1。

另外,我們設定了一個命名為 alexserver 的設定,只要網路卡位址是 00:07:e9:03:39:80 的電腦則指派 192.168.1.2 這個固定 IP 給它。

接下來請在 /etc/rc.conf 中加入下列這一行,以在開機時啟動 DHCP 伺服器:

dhcpd_enable="YES"

如果您有多張網路卡分屬於不同的網域,則在 dhcpd.conf 必須設定這些網域都必須要有設定值。如果您只想要 DHCP 監聽某個網路卡,則可以在 /etc/rc.conf 中加入下列設定,讓 DHCP 只接收該網卡進來的要求:

dhcpd_ifaces="fxp1"

最後我們就可以使用下列指令啟動 DHCP 伺服器了:

# /usr/local/etc/rc.d/isc-dhcpd.sh start

 

18.3 客戶端 DHCP 設定

在客戶端設定方面,如果您使用的是 FreeBSD,請參考「網路設定」一章中關於使用 DHCP 動態取得 IP 的設定說明。

如果您使用的是 Windows 2000/XP,請以滑鼠右鍵點選桌面上的「網路上的芳鄰」,選「內容」後出現「網路連線」的畫面後,點選「區域網路」後出現下列畫面:

圖 18-2

接著請選則「Internet Protocol (TCP/IP)」後,點選「內容」出現下列畫面:

圖 18-3

接下來按確定即可使用 DHCP。

18.4 DHCP 及系統管理

DHCP 伺服器會將所有出租過的 IP 資訊存放在 /var/db/dhcpd/dhcpd.leases 中。我們來看看該檔案的內容:

lease 192.168.101.99 {
   starts 1 2005/10/03 01:47:16;
   ends 2 2005/10/04 01:47:16;
   binding state active;
   next binding state free;
   hardware ethernet 00:02:b3:1d:61:7a;
   uid "\001\000\002\263\035az";
   client-hostname "test-winxp";
}
lease 192.168.101.44 {
   starts 1 2005/10/03 02:09:40;
   ends 2 2005/10/04 02:09:40;
   binding state active;
   next binding state free;
   hardware ethernet 00:02:b3:26:ca:64;
   uid "\001\000\002\263&\312d";
   client-hostname "build";
}

我們可以看到每一個區段都是一次 IP 出租的資訊。這些資訊中包含了 IP、開始時間、網路卡位址、客戶端電腦名稱等等。這些資訊有的時候對於我們管理網路中的電腦還蠻有用的。

舉例而言,假設有人不小心將電腦設定成您的 IP,在 FreeBSD 的 console 下您會看到下列訊息:

arp: 192.168.1.9 moved from 00:c5:b5:5d:9c:94 to 00:aa:00:01:b7:54 on fxp1
arp: 192.168.1.9 moved from 00:aa:00:01:b7:54 to 00:e9:38:54:92:c3 on fxp1
arp: 00:0c:29:07:0e:7d is using my IP address 192.168.0.4!

如果是有人在使用您的 IP,您會看到如上述最後一條訊息「xxx is using my IP address」。如果是另外一台機器的 IP 改變了,您會看到「xxx moved from xxx to xxx」的訊息。從這些訊息中,我們可以知道誤用 IP 的人的網路卡位址。以上述範例的第三行為例,其網路卡位址是「00:0c:29:07:0e:7d」。接下來,您就可以去 dhcpd.leases 中檢查,該網路卡位址是不是曾經使用過 DHCP 伺服器。如果有,則您可以找到它的「client-hostname」,並經由該資訊找到該電腦。

 

Top Ths file was last modified: 2007 August 02 23:00:15.

Copyright © 2002-2017 Wang, Chun-Pin from www.twbsd.org. All rights reserved.