dhcp的祖先:bootp
出現在無盤工作站時代,現在已經被dhcp徹底替代,不過有些服務器爲了向下
兼容,仍舊支持bootp
DHCP (Dynamic Host configuration protocol)
DHCP 引入了租約的概念lease(租約),這個徹底解決了“僧多粥少”的情況,
在今天主機迅速暴增的前提下,dhcp顯得那麼必須,必要,想象一下,如果全球沒
了dhcp是多麼的……
DHCP工作方式
當一個網內client需要一個ip地址,它就會要發出廣播尋求得到一個ip地址(前提
是你是要求動態獲取方式),這時如果你所在區域有DHCP服務器,它就會試圖響應
你,這時雙方就開始了正式的關於“談判”關於獲取IP的過程了
client:發一個dhcpdiscover包,尋找一個可用ip (廣播,因爲沒有ip只能廣播)
server:迴應一個dhcpoffer包,迴應請求(當有多個DHCP服務器響應時,一個原
則,先到先用)
client:dhcprequest 給你使用的DHCP服務器一個迴應(相當於,給服務器說:
“好,哥們兒,就用你了”)
server:迴應一個dhcpack包,確認。(相當於,服務器告訴client說:好的)
經過這樣一個過程,雙方就相當於簽訂了一個“合同”,即一個租約,租約裏規定
了ip地址,租約時間,默認網關,掩碼等信息 (更多信息可以查
看/usr/share/doc/dhcp-3.05/dhcpd.conf.sample)(租約var/lib/dhclient)
由於在請求過程中,雙反均是以廣播的形式廣播,所以dhcp只能在同一網段內實現
(dhcp中繼除外,後面會說)
DHCP服務器是理論上是隨機分配地址的,但其實當一個地址被分給一個主機後,當
此主機再次請求時,DHCP服務器會試圖儘量將原來的地址分配給它,而且linux分
配地址的次序是有大到小的
RedHat linux DHCP 安裝包
dhcp.i386
DHCP啓動後進程的名字是dhcpd
默認安裝後dhcp沒有給我們配置文件,不過它給我們了一個樣板,拷貝一下
# cp /usr/share/doc/dhcp-3.05/dhcpd.conf.sample /etc/dhcpd.conf
看一下配置文件
下面解釋全局參數
全局參數是應用在全局的,不過在聲明過全局參數後,你仍然可以在subnet中在次
聲明,且應用以後者爲主
下面是subnet部分
這部分需要注意的是subnet後面的網段,必須對應於你的某一塊網卡,真的需要特
別注意,想象一下如果你是5.0的,你分發6.0的,是不是先得多管閒事,特別注意
這一點,還有一點是注意,如果你也分給了別人router(網關),需要與subnet的
對應,不能錯了 rangge後的地址叫pool(地址池)
想象一下這樣的場景,你的boss要你給他一個88.88的地址,你要怎麼辦呢?
我們的DHCP服務器也定義了這樣的mac綁定功能,去看一下
如果你也多塊網卡,你想要定義dhcp服務只從其中的某些網卡服務,你可以去定義/etc/sysconfig/dhcpd
#DHCPDARGS=“eth0‘
DHCP的端口號
udp :server:67
client :68
前面說過dhcp服務器只能在一個廣播域能提供dhcp服務,試想如果一個網絡流量
很大,內網需要劃分n個小的子網,那麼按照之前的說法,我們就得架設n個dhcp服
務器,這顯然不是我們希望看到的,有人說我們可以用靜態啊,是的,可以但一定
會發生的情況就是地址衝突,這要怎麼辦呢?
這時就出現了中繼,我們可以找一箇中繼代理(如router)代理
那麼怎麼設置中繼代理呢?去看一下
這就是dhcp的個人理解