DHCP (Dynamic Host Configuration Protocol) 伺服器可以用來讓網路中的電腦自動取得 IP 設定。架設 DHCP 伺服器可以讓網路中的電腦設定更容易,您不必再去一台台為每一台電腦設定 IP,這對於大型網路而言可以大幅減少管理者的負擔。
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上列粗體部份「00:02:b3:48:7c:74」就是網路卡位址,我們可以設定某個網路卡位址一定使用固定 IP,如此一來,只要這一台機器使用 DHCP 要求 IP 時,DHCP 伺服器都會給它固定的位址。mtu 1500 options=b 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 ) status: active
如果您的機器有多張網路卡,在設定 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; } |
- 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,這個選項一定要存在才不會有錯誤。
另外,我們設定了一個命名為 alexserver 的設定,只要網路卡位址是 00:07:e9:03:39:80 的電腦則指派 192.168.1.2 這個固定 IP 給它。
接下來請在 /etc/rc.conf 中加入下列這一行,以在開機時啟動 DHCP 伺服器:
dhcpd_enable="YES" |
dhcpd_ifaces="fxp1" |
# /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,在 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! |