︿
Top

1、前言

DHCP,Dynamic Host Configuration Protocol,簡單說就是讓 Lan User 只要將網路線接上網卡後發出 DHCP Request 需求而區網內的 DHCP Server 便會將 IP Address、DNS、Gateway...等分配給 DHCP Client,並配合 NAT 讓 Lan User 只要一插上網路線便能連到 Internet 省去網管人員一台一台設定的麻煩。關於 DHCP 如何運作可參考本站文章 DHCP 伺服器的原理與運作流程




文章目錄

1、前言
2、實作環境
3、安裝及設定
          步驟1.安裝 DHCP Server 套件
          步驟2.建立 DHCP 設定檔 (dhcpd.conf)
          步驟3.修改 /etc/syslog.conf
          步驟4.修改 /etc/rc.conf
          步驟5.啟動 DHCP 服務
          步驟6.查看用戶租約檔及 Log 檔
4、參考
5、Me FAQ
          Q1.dhcpd: DHCPDISCOVER from 00:1e:c9:45:00:9b via 192.168.1.254: network 192.168.1/24: no free leases?
          Q2.dhcpd: DHCPINFORM from 192.168.1.3 via bce1: not authoritative for subnet 192.168.1.0?
          Q3.想要在 DHCP Client Range 中某些 IP 位址不分配在內該如何設定?





2、實作環境

  • FreeBSD 8.2-RELEASE-p2
  • isc-dhcp41-server-4.1.e,2 





3、安裝及設定

步驟 1. 安裝 DHCP Server 套件

切換到 ports tree 路徑安裝 dhcp server 套件。
cd  /usr/ports/net/isc-dhcp41-server  //切換到安裝路徑
make install clean                    //安裝並清除暫存檔案




步驟 2. 建立 DHCP 設定檔 (dhcpd.conf)

建立 DHCP 設定檔 /usr/local/etc/dhcpd.conf (可複製範例檔 dhcpd.conf.sample 後再修改),修改內容如下:
 # vi /usr/local/etc/dhcpd.conf        //修改 dhcpd.conf 設定檔
 option domain-name "weithenn.org";   //DNS 尾碼 (通常為公司網域名稱)
 option domain-name-servers 8.8.8.8, 168.95.192.1;  //DNS Server 資訊
 option time-offset 28800;    //本地主機時間與格林威治的時間差 (快八小時)
 default-lease-time 7200;     //預設 DHCP Client 的租用時間 (單位為秒)
 max-lease-time 86400;        //DHCP Client 的最大租用時間 (單位為秒)
 ddns-update-style none;      //關閉動態 DNS 功能
 log-facility local7;         //開啟 DHCP Log 功能
 authoritative;               //表示此台 DHCP 伺服器為區域中的官方伺服器
 ###IT Room
 subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 10.0.0.200;      //指定 DHCP Client IP 位址為 100 ~ 200
  option routers 192.168.1.254;
 }
 ###固定 IP 位址 For MAC Address
 host passacaglia {
 hardware ethernet 00:50:FC:8E:D2:3D;  //指定分配給此 MAC Address 的固定 IP
 fixed-address 192.168.1.78;           //指定分配固定 IP 位址
 }




步驟 3. 修改 /etc/syslog.conf

修改 /etc/syslog.conf 設定檔使得屆時的 DHCP 訊息能寫入指定的 Log 檔案內。
vi /etc/syslog.conf
 local7.*              /var/log/dhcpd    //加上此行

修改完成後建立 /var/log/dhcpd 空檔以便屆時 DHCP 訊息能寫入檔案內。
touch /var/log/dhcpd
完成建立空檔案後就重新載入 syslogd 服務即可。
/etc/rc.d/syslogd reload



步驟 4. 修改 /etc/rc.conf

修改 /etc/rc.conf 設定檔,內容如下
vi /etc/rc.conf
 dhcpd_enable="YES"       //加入此行以便開機自動帶起 DHCP 服務
 dhcpd_flags="-q"         //啟動 DHCP 服務時加上此參數
 dhcpd_conf="/usr/local/etc/dhcpd.conf"   //DHCP 服務讀取的設定檔路徑
 dhcpd_ifaces="bce1"      //當有多片網卡時,可指定 Listen DHCP Service 網卡
 dhcpd_withumask="022"




