linux服务篇-DHCP服务
DHCP服務概述:
名稱:DHCP? - Dynamic Host Configuration Protocol? 動態主機配置協議
功能:DHCP(Dynamic Host Configuration Protocol,動態主機配置協議)是一個局域網的網絡協議,指的是由服務器控制一段IP地址范圍,客戶機登錄服務器時就可以自動獲取服務器分配的IP地址和子網掩碼。默認情況下,DHCP在windows server的一個服務組件不會自動安裝,需要手動安裝并配置相關參數。
DHCP通常被應用在大型的局域網絡環境中,主要作用是集中的管理、分配IP地址,使網絡環境中的主機動態的獲得IP地址、Gateway地址、DNS服務器地址等信息,并能夠提升地址的使用率。
DHCP協議采用客戶端/服務器模型,主機地址的動態分配任務由網絡主機驅動。當DHCP服務器接收到來自網絡主機申請地址的信息時,才會向網絡主機發送相關的地址配置等信息,以實現網絡主機地址信息的動態配置。DHCP具有以下功能:
1. 保證任何IP地址在同一時刻只能由一臺DHCP客戶機所使用。
2. DHCP應當可以給用戶分配永久固定的IP地址。
3. DHCP應當可以同用其他方法獲得IP地址的主機共存(如手工配置IP地址的主機)。
4. DHCP服務器應當向現有的BOOTP客戶端提供服務。
DHCP有三種機制分配IP地址:
1) 自動分配方式(Automatic Allocation),DHCP服務器為主機指定一個永久性的IP地址,一旦DHCP客戶端第一次成功從DHCP服務器端租用到IP地址后,就可以永久性的使用該地址。
2) 動態分配方式(Dynamic Allocation),DHCP服務器給主機指定一個具有時間限制的IP地址,時間到期或主機明確表示放棄該地址時,該地址可以被其他主機使用。
3) 手工分配方式(Manual Allocation),客戶端的IP地址是由網絡管理員指定的,DHCP服務器只是將指定的IP地址告訴客戶端主機。
三種地址分配方式中,只有動態分配可以重復使用客戶端不再需要的地址。
DHCP消息的格式是基于BOOTP(Bootstrap Protocol)消息格式的,這就要求設備具有BOOTP中繼代理的功能,并能夠與BOOTP客戶端和DHCP服務器實現交互。BOOTP中繼代理的功能,使得沒有必要在每個物理網絡都部署一個DHCP服務器。
DHCP的優點:
DHCP的缺點:
DHCP的端口:
DHCP服務使用:端口67(bootps) 68(bootpc) 。
例:查看端口
~]# vim /etc/services
DHCP協議由 bootp協議發展而來,是BOOTP的增強版本,bootps代表服務端端口, bootpc代表客戶端端口。
DHCP可以說是BOOTP的增強版本,它分為兩個部分:一個是服務器端,而另一個是客戶端。所有的IP網絡設定數據都由DHCP服務器集中管理,并負責處理客戶端的DHCP要求;而客戶端則會使用從服務器分配下來的IP環境數據。比較BOOTP, DHCP透過“租約”的概念,有效且動態的分配客戶端的TCP/IP設定,而且,作為兼容考慮,DHCP也完全照顧了BOOTP Client的需求。
| 補充: BOOTP(Bootstrap Protocol,引導程序協議)是一種引導協議,基于IP/UDP協議,也稱自舉協議,是DHCP協議的前身。BOOTP用于無盤工作站的局域網中,可以讓無盤工作站從一個中心服務器上獲得IP地址。通過BOOTP協議可以為局域網中的無盤工作站分配動態IP地址,這樣就不需要管理員去為每個用戶去設置靜態IP地址。 BOOTP使用UDP報文傳輸,并使用保留端口號67(BOOTP服務器)和68(BOOTP客戶端)工作。使用BOOTP協議的時候,一般包括Bootstrap Protocol Server(自舉協議服務端)和Bootstrap Protocol Client(自舉協議客戶端)兩部分。 我們熟知的DHCP協議是從BOOTP的基礎上發展而來的,它們都是主機配置協議,都可以大大減少管理員的工作量。BOOTP可以看成是簡單版的DHCP,是對主機的靜態配置,而DHCP可以依據一些策略對主機進行動態配置。BOOTP用于無盤工作站的啟動和配置,而DHCP更適用于客戶端接入變化的網絡,即客戶端接入時間、接入地點不固定。 BOOTP有一個缺點:您在設定前須事先獲得客戶端的硬件地址,而且,MCA地址與IP的對應是靜態的。換而言之,BOOTP非常缺乏“動態性 ”,若在有限的IP資源環境中,BOOTP的一對一對應會造成非常可觀的浪費。 |
DHCP服務運行原理:
DHCP協議采用UDP作為傳輸協議,主機發送請求消息到DHCP服務器的67號端口,DHCP服務器回應應答消息給主機的68號端口。
?
客戶端 ??????????????????服務端????????? ??? 目標端口?? 源IP?????????????? 目標IP
?-------DHCPDISCOVER ------->? udp ???? 目標67? 源IP:0.0.0.0 目的IP:255.255.255.255
#即DHCP客戶機尋找DHCP服務器的階段。DHCP客戶機以廣播方式(因為DHCP服務器的IP地址對于客戶機來說是未知的)發送DHCPdiscover發現信息來尋找DHCP服務器,即向地址255.255.255.255發送特定的廣播信息。網絡上每一臺安裝了TCP/IP協議的主機都會接收到這種廣播信息,但只有DHCP服務器才會做出響應 。(同一網段內所有的DHCP服務器)
?
<------DHCPOFFER ----------udp? 68? 源IP:DHCP服務器的IP, 目的IP:? 255.255.255.255
即DHCP服務器提供IP地址的階段。在網絡中接收到DHCPdiscover發現信息的DHCP服務器都會做出響應,它從尚未出租的IP地址中挑選一個分配給DHCP客戶機,向DHCP客戶機發送一個包含出租的IP地址和其他設置的DHCPoffer提供信息 。
| 位于同一網段的DHCP服務器都會接收到DHCP discover報文,每個DHCP服務器上可能會部署多個地址池,服務器通過地址池來管理可供分配的IP地址等網絡參數。服務器接收到DHCP discover報文后,選擇跟接收DHCP discover報文接口的IP地址處于同一網段的地址池,并且從中選擇一個可用的IP地址,然后通過DHCP OFFER報文發送給DHCP客戶端。DHCP OFFER報文里面攜帶了希望分配給指定MAC地址客戶端的IP地址及其租約等配置參數。 |
?
?
-------DHCPREQUEST -------->??? udp ?????? 67 源IP:0.0.0.0?????????? 目的IP:255.255.255.255
即DHCP客戶機選擇某臺DHCP服務器提供的IP地址的階段。如果有多臺DHCP服務器向DHCP客戶機發來的DHCPoffer提供信息,則DHCP客戶機只接受第一個收到的DHCPoffer提供信息,然后它就以廣播方式回答一個DHCPrequest請求信息,該信息中包含向它所選定的DHCP服務器請求IP地址的內容(DHCP服務器的標識符和客戶端IP地址)。之所以要以廣播方式回答,是為了通知所有的DHCP服務器,他將選擇某臺DHCP服務器所提供的IP地址。
?
<------DHCPACK ------------ ????? udp?? 68 源IP:服務器的IP 目的IP:? 255.255.255.255
即DHCP服務器確認所提供的IP地址的階段。當DHCP服務器收到DHCP客戶機回答的DHCPrequest請求信息之后,它便向DHCP客戶機發送一個包含它所提供的IP地址和其他設置的DHCPack確認信息,告訴DHCP客戶機可以使用它所提供的IP地址。然后DHCP客戶機便將其TCP/IP協議與網卡綁定,另外,除DHCP客戶機選中的服務器外,其他的DHCP服務器都將收回曾提供的IP地址 。
?
注意:客戶端執行DHCP DISCOVER 后,如果沒有DHCP 服務器響應客戶端的請求,客戶端會隨機使用169.254.0.0/16 網段中的一個IP 地址,配置本機地址。
?
169.254.0.0/16是windows的自動專有IP尋址范圍,也就是在無法通過DHCP獲取IP地址時,由系統自動分配的IP地址段。?
?
早先的Linux上并不會產生這條路由,現在有這條路由大概是為了和windows兼容。
[root@node63 ~]# route -n
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
192.168.1.0???? 0.0.0.0???????? 255.255.255.0?? U???? 0????? 0??????? 0 eth0
169.254.0.0???? 0.0.0.0???????? 255.255.0.0???? U???? 1002?? 0??????? 0 eth0
0.0.0.0???????? 192.168.1.1???? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
?
在使用租期超過50%時刻處,DHCP Client會以單播形式向DHCP Server發送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址。
在使用租期超過87.5%時刻處,DHCP Client會以廣播形式向DHCP Server發送DHCPRequest報文來續租IP地址。如果DHCP Client成功收到DHCP Server發送的DHCP ACK報文,則按相應時間延長IP地址租期;如果沒有收到DHCP Server發送的DHCP ACK報文,則DHCP Client繼續使用這個IP地址,直到IP地址使用租期到期時,DHCP Client才會向DHCP Server發送DHCP Release報文來釋放這個IP地址,并開始新的IP地址申請過程。
需要說明的是:DHCP客戶端可以接收到多個DHCP服務器的DHCPOFFER數據包,然后可能接受任何一個DHCPOFFER數據包,但客戶端通常只接受收到的第一個DHCPOFFER數據包。另外,DHCP服務器DHCPOFFER中指定的地址不一定為最終分配的地址,通常情況下,DHCP服務器會保留該地址直到客戶端發出正式請求。
正式請求DHCP服務器分配地址DHCPREQUEST采用廣播包,是為了讓其它所有發送DHCPOFFER數據包的DHCP服務器也能夠接收到該數據包,然后釋放已經OFFER(預分配)給客戶端的IP地址。
如果發送給DHCP客戶端的地址已經被其他DHCP客戶端使用,客戶端會向服務器發送DHCPDECLINE信息包拒絕接受已經分配的地址信息。
在協商過程中,如果DHCP客戶端發送的REQUEST消息中的地址信息不正確,如客戶端已經遷移到新的子網或者租約已經過期,DHCP服務器會發送DHCPNAK消息給DHCP客戶 端,讓客戶端重新發起地址請求過程。
DHCP設備
由于DHCP是C/S模式運行的,所以使用DHCP的設備為客戶端,而提供DHCP服務的為服務端。DHCP客戶端可以讓設備自動地從DHCP服務器獲得IP地址以及其他配置參數。使用DHCP客戶端可以帶來如下好處:
(1)降低了配置和部署設備時間;
(2)降低了發生配置錯誤的可能性;
(3)可以集中化管理設備的IP地址分配。DHCP服務器指的是由
服務器控制一段IP地址范圍,客戶端登錄服務器時就可以自動獲得服務器分配的IP地址和子網掩碼。
需要注意的是,DHCP也可以用在不同的子網上,這時候需要使用稱為DHCP中繼代理( DHCP Relay, DHCPR,也叫DHCP中繼)的設備。當DHCP客戶端與服務器不在同一個子網上,就必須有DHCP中繼代理來轉發DHCP請求和應答消息。DHCP中繼代理的數據轉發,與通常路由轉發是不同的,通常的路由轉發相對來說是透明傳輸的,設備一般不會修改IP包內容。
而DHCP中繼代理接收到DHICP消息后,重新生成一個DHCP消息,然后轉發出去。
有了DHCP中繼,可以實現DHCP的跨網運作。由于 DHCP DISCOVER是以廣播方式進行的,其情形只能在同一網絡之內進行,因為路由器是不會將廣播傳送出去的。但如果DHCP服務器架設在其他的網絡上面,可以用DHCP中繼來接管客戶的DHCP請求,然后將此請求傳遞給真正的DHCP服務器,然后將服務器的回復傳給客戶。這里,DHCP中繼主機必須自己具有路由能力,且能將雙方的數據報互傳對方。如果不使用中繼,也可以在每一個網絡中安裝DHCP服務器,但這樣的話,一來設備成本會增加,而且管理上面也比較分散。當然,如果在大型的網絡中,這樣的均衡式架構還是可取的。
在DHCP客戶端看來,DHCP中繼代理就像DHCP服務器;在DHCP服務器看來,DHCP中繼代理就像DHCP客戶端。
安裝部署DHCP
安裝dhcp
dhcp只需要一個安裝包,通過rpm或yum安裝。
[root@kylinos ~]# yum -y install dhcp
?
kylinos中需要安裝的包:
[root@kylinos ~]# rpm -qa|grep dhcp
dhcp-4.4.2-5.ky10.x86_64
dhcp-help-4.4.2-5.ky10.noarch
查看配置文件:
[root@kylinos ~]# rpm -ql dhcp
/etc/NetworkManager
/etc/NetworkManager/dispatcher.d
/etc/NetworkManager/dispatcher.d/11-dhclient
/etc/dhcp
/etc/dhcp/dhclient.d
/etc/dhcp/dhcpd.conf???? #ipv4的配置文件
/etc/dhcp/dhcpd6.conf??? #ipv6的配置文件
/etc/openldap/schema
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/usr/bin/omshell
/usr/lib/systemd/system/dhcpd.service
/usr/lib/systemd/system/dhcpd6.service
/usr/lib/systemd/system/dhcrelay.service
/usr/lib64/pm-utils/sleep.d/56dhclient
/usr/sbin/dhclient
/usr/sbin/dhclient-script
/usr/sbin/dhcpd
/usr/sbin/dhcrelay
/usr/share/doc/dhcp
/usr/share/doc/dhcp-client/dhclient6.conf.example
/usr/share/doc/dhcp-server/dhcpd6.conf.example
/usr/share/doc/dhcp/README
/usr/share/doc/dhcp/README.dhclient.d
/usr/share/doc/dhcp/RELNOTES
/usr/share/doc/dhcp/References.txt
/usr/share/doc/dhcp/dhclient.conf.example
/usr/share/doc/dhcp/dhcp-lease-list.pl
/usr/share/doc/dhcp/ldap
/usr/share/doc/dhcp/ldap/README.ldap
/usr/share/doc/dhcp/ldap/dhcp.schema
/usr/share/doc/dhcp/ldap/dhcpd-conf-to-ldap
/usr/share/licenses/dhcp
/usr/share/licenses/dhcp/LICENSE
/var/lib/dhclient
/var/lib/dhcpd
/var/lib/dhcpd/dhcpd.leases??? #ipv4的租約文件
/var/lib/dhcpd/dhcpd6.leases?? #ipv6的租約文件
替換配置文件
dhcp的主配置文件為/etc/dhcp/dhcpd.conf,但是這個文件默認為空的,需要自己手動創建,但dhcp軟件在安裝的時候都會附上/usr/share/doc/dhcp-server/dhcpd.conf.example樣本文件,可以將此文件復制為/etc/dhcp/dhcpd.conf,在修改即可。
[root@kylinos ~]# cat /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
#?? see /usr/share/doc/dhcp-server/dhcpd.conf.example
#?? see dhcpd.conf(5) man page
#
當DHCP 主程序包安裝好后會自動生成主配置文件的范本文件
/usr/share/doc/dhcp-server/dhcpd.conf.example
而在/etc 目錄下會建立一個空白的dhcpd.conf 主配置文件。
ls /etc/dhcp/dhcpd.conf
現在我們將范本配置文件復制到/etc 目錄下替換掉空白dhcpd.conf 主配置文件。
[root@kylinos ~]# cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.back
[root@kylinos ~]# cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite `/etc/dhcp/dhcpd.conf'? y
修改配置文件
[root@kylinos ~]# vim /etc/dhcp/dhcpd.conf?? # 找到對應的子網范圍,修改成以下內容
subnet 192.168.0.0 netmask 255.255.255.0 {
? range 192.168.0.100 192.168.0.200;
? option domain-name-servers 192.168.0.1;
? option domain-name "internal.example.org";
? option routers 192.168.0.1;
? option broadcast-address 192.168.0.255;
? default-lease-time 600;
? max-lease-time 7200;
}
注意:網絡號必須與DHCP 服務器的網絡號相同
測試dhcpd.conf的語法是否正確。
[root@kylinos ~]# dhcpd -t /etc/dhcp/dhcpd.conf
Internet Systems Consortium DHCP Server 4.4.2
Copyright 2004-2020 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
ldap_gssapi_principal is not set,GSSAPI Authentication for LDAP will not be used
Not searching LDAP since ldap-server, ldap-port and ldap-base-dn were not specified in the config file
Config file: /etc/dhcp/dhcpd.conf
Database file: /var/lib/dhcpd/dhcpd.leases
PID file: /var/run/dhcpd.pid
Source compiled to use binary-leases
配置文件參數說明
subnet:要分發IP地址的網段
netmask:要分發IP地址的子網掩碼
range:分發IP地址池(在一個subnet下支持多個range)
option domain-name-servers:dns服務器
option domain-name:指定搜索域
option routers:分發IP地址的網關,如果不想跨網絡、不連接互聯網,可以不配網關
option broadcast-address:分發IP的廣播地址,主機位全為1
default-lease-time:默認租約期,單位為秒
max-lease-time:最大租約期,單位為秒
特別注意:每個參數要以分號(;)結束,大括號所在行除外。
注釋部分可以放在任何位置,并以“#”號開頭
整個配置文件分成全局(不在{}內)和局部兩個部分。局部參數的優先級高于全局參數。
default-lease-time 600;????
作用:定義默認IP 租約時間,以秒為單位的租約時間。
50%:續約。(續不上繼續用)
87.5%:再次續約。(續不上找別人)
DHCP工作站除了在開機的時候發出 DHCPrequest 請求之外,在租約期限一半的時候也會發出 DHCPrequest ,如果此時得不到 DHCP服務器的確認的話,工作站還可以繼續使用該IP;當租約期過了87.5%時,如果客戶機仍然無法與當初的DHCP服務器聯系上,它將與其它 DHCP服務器通信。如果網絡上再沒有任何DHCP協議服務器在運行時,該客戶機必須停止使用該IP地址,并從發送一個Dhcpdiscover數據包開 始,再一次重復整個過程。要是您想退租,可以隨時送出 DHCPRELEASE 命令解約,就算您的租約在前一秒鐘才獲得的。
max-lease-time 7200;?
作用:定義客戶端IP租約時間的最大值,當客戶端超過租約時間,卻尚未更新IP 時,最長可以使用該IP 的時間;
例:機器在開機獲得IP地址后,然后關機了。這時,當時間過了default-lease-time 600秒后,沒有機器向DHCP續約,DHCP會保留7200秒,保留此IP地址不用于分配給其它機器。 當超過7200秒后,將不再保留此IP地址給此機器。
注意:default-lease-time、max-lease-time都是以秒為單位的租約時間,該項參數可以作用在全局配置中,也可以作用在局部配置中。
log-facility local7;??
#定義日志類型為? local7
租約數據庫文件
租約數據庫文件用于保存一系列的租約聲明,其中包含客戶端的主機名、MAC 地址、分配到的IP地址,以及IP地址的有效期等相關信息。這個數據庫文件是可編輯的ASCII 格式文本文件。每當發生租約變化的時候,都會在文件結尾添加新的租約記錄。DHCP 剛安裝好后租約數據庫文件dhcpd.leases 是個空文件。當DHCP 服務正常運行后就可以使用cat 命令查看租約數據庫文件內容了
[root@kylinos ~]# cat /var/lib/dhcpd/dhcpd.leases
lease 192.168.0.200 {
??starts 6 2021/01/30 07:30:16;??? #租約開始時間
? ends 6 2021/01/30 07:40:16;???? #租約結束時間
? binding state active;???????????? #租約的綁定狀態(active/free)
? next binding state free;????? ??? #下一次綁定的狀態
? hardware ethernet 00:0c:29:12:ec:1e;??? #綁定的網卡地址
}
| 補充: start和end時間使用starts和ends語句記錄。 Date按下面的格式指定: ?????? weekday year/month/day hour:minute:second ??? weekday用來使人容易理解何時租約過期,它從0到6,指的是周日到周六。在輸入時可以省略星期。除非是一個非常長的租約,年(year)使用4位。月從1到12,日從1到31(根據月有不同),小時從1到23,分鐘從1到59,秒也是從1到59。租約時間使用(UTC)而不是本地時間,世界上幾乎沒有地方與UTC時間一樣。在大多數unix機器上,可以使用date –u來顯示UTC的當前時間。 如果租約永不結束,date就不是一個真實的時間。 ?? binding state state; next binding state state; ?? binding state語句聲明租約的綁定狀態,當DHCP服務器沒有配置使用失敗恢復協議時,租約的綁定狀態會是激活(active)和自由(free),失敗恢復協議添加了一些新的傳送狀態,比如(backup)狀態,它指示租約可以由伴侶分配。 ?? next binding狀態指租約當前狀態過期時將會轉換成的下一個狀態。 ?hardware hardware-type mac-address; ?? hardware語句記錄lease使用的網絡接口的MAC地址。如果是一組16進制數,中間用冒號分隔。 |
多個網卡,如何指定提供dhcp服務的網卡
# vim /etc/sysconfig/dhcpd
DHCPDARGS=“eth0 eth1”
如果允許多個網卡可以寫多個網卡名,以空格隔開。
如果不使客戶機接受dhcp服務器分配的dns地址
默認情況下dhcp客戶機會獲得dhcp服務器分配的dns地址,自動覆蓋客戶機的/etc/resolv.conf的內容。但如果客戶機不想使用dhcp服務器分配的dns地址,想保留自己的dns地址,可以修改網卡的配置文件將PEERDNS修改為no,如果想使用dhcp服務器分配的dns,將PEERDNS修改為yes。
客戶機如果使用命令獲得ip地址
在windows里面可以使用ipconfig /release先釋放當前地址,在使用ipconfig /renew重新獲取ip地址,在linux系統里可以使用dhclient -d eth0來獲得ip地址,按ctrl+c退出,分配的ip地址就會失效。如果直接使用dhclient命令,則分配的命令會在后臺持續下去,分配的ip一直可用。
服務啟停,并設置開機啟動
[root@kylinos ~]# systemctl enable dhcpd
[root@kylinos ~]# systemctl start dhcpd
[root@kylinos ~]# systemctl status dhcpd
IP 地址綁定【分配靜態ip地址】
在DHCP 中的IP 地址綁定用于給客戶端分配固定IP 地址。比如服務器需要使用固定IP 地址就可以使用IP 地址綁定,通過MAC 地址與IP 地址的對應關系為指定的物理地址計算機分配固定IP地址。
整個配置過程需要用到 host 聲明和hardware、fixed-address 參數。
(1)host 主機名 {......}
作用:用于定義保留地址
(2)hardware 類型 硬件地址
作用:定義網絡接口類型和硬件地址。常用類型為以太網(ethernet),地址為MAC 地址。
(3)fixed-address IP 地址
作用:定義DHCP 客戶端指定的IP 地址。
[root@kylinos ~]# vim /etc/dhcp/dhcpd.conf?? # 找到對應的子網范圍,修改成以下內容
subnet 192.168.0.0 netmask 255.255.255.0 {
? range 192.168.0.100 192.168.0.200;
? option domain-name-servers 192.168.0.1;
? option domain-name "internal.example.org";
? option routers 192.168.0.1;
? option broadcast-address 192.168.0.255;
? default-lease-time 600;
? max-lease-time 7200;
? host kylinos {??? #這一段內容,要寫在subnet字段中,和subnet配合使用。
??? hardware ethernet 00:0C:29:12:ec:1e;
??? fixed-address 192.168.0.251;
?}
}
應用實例:
公司有60 臺計算機,IP 地址段為192.168.0.1-192.168.0.254,子網掩碼是255.255.255.0,網關為192.168.0.1,192.168.0.2-192.168.0.30 網段地址給服務器配置,客戶端可以使用的地址段為192.168.0.100-200,其余剩下的IP 地址為保留地址。
實驗環境:
我的虛擬機使用橋接模式是否可行? 不行,因為你的局域網中有可能就有DHCP服務器,這樣你就很難,讓你的客戶端是從你的DHCP服務器獲得IP地址。
另外,也可能造成公司局域網中其它機器因為獲得了你DHCP服務器上的IP地址,而上不了網。
實驗環境拓撲如下:
node63.example.com?? :192.168.0.63???? 虛擬機網卡: vmnet4
node64.example.com?? :192.168.0.64???? 虛擬機網卡: vmnet4
1、修改靜態IP地址
[root@node63 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
2、重啟服務
[root@node63 ~]# systemctl restart network
3、修改dhcp配置文件
[root@node63 ~]# vim /etc/dhcp/dhcpd.conf?
subnet 192.168.0.0 netmask 255.255.255.0 {
? range 192.168.0.50 192.168.0.100;
? option domain-name-servers 192.168.0.1;
? option domain-name "internal.example.org";
? option routers 192.168.0.1;
? option broadcast-address 192.168.0.255;
? default-lease-time 600;
? max-lease-time 7200;
}
4、重啟dhcp服務
[root@node63 ~]# systemctl restart dhcpd
5、開啟客戶端,確保客戶端的網絡與服務端在同一網絡內。
然后node64改為自動獲取IP地址。
6、客戶端查看網絡參數
[root@xue63 ~]# ifconfig eth0
eth0????? Link encap:Ethernet? HWaddr 00:0C:29:12:EC:1E?
????????? inet addr:192.168.0.99? Bcast:192.168.0.255? Mask:255.255.255.0
????????? inet6 addr: fe80::20c:29ff:fe12:ec1e/64 Scope:Link
????????? UP BROADCAST RUNNING MULTICAST? MTU:1500? Metric:1
????????? RX packets:5084 errors:0 dropped:0 overruns:0 frame:0
????????? TX packets:5087 errors:0 dropped:0 overruns:0 carrier:0
???? ?????collisions:0 txqueuelen:1000
????????? RX bytes:664380 (648.8 KiB)? TX bytes:521089 (508.8 KiB)
7、查看默認網關
[root@xue63 ~]# route -n
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
192.168.0.0???? 0.0.0.0???????? 255.255.255.0?? U???? 0????? 0??????? 0 eth0
169.254.0.0???? 0.0.0.0???????? 255.255.0.0???? U???? 1002?? 0??????? 0 eth0
0.0.0.0???????? 192.168.0.1???? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
8、查看DNS
[root@xue63 ~]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search internal.example.org example.com
nameserver 192.168.0.1
9、查看租約數據庫文件[在服務端上查看]
[root@node64 dhcp]# cat /var/lib/dhcpd/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.4.2
?
# authoring-byte-order entry is generated, DO NOT DELETE
authoring-byte-order little-endian;
?
server-duid "\000\001\000\001(n\3655\000\014)\035K\177";
?
lease 192.168.0.50 {
? starts 3 2021/06/30 13:58:51;
? ends 3 2021/06/30 14:08:51;
? cltt 3 2021/06/30 13:58:51;
? binding state active;
? next binding state free;
? rewind binding state free;
? hardware ethernet 00:0c:29:9d:a9:b8;
? client-hostname "desktop";
}
DHCP中繼
當企業的內部網絡規模較大時,通常被劃分為多個不同的子網,網絡內配置了VLAN,VLAN能隔離廣播,而DHCP協議使用廣播。DHCP服務器在哪個vlan中,就只有在相同vlan內的客戶機能從DHCP服務器那里獲取IP地址。
解決此問題方法:
在連接不同網段的設備上開啟DHCP中繼功能,將DHCP這種特殊的廣播信息在VLAN之間轉發,讓其他VLAN的客戶機也能從DHCP服務器那里獲得IP地址。
?
由于在IP地址動態獲取的過程中,客戶端采用廣播方式發送請求報文,而廣播報文不能跨越網段傳送,因此DHCP只適用于DHCP客戶端和服務器處于同一個網段內的情況。當多個網段都需要進行動態IP地址分配時,就需要在所有網段上都設置一個DHCP服務器,這顯然是不易管理和維護的。
DHCP中繼可以使客戶端通過它與其他網段的DHCP服務器通信,最終獲取IP地址,解決了DHCP客戶端不能跨網段向服務器動態獲取IP地址的問題。這樣,在多個不同網絡上的DHCP客戶端可以使用同一個DHCP服務器,即節省了成本,又便于進行集中管理和維護。路由器或三層交換機都可以充當DHCP中繼設備。
?
總結
以上是生活随笔為你收集整理的linux服务篇-DHCP服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: UMAP分析步骤初解
- 下一篇: NLP︱中文分词技术小结、几大分词引擎的