歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

架設DHCP全攻略

DHCP 的好處﹐我已經在“網絡基礎”之“DHCP 協議”裡面花了不少筆墨了﹐您應該知道的了﹐這裡也就不再多說。     設置DHCP     別以為我在“網絡基礎”那裡說得那麼復雜﹐但在 Linux 下面設置 DHCP 一點也不復雜﹐您所有要做的只有一個文件﹕/etc/dhcpd.conf 。     下面﹐我用我自己的設置文件來說說怎麼修改這個文件﹕     default-lease-time 259200;   max-lease-time 777600;   option domain-name "siyongc";     這幾行我放在文件的開頭部份。第一和第二行我定義出租約的預設期限和最高期限﹐數值以秒來計算﹐也就是‘三天’和‘九天’。   然後我指定了網絡使用的網域名稱。     接下來是﹕     subnet 192.168.0.0 netmask 255.255.255.0 {   range 192.168.0.21 192.168.0.30;   range 192.168.0.121 192.168.0.230;   option broadcast-address 192.168.0.255;   option routers 192.168.0.17;   option domain-name-servers 192.168.0.17, 203.56.8.1;   }     subnet 203.30.35.128 netmask 255.255.255.224 {   range 203.30.35.140 203.30.35.157;   option broadcast-address 203.30.35.159;   option routers 203.30.35.134   option domain-name-servers 203.30.35.134 203.56.8.1;   }     這裡﹐我一共有兩塊網卡分別向兩個網絡提供 DHCP 服務。在第一個網絡(192.168.0.0)下面我指定出兩個 scope ﹐也就是用來分配 DHCP 的 IP 范圍﹕192.168.0.21 到 192.168.0.30 和 192.168.0.121 到 192.168.0.230 。另外﹐我還指定了‘廣播地址’﹑‘路由器地址’和‘DNS的地址’。   第二個網絡因為使用了27 bit 的 netmask﹐所以 Net ID 是﹕ 203.30.35.128 ﹐而廣播地址則是﹕203.30.35.159 。     最後﹐我還設置了這樣的句子﹕     host pii266 {   hardware ethernet 48:54:E8:27:75:77;   fixed-address 192.168.0.15;   }     正如我們所知﹐通過 DHCP 獲取 IP 的客戶端機器﹐如果其租約已經過期了﹐那麼好可能失去了原來的 IP 。不過﹐我又想我的 pii266 這台主機永遠都使用一個固定的 IP 地址。上面的句子就是為了這個目的而設的了。首先﹐我得找到在 pii266 這台機器上連接到我這個網絡的界面種類和硬件地址﹐也就是﹕ethernet 48:54:E8:27:75:77 ﹐然後我用‘fixed-address’將 192.168.0.15 這個不在 DHCP scopes 之內的 IP 分配給 pii266。     如果您參考我上面這個文件進行設置的話﹐務必留意每一個標點符號﹐有些數字是用‘﹐’來分隔﹐而有些則用空格鍵來分隔﹔而每一個句子﹐都要用‘﹔’做結尾(和 perl script 一樣)﹐否則﹐下面一行將會視為該行的延續部份﹐而不會當是新的一行看待。     當這個 /etc/dhcpd.conf 文件設置好之後﹐您還要用下面的命令創建一個 /etc/dhcp.leases 的空白文件﹕   toUCh /etc/dhcp.leases   注意﹕您不要嘗試自行修改這個文件﹐假如該文件有問題的話﹐將之刪除或改名﹐然後再用 touch 命令創建就是了。     我們在“網絡基礎”中已經知道﹕在 DHCP 運作的初期﹐client 是使用廣播方式來查詢 DHCP 信息的。問題是我這裡有兩塊網卡﹐DHCP 要響應 client 的查詢時很難判斷出要傳到哪個網絡中去﹐因為一開始的時候 client 端還沒分配到 IP 地址﹐所以我在我的 /etc/hosts 中增加了這樣一行﹕     255.255.255.255 all-ones all-ones     然後﹐我還在 /etc/rc.d/rc.local 中增加了這樣的敘述﹕   # Lines added by netman,   # for enabling DHCP routing on multi-nics environement:   echo "Adding IP routing for DHCP server..."   route add -host 255.255.255.255 dev eth0   route add -host 255.255.255.255 dev eth1     這樣﹐當機器激活的時候﹐DHCP 的路由就設置好了。然而看來現在新版的 Linux 似乎無需再擔心這個問題了﹐假如您發現 DHCP 未能成功提供服務的話﹐再考慮使用這個辦法吧。     最後您要做的是﹐重新激活 DHCP 服務﹕   /etc/rc.d/init.d/dhcpd restart   留意一下有沒有錯誤信息﹐有則做出適當修改﹐再來嘗試激活 dhcpd (使用 start 代替 restart)。     為 IP Alias 設置 DHCP     在某些場合中﹐我們或許會運用到 IP Alias 來連接網絡。這時候﹐我們還可以為 alias 所在的網絡提供 DHCP 服務呢﹗不過﹐要留意一點是﹕您只能為一塊界面提供一個 sub-net 的服務﹐就算界面上面捆綁了好幾個 alias 也一樣。     設置也是蠻簡單的啦﹕     將 alias 所在的網絡設置好。   然後將 /etc/dhcpd.conf 原本關於原有 IP 所在的 subnet 取消。   只留下 alias 所在網絡的 range 就可以了。     在我的測試中﹐/etc/dhcpd.conf 不是最重要的﹐關機還是要確定 ip alias 已經成功激活﹐而且 routing 一定要設置好。     下面是我初步整理出來的流程﹕     1﹐激活 dhcpd:     如果您有任何 interface 已經 up 起來了   &&   且 routing 已經設置好 {     如果原有界面 sub-net 已經 declare 好 {   ## 那麼無論您是否 delcare 好 alias 所在 sub-net   dhcpd 可以激活成功。   }     否則 { #如果原有界面 sub-net 沒有 declare   如果 alias 所在 sub-net 已經 declare 的時候 {   如果 alias 所在 sub-net 已經設置好 routing {   dhcpd 可以成功激活   }   否則 { #如果 alias 所在 sub-net 還沒設置好 routing   當您激活 dhcpd 的時候﹐您應該會得到﹕   No subnet declaration for ethx(原有 IP 網絡)   的信息而失敗。   }   }     否則 { #如果 alias 所在 sub-net 沒有 declare 的話   也會得到 No subnet declaration for ethx 錯誤   }   }   }     -------   2﹐運作 dhcpd     當您的 dhcpd 成功激活之後 {     如果您有 declear 原有界面所在 sub-net {   有 range 設置 {   ## 那麼無論您是否設置好 alias 所在的 sub-net 和 range   dhcpd 都只會offer 原有界面的 sub-net   }   否則 { #沒有 range 設置   ## 那麼無論您是否設置好 alias 所在的 sub-net 和 range   dhcpd 收到 DHCPDISCOVER 之後都會響應說﹕   no free leases on subnet (原有界面之 sub-net)   }     否則 { #如果您並沒有 declear 原有界面所在 sub-net   如果有 alias 所在 sub-net { #沒有的話 dhcpd 激活的時候已失敗   有 range 設置 {   dhcpd 會 offer alias 所在 sub-net   }   否則 { #沒有 range 設置   dhcpd 收到 DHCPDISCOVER 之後都會響應說﹕   no free leases on subnet (alias 所在 sub-net)   }   }   }     ========   如果看我的范例﹐會是這樣﹕     default-lease-time 259200;   max-lease-time 777600;   option domain-name "siyongc";     ## 下面我將原有界面 sub-net 批注起來   #subnet 192.168.0.0 netmask 255.255.255.0 {   # range 192.168.0.21 192.168.0.30;   # range 192.168.0.121 192.168.0.230;   # option broadcast-address 192.168.0.255;   # option routers 192.168.0.17;   # option domain-name-servers 192.168.0.17, 203.56.8.1;   #}     ## 這才是 alias 所在 sub-net 的設置﹕   subnet 192.168.1.0 netmask 255.255.255.0 {   range 192.168.1.21 192.168.1.30;   option broadcast-address 192.168.1.255;   option routers 192.168.1.17;   option domain-name-servers 192.168.1.17, 203.56.8.1;   }     ## 這裡也還可以用 fixed IP 的辦法來分配   ## 不過為了測試﹐我暫時批注起來了   #host pii266 {   # hardware ethernet 00:00:21:D2:30:DA;   # fixed-address 192.168.0.15;   #}     測試DHCP     要測試 HDCP 是否工作還不簡單﹐找一台在同一個網絡的 Linux 機器﹐將它的界面轉成使用 DHCP 就是了。例如﹐修改 /etc/sysconfig/network-scripts/ifcfg-eth0 這個文件﹐將之改成這樣﹕     DEVICE="eth0"   IPADDR=""   NETMASK=""   ONBOOT="yes"   BOOTPROTO="dhcp"     然後執行 ifdown eth0 和 ifup eth0 將界面重新激活﹐再執行 ifconfig 您就知道DHCP 是否運作了。     如果您使用的是 Windows 系統﹐那麼﹕ 開始 --> 設置 --> 控制台 --> 網絡 --> ‘TCP/IP ->網卡’--> IP 地址 --> 自動取得 IP 地址 --> 確定 --> 確定 -->重新激活機器。當登錄之後﹐執行﹕ 開始 --> 執行 --> winipcfg --> 尚有信息 。您就可以一驗證 DHCP 的設置了。如果您要在 DHCP 服務器那端改動設置﹐可以按“全部更新”看看新設置是否生效  




 



Copyright © Linux教程網 All Rights Reserved