步驟 5. 啟動 DHCP 服務

執行如下指令以啟動 DHCP 服務
/usr/local/etc/rc.d/isc-dhcpd start   //啟動 DHCP 服務



步驟 6. 查看用戶租約檔及 Log 檔

可查看 /var/db/dhcpd/dhcpd.leases 了解 DHCP Client 的租約情況。
tail /var/db/dhcpd/dhcpd.leases     //DHCP 記錄檔以便查看 Client 租約內容
 }
 lease 192.168.1.3 {
   starts 4 2011/07/21 08:40:56;
   ends 4 2011/07/21 10:40:56;
   tstp 4 2011/07/21 10:40:56;
   cltt 4 2011/07/21 08:40:56;
   binding state free;
   hardware ethernet 00:1d:72:85:41:3b;
   uid "\001\000\035r\206@\233";
 }

也可查看 DHCP Log 也可看到詳細的 DHCP Server 及 Client 取得 IP 位址的流程。
tail /var/log/dhcpd
 Jul 13 09:47:33 nat dhcpd: DHCPDISCOVER from 00:1d:72:85:41:3b (Weithenn-PC) via bce1
 Jul 13 09:47:34 nat dhcpd: DHCPOFFER on 192.168.1.3 to 00:1d:72:85:41:3b (Weithenn-PC) via bce1
 Jul 13 09:47:34 nat dhcpd: DHCPREQUEST for 192.168.1.3 (192.168.1.254) from 00:1d:72:85:41:3b (Weithenn-PC) via bce1
 Jul 13 09:47:34 nat dhcpd: DHCPACK on 192.168.1.3 to 00:1d:72:85:41:3b (Weithenn-PC) via bce1






4、參考






5、Me FAQ

Q1. dhcpd: DHCPDISCOVER from 00:1e:c9:45:00:9b via 192.168.1.254: network 192.168.1/24: no free leases?

Error Message:
使用者無法抓到 DHCP IP (169.254.x.x) 查看 /var/log/messages 出現如下錯誤訊息
Dec 27 10:21:29 dhcp dhcpd: DHCPDISCOVER from 00:1e:c9:45:00:9b via 192.168.1.254: network 192.168.1/24: no free leases
Ans:
從字義上 no free leases 可知是 DHCP IP 發完不夠了所產生的訊息,由於當初定義的 DHCP Client 數量太少所導致,將 DHCP IP Range 開大後 DHCP Client 即可順利抓到 IP 了。



Q2. dhcpd: DHCPINFORM from 192.168.1.3 via bce1: not authoritative for subnet 192.168.1.0?

Error Message:
查看 DHCP Log 內容時每隔一段時間就會出現如下訊息
#tail /var/log/dhcpd
 Jul 13 09:22:14 nat dhcpd: DHCPINFORM from 192.168.1.3 via bce1: not authoritative for subnet 192.168.1.0
 Jul 13 09:22:17 nat dhcpd: DHCPINFORM from 192.168.1.4 via bce1: not authoritative for subnet 192.168.1.0
 Jul 13 09:23:04 nat dhcpd: DHCPINFORM from 192.168.1.7 via bce1: not authoritative for subnet 192.168.1.0
 Jul 13 09:23:07 nat dhcpd: DHCPINFORM from 192.168.1.9 via bce1: not authoritative for subnet 192.168.1.0

Ans:
請在 DHCP 設定檔 (/usr/local/etc/dhcpd.conf) 內加上 authoritative; 後,重新啟動 DHCP 服務即可解決此一問題。



Q3. 想要在 DHCP Client Range 中某些 IP 位址不分配在內該如何設定?

Error Message:
原來設定檔中指定 DHCP Client IP 位址為 100 ~ 200,想要排除 151 ~ 160 該如何設定?
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 10.0.0.200;                   //指定 DHCP Client IP 位址為 100 ~ 200
  option routers 192.168.1.254;
}   

Ans:
將設定內容改成如下即可:
subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 10.0.0.150;   //指定 DHCP Client IP 位址為 100 ~ 150
  range 192.168.1.161 10.0.0.200;   //指定 DHCP Client IP 位址為 161 ~ 200
  option routers 192.168.1.254;
}   
文章標籤: