動态主機配置協定(dhcp) 是一種用于使主機能夠從伺服器自動配置設定 ip 位址和相關的網絡配置的網絡協定。
dhcp 伺服器配置設定給 dhcp 用戶端的 ip 位址處于“租用”狀态,租用時間通常取決于用戶端計算機要求連接配接的時間或 dhcp 伺服器配置的時間。
以下是 dhcp 實際工作原理的簡要說明:
一旦用戶端(配置為使用 dhcp 的機器)連接配接到網絡後,它會向 dhcp 伺服器發送dhcpdiscover 資料包。
當 dhcp 伺服器收到 dhcpdiscover 請求封包後會使用 dhcpoffer 包進行回複。
然後用戶端擷取到 dhcpoffer 資料包,并向伺服器發送一個 dhcprequest 包,表示它已準備好接收 dhcpoffer 包中提供的網絡配置資訊。
最後,dhcp 伺服器從用戶端收到 dhcprequest 封包後,發送 dhcpack 封包,表示現在允許用戶端使用配置設定給它的 ip 位址。
<a target="_blank"></a>
在這步中我們會使用如下的測試環境。
dhcp server - ubuntu 16.04
dhcp clients - centos 7 and fedora 25
1、 運作下面的指令來安裝 dhcp 伺服器包,也就是 dhcp3-server。
<code>$ sudo apt install isc-dhcp-server</code>
2、 安裝完成後,編輯 <code>/etc/default/isc-dhcp-server</code> 使用 <code>interfaces</code> 選項定義 dhcpd 響應 dhcp 請求所使用的接口。
比如,如果你想讓 dhcpd 守護程序監聽 <code>eth0</code>,按如下設定:
<code>interfaces="eth0"</code>
3、 dhcp 配置的主檔案是 <code>/etc/dhcp/dhcpd.conf</code>, 你必須填寫會發送到用戶端的所有網絡資訊。
并且 dhcp 配置中定義了兩種不同的聲明,它們是:
<code>parameters</code> - 指定如何執行任務、是否執行任務,還有指定要發送給 dhcp 用戶端的網絡配置選項。
<code>declarations</code> - 定義網絡拓撲、指定用戶端、為用戶端提供位址,或将一組參數應用于一組聲明。
4、 現在打開并修改主檔案,定義 dhcp 伺服器選項:
<code>$ sudo vi /etc/dhcp/dhcpd.conf</code>
在檔案頂部設定以下全局參數,它們将應用于下面的所有聲明(請指定适用于你情況的值):
<code>option domain-name "tecmint.lan";</code>
<code>option domain-name-servers ns1.tecmint.lan, ns2.tecmint.lan;</code>
<code>default-lease-time 3600;</code>
<code>max-lease-time 7200;</code>
<code>authoritative;</code>
5、 現在定義一個子網,這裡我們為 <code>192.168.10.0/24</code> 區域網路設定 dhcp (請使用适用你情況的參數):
<code>subnet 192.168.10.0 netmask 255.255.255.0 {</code>
<code>option routers 192.168.10.1;</code>
<code>option subnet-mask 255.255.255.0;</code>
<code>option domain-search "tecmint.lan";</code>
<code>option domain-name-servers 192.168.10.1;</code>
<code>range 192.168.10.10 192.168.10.100;</code>
<code>range 192.168.10.110 192.168.10.200;</code>
<code>}</code>
6、 要給特定的客戶機配置設定一個固定的(靜态)的 ip,你需要顯式将這台機器的 mac 位址以及靜态配置設定的位址添加到下面這部分。
<code>host centos-node {</code>
<code>hardware ethernet 00:f0:m4:6y:89:0g;</code>
<code>fixed-address 192.168.10.105;</code>
<code>host fedora-node {</code>
<code>hardware ethernet 00:4g:8h:13:8h:3a;</code>
<code>fixed-address 192.168.10.106;</code>
儲存并關閉檔案。
7、 接下來,啟動 dhcp 服務,并讓它下次開機自啟動,如下所示:
<code>------------ systemd ------------</code>
<code>$ sudo systemctl start isc-dhcp-server.service</code>
<code>$ sudo systemctl enable isc-dhcp-server.service</code>
<code>------------ sysvinit ------------</code>
<code>$ sudo service isc-dhcp-server.service start</code>
<code>$ sudo service isc-dhcp-server.service enable</code>
8、 接下來不要忘記允許 dhcp 服務(dhcp 守護程序監聽 67 udp 端口)的防火牆權限:
<code>$ sudo ufw allow 67/udp</code>
<code>$ sudo ufw reload</code>
<code>$ sudo ufw show</code>
9、 此時,你可以将用戶端計算機配置為自動從 dhcp 伺服器接收 ip 位址。
登入到用戶端并編輯以太網接口的配置檔案(注意接口名稱/号碼):
<code>$ sudo vi /etc/network/interfaces</code>
定義如下選項:
<code>auto eth0</code>
<code>iface eth0 inet dhcp</code>
儲存檔案并退出。重新開機網絡服務(或重新開機系統):
<code>$ sudo systemctl restart networking</code>
<code>$ sudo service networking restart</code>
另外你也可以使用 gui 來在進行設定,如截圖所示(在 fedora 25 桌面中)設定将方式設為自動(dhcp)。
在 fedora 中設定 dhcp 網絡
此時,如果所有設定完成了,你的用戶端應該可以自動從 dhcp 伺服器接收 ip 位址了。
就是這樣了!在本篇教程中,我們向你展示了如何在 ubuntu/debian 設定 dhcp 伺服器。在回報欄中分享你的想法。如果你正在使用基于 fedora 的發行版,請閱讀如何在 centos/rhel 中設定 dhcp 伺服器。
原文釋出時間為:2017-03-29
本文來自雲栖社群合作夥伴“linux中國”