72 FreeBSD連載:設置和使用DHCP

設置和使用DHCP在FreeBSD的Packages Collection中,有兩個不同的DHCP客戶機和服務器軟件,一個為ISC-DHCP,另一個為WIDE-DHCP,兩個軟件都包括了DHCP客戶軟件和服務器軟件,其中ISC-DHCP更為常用一些,這里就以ISC-DHCP為例介紹在FreeBSD上安裝和設置DHCP 。
【72 FreeBSD連載:設置和使用DHCP】為了支持DHCP,首先要確認系統內核支持偽設備bpfilter,如果沒有,就需要重新編譯內核 。偽設備bpfilter是一個允許應用程序接收網絡的原始數據包的界面,這樣應用程序就能接收目的地址非本機IP地址的數據包了 。DHCP使用bpfilter的原因是在DHCP設置好計算機的TCP/IP之前,由于計算機本身沒有定義IP地址,而TCP/IP堆棧本身不會接收不具備本機IP地址的數據包 。要接收DHCP服務器發送回客戶的數據包,就需要繞過TCP/IP堆棧,而必須使用偽設備bpfilter 。
pseudo-devicebpfilter4 定制內核之后,還要保證/dev/目錄下具有對應bpfilter的設備文件 。
# cd /dev# sh MAKEDEV bpf0 bpf1 bpf2 bpf3從Packages Collecion中安裝DHCP軟件,這將DHCP軟件中的dhcpd,dhclIEnt和dhcprelay安裝到/usr/local/sbin目錄下 。
$ ls /usr/local/sbin/dhc*/usr/local/sbin/dhclient/usr/local/sbin/dhcpd/usr/local/sbin/dhcrelay設置服務器
為了設置DHCP服務器dhcpd,首先就要設置其配置文件/etc/dhcpd.conf 。這個配置文件語法簡單,比較容易理解 。
server-identifier 192.168.3.1;subnet 192.168.3.0 netmask 255.255.255.0 {range 192.168.3.10 192.168.3.20;default-lease-time 600;max-lease-time 7200;option subnet-mask 255.255.255.0;option broadcast-address 192.168.3.255;option routers 192.168.3.1;option domain-name-servers 192.168.3.1;option domain-name "exampleorg.org.cn";}host a1 {hardware ethernet 00:90:27:4e:92:09;fixed-address 192.168.3.32;option subnet-mask 255.255.255.0;option broadcast-address 192.168.3.255;option routers 192.168.3.1;option domain-name-servers 192.168.3.1;option domain-name "exampleorg.org.cn";}基本的dhcpd.conf首先使用server-identifier定義了本服務器的IP地址,這對于有多個IP地址的服務器系統十分重要,一般不必設置這個參數,dhcpd能自動偵測 。然后定義要分配IP地址的客戶機組,每組擁有一個可用的IP地址范圍 。有兩種客戶機組的劃分方式,一種為指定子網段來區分,一種為指定主機來區分 。
這個例子中的第一組定義了一個子網192.168.3.0/24,這個子網段內,可供DHCP服務器分配的IP地址范圍為192.168.3.10到192.168.3.20,這個地址范圍也可以不是連續的,不連續的地址可以使用多個range設置參數來設置 。此外,還設置了這一組內分配的IP地址的租期限制default-lease-time和max-lease-time,可以使用缺省值,而不必改動 。后面的option參數設置DHCP的附加功能,例如設置DHCP客戶的網絡掩碼、廣播地址、DNS服務器、域名等等 。事實上這些option設置選項也可以被用作全局選項設置,即放置在server-identifier之后,對所有的客戶機組起作用 。
例子的第二組是針對某個特定主機a1進行的設置,這個主機被限定為以太網地址為hardware ethernet參數值的計算機,將給這個計算機分配一個固定地址 。這種分配方式實際等價于固定地址分配方式,唯一的好處就是能夠對IP地址進行集中管理,不必每個計算機分別設置了 。這里同樣也可以使用option參數,設置TCP/IP的參數 。
dhcpd.conf中還能有更多的組,包括對非本網段的子網上的客戶機指定的組 。
當設置了dhcpd.conf之后,就能啟動dhcpd守護進程了,由于計算機會有多個網絡界面,需要指定dhcpd服務器的網絡界面,以便回應相應界面上的DHCP請求 。
# /usr/local/sbin/dhcpd fxp0在調試階段,可以使用-d參數,這樣dhcpd就不會進入后臺運行,而一直保留在前臺,并顯示各個與客戶計算機通信的過程 。當一切都調試完畢之后,就能去除-d參數,并將執行命令放入rc.local啟動腳本中,以便系統能夠自動執行 。

推薦閱讀