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、參考
- FreeBSD Handbook - Chapter 29 Network Servers - 29.5 Automatic Network Configuration (DHCP)
- FreeBSD 使用手册 - 第29章 网络服务器 - 29.5 网络自动配置 (DHCP)
- twbsd.org - 第十八章 DHCP 伺服器
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;
}