站長新書 站長開講 首頁 最新文章 站長著作及審校 FreeBSD 筆記 Linux 筆記 Windows 筆記 虛擬化筆記 網管人雜誌 遊山玩水 關於本站
站長新書 VMware vSphere ICM 團購開跑了!!

DHCP-發放 IP 資訊給 Lan User

前言

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

實作環境

安裝及設定

步驟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";                 //DHCP Client 取得的 DNS 尾碼 (通常為公司網域名稱)
 option domain-name-servers 8.8.8.8, 168.95.192.1;  //DHCP Client 取得 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 的 DHCP Client 固定 IP
 fixed-address 192.168.1.78;                        //指定分配給上述 MAC Address 的 DHCP Client 固定 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

 #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 服務

 #/usr/local/etc/rc.d/isc-dhcpd start            //啟動 DHCP 服務

步驟4.查看用戶租約檔及 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

參考

[FreeBSD Handbook - Chapter 29 Network Servers - 29.5 Automatic Network Configuration (DHCP)]

[FreeBSD 使用手册 - 第29章 网络服务器 - 29.5 网络自动配置 (DHCP)]

[twbsd.org - 第十八章 DHCP 伺服器]

Me FAQ

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

Error Meaage:

使用者無法抓到 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 了。

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

Error Meaage:

查看 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 服務即可解決此一問題。

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

Error Meaage:

原來設定檔中指定 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;
 }   
Go To Oddmuse OrgGo To FreeBSD OrgCreative Commons 2.5 Taiwansitestates.com