DHCP原理與配置
了解DHCP服務(wù)
- DHCP是由internet工作任務(wù)小組設(shè)計(jì)開發(fā)的,專門用于為TCP/IP網(wǎng)絡(luò)中的計(jì)算機(jī)自動分配TCP/IP參數(shù)的協(xié)議
使用DHCP的好處
- 減少管理員的工作量
- 避免IP地址沖突
- 當(dāng)網(wǎng)絡(luò)更改IP地址段時(shí),不需要再重新配置每個(gè)用戶的IP地址
- 提高了IP地址的利用率
- 方便客戶端的配置
DHCP的分配方式
-
自動分配
- 分配到一個(gè)IP地址后永久使用
-
手動分配
- 由DHCP服務(wù)器管理員專門指定IP地址
-
動態(tài)分配
- 使用完后釋放改IP,供其它客戶機(jī)使用
- 手動分配
- 由DHCP服務(wù)器管理員專門指定IP地址
DHCP的租約過程
-
客戶機(jī)從DHCP服務(wù)器獲得IP地址的工程稱為DHCP的租約過程
-
租約過程分為4個(gè)步驟
1、客戶機(jī)請求IP地址 Discover
- 當(dāng)一個(gè)DHCP客戶機(jī)啟動時(shí),客戶機(jī)還沒有IP地址,所以客戶機(jī)要通過DHCP獲取一個(gè)合法的地址,此時(shí)DHCP客戶機(jī)一廣播方式發(fā)送DHCP Discover發(fā)現(xiàn)信息來尋找DHCP服務(wù)器
2、響應(yīng)服務(wù) Offer
- 當(dāng)DHCP服務(wù)器接收到來自客戶機(jī)請求IP地址的信息時(shí),它就在自己的IP地址池中查找是否有合法的IP地址提供給客戶機(jī),如果有。DHCP服務(wù)器就將此IP地址做上標(biāo)記,加入到DHCP Offer的消息中,然DHCP服務(wù)器就廣播一則DHCP Offer消息
3、客戶機(jī)選擇IP地址 Request
- DHCP客戶機(jī)從接收到的第一個(gè)DHCP Offer消息中提取IP地址,發(fā)出IP地址的DHCP服務(wù)器將該地址保留,這樣該地址就不能再分配給另一個(gè)DHCP客戶機(jī)
4、服務(wù)器確定租約 ACK
- DHCP服務(wù)器接受到DHCP Request消息后,以DHCP ACK消息的形式向客戶機(jī)廣播成功確認(rèn),該消息包含有IP地址的有效租約和其他可配置的信息
-
DHCP客戶機(jī)每次重新登錄網(wǎng)絡(luò)時(shí),不需要再發(fā)送DHCP Discover信息,而是直接發(fā)送包含前一次所分配的IP地址的DHCP Request請求信息
- 更新租約
- 當(dāng)DHCP服務(wù)器向客戶機(jī)出租的IP地址租期達(dá)到50%是,就需要更新租約
- 客戶機(jī)直接向提供租約的服務(wù)器發(fā)送DHCP Request包,要求更新現(xiàn)有的地址租約
使用DHCP動態(tài)配置主機(jī)地址
-
DHCP服務(wù)
為大量客戶機(jī)自動分配地址,提供集中管理
減輕管理和維護(hù)成本、提高網(wǎng)絡(luò)配置效率
-
可分配的地址信息主要包括
網(wǎng)卡的IP地址、子網(wǎng)掩碼
對應(yīng)的網(wǎng)絡(luò)地址、廣播地址
默認(rèn)網(wǎng)關(guān)地址
DNS服務(wù)器地址
- 安裝DHCP服務(wù)器
[root@localhost ~]# yum install dhcp -y
-
主配置文件
- /etc/dhcp/dhcpd.conf
- 查看租約文件
- /var/lib/dhcpd/dhcpd.lease
使用DHCP客戶端
-
修改網(wǎng)卡配置文件
- BOOTPROTO=dhcp
- 使用dhclient命令
- dhclient [-d] [網(wǎng)絡(luò)接口名]
搭建DHCP中繼服務(wù)
實(shí)驗(yàn)環(huán)境:
- 使用VMware 15
- c3725路由鏡像文件
- 使用GNS3 1.3.1 使用方法 http://www.sfodin.cn/Linux/2019-10/160968.htm
- win 10 鏡像
- win 7 鏡像
- CentOS 7鏡像
相關(guān)資料可從以下信息得到下載:
點(diǎn)擊這個(gè)http://www.linuxidc.com/Linux/2013-12/93755.htm 鏈接關(guān)注 Linux公社官方微信,關(guān)注后回復(fù)數(shù)字160967。即可得到網(wǎng)友的分享密碼。
如果取消關(guān)注Linux公社公眾號,即使再次關(guān)注,也將無法提供本服務(wù)!
鏈接:https://pan.baidu.com/s/1u6K8fhZgEkEJD1qyKctAaw 密碼:獲得見上面的方法,地址失效請?jiān)谙旅媪粞浴?/p>
——————————————分割線——————————————
搭建服務(wù)
1、在GNS3中搭建DHCP中繼服務(wù)的拓?fù)鋱D,方便我們搭建服務(wù)的時(shí)候理清思路。在這里我使用一臺win 10虛擬機(jī)、一臺win 7虛擬機(jī)、一臺CentOS 7虛擬機(jī)、兩臺c3725路由設(shè)備。首先添加兩臺路由設(shè)備,并在路由設(shè)備上添加磁盤空間方便我們創(chuàng)建vlan,添加2層交換接口,方便我們把路由設(shè)備做成一個(gè)3層交換設(shè)備與一個(gè)2層交換設(shè)備。添加三臺host主機(jī),分別更名為DHC、win 10、win 7,這個(gè)時(shí)候還需要我們在VMware 15虛擬機(jī)設(shè)備中添加兩塊虛擬網(wǎng)卡,設(shè)知道僅主機(jī)模式,這個(gè)時(shí)候在重新回到GNS3中使用鏈接線將設(shè)備接起來,這個(gè)實(shí)驗(yàn)中我們將劃分3個(gè)vlan,分別將3臺虛擬機(jī)劃分到不同的vlan中(vlan地址劃分:vlan10:192.168.10.1/24、vlan20:192.168.20.1/24、vlan100:192.168.100.1/24,給DHCP服務(wù)器指定靜態(tài)IP地址 192.168.100.100。如下圖所示:
2、打開VMware 15,開啟win 10、win 7、CentOS 7虛擬機(jī),在CentOS 7虛擬機(jī)中安裝DHCP服務(wù);安裝完成后分別給win 10、win 7、CentOS 7虛擬機(jī)綁定網(wǎng)卡,win 10綁定VMnet2網(wǎng)卡,win 7綁定VMnet3網(wǎng)卡CentOS 7綁定VMnet1網(wǎng)卡;然會回到CentOS 7中配置靜態(tài)路由、配置DHCP服務(wù),完成后開啟服務(wù),關(guān)閉防火墻,關(guān)閉增強(qiáng)性安全文件。
[root@localhost ~]# yum install dhcp -y //安裝DHCP服務(wù) 已加載插件:fastestmirror, langpacks base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/4): base/7/x86_64/group_gz | 166 kB 00:00:00 (2/4): base/7/x86_64/primary_db | 6.0 MB 00:00:01 ...//省略部分內(nèi)容...
[root@localhost ~]# ifconfig //查看網(wǎng)卡信息 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 //此時(shí)無法獲取IP地址 inet6 fe80::a85a:c203:e2e:3f3c prefixlen 64 scopeid 0x20<link> ether 00:0c:29:5b:d3:a0 txqueuelen 1000 (Ethernet) RX packets 47 bytes 30451 (29.7 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 122 bytes 13596 (13.2 KiB) ...//省略部分內(nèi)容... [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 //進(jìn)入ens33網(wǎng)卡配置文件 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static //更改dhcp為static配置靜態(tài)IP地址 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 UUID=2ef6b862-5201-48c5-a450-23b3720ab3a0 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.100.100 //配置IP地址 NETMASK=255.255.255.0 //配置子網(wǎng)掩碼 GATEWAY=192.168.100.1 //配置網(wǎng)關(guān) ~ ~ :wq //保存退出 [root@localhost ~]# service network restart //重新啟動網(wǎng)絡(luò)服務(wù) Restarting network (via systemctl): [ 確定 ] [root@localhost ~]# ifconfig //查看網(wǎng)卡信息 ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 //獲取靜態(tài)IP地址 inet 192.168.100.100 netmask 255.255.255.0 broadcast 192.168.100.255 inet6 fe80::a85a:c203:e2e:3f3c prefixlen 64 scopeid 0x20<link> ether 00:0c:29:5b:d3:a0 txqueuelen 1000 (Ethernet) RX packets 48 bytes 30694 (29.9 KiB) ...//省略部分內(nèi)容...
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf //進(jìn)入dhcp服務(wù)主配置文件 # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example //顯示dhcp配置文件模板位置 # see dhcpd.conf(5) man page # ~ ...//省略部分內(nèi)容... ~ :r /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example //將dhcpd配置文件模板寫入主配置文件 //寫入的著配置文件: # # dhcpd.conf # # Sample configuration file for ISC dhcpd # # option definitions common to all supported networks... option domain-name "example.org"; option domain-name-servers ns1.example.org, ns2.example.org; default-lease-time 600; max-lease-time 7200; # Use this to enble / disable dynamic dns updates globally. #ddns-update-style none; # If this DHCP server is the official DHCP server for the local # network, the authoritative directive should be uncommented. #authoritative; # Use this to send dhcp log messages to a different log file (you also # have to hack syslog.conf to complete the redirection). log-facility local7; # No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. subnet 10.152.187.0 netmask 255.255.255.0 { } //主要在此處做出更改 # This is a very basic subnet declaration. subnet 10.254.239.0 netmask 255.255.255.224 { range 10.254.239.10 10.254.239.20; option routers rtr-239-0-1.example.org, rtr-239-0-2.example.org; } //更改后的配置文件信息: ...//省略部分內(nèi)容... # No service will be given on this subnet, but declaring it helps the # DHCP server to understand the network topology. subnet 192.168.100.0 netmask 255.255.255.0 { //更改IP網(wǎng)段 range 192.168.100.100 192.168.100.200; //可以分配的IP地址范圍 option routers 192.168.100.1; //網(wǎng)關(guān)信息(注意,每段結(jié)束以;結(jié)尾) } //注意最后的大括號不可刪除,否則服務(wù)無法開啟 subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.100 192.168.10.200; //添加vlan 10網(wǎng)段的地址分配條目 option routers 192.168.10.1; } subnet 192.168.20.0 netmask 255.255.255.0 { range 192.168.20.100 192.168.20.200; //添加vlan 20網(wǎng)段的地址分配條目 option routers 192.168.20.1; } # This is a very basic subnet declaration. :wq //保存退出 //因?yàn)槲覀冞@邊設(shè)置了三個(gè)vlan,網(wǎng)段都不相同,所以三個(gè)網(wǎng)段都要添加 [root@localhost ~]# systemctl start dhcpd //開啟dhcp服務(wù) [root@localhost ~]# systemctl status dhcpd //查看服務(wù)是否開啟 dhcpd.service - DHCPv4 Server Daemon Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled) Active: active (running) since 三 2019-09-04 22:56:05 CST; 14s ago //服務(wù)成功開啟 Docs: man:dhcpd(8) man:dhcpd.conf(5) Main PID: 5343 (dhcpd) Status: "Dispatching packets..." CGroup: /system.slice/dhcpd.service └─5343 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhc... 9月 04 22:56:05 localhost.localdomain dhcpd[5343]: No subnet declaration for virbr.... ...//省略部分內(nèi)容... 9月 04 22:56:05 localhost.localdomain systemd[1]: Started DHCPv4 Server Daemon. Hint: Some lines were ellipsized, use -l to show in full.
3、DHCP服務(wù)開啟后我們回到GNS3中,開啟添加的3層交換機(jī)與2層交換機(jī),并雙擊進(jìn)入3層交換設(shè)備與2層交換設(shè)備,在2層交換設(shè)備中配置vlan,并將接入鏈路分別接入相對應(yīng)的vlan中,將f1/0接口配置為trunk鏈路,在3層交換設(shè)備中同樣設(shè)置vlan,然后進(jìn)入vlan中配置IP地址,并指定IP地址192.168.100.100可以通過vlan在局域網(wǎng)中通信,最后將f1/0接口同樣配置為trunk鏈路。
sw2#conf t //在2層交換設(shè)備中進(jìn)入全局模式 Enter configuration commands, one per line. End with CNTL/Z. sw2(config)#vlan 10,20,100 //配置vlan10、20、100 sw2(config-vlan)#ex //退出vlan接口 sw2(config)#do show vlan-sw b //查看vlna是否配置成功 VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1 default active Fa1/0, Fa1/1, Fa1/2, Fa1/3 Fa1/4, Fa1/5, Fa1/6, Fa1/7 Fa1/8, Fa1/9, Fa1/10, Fa1/11 Fa1/12, Fa1/13, Fa1/14, Fa1/15 10 VLAN0010 active 20 VLAN0020 active //配置的vlan 100 VLAN0100 active 1002 fddi-default act/unsup 1003 token-ring-default act/unsup 1004 fddinet-default act/unsup 1005 trnet-default act/unsup sw2(config)#int f1/1 //進(jìn)入f1/1接口 sw2(config-if)#sw m acc //進(jìn)入配置鏈路 sw2(config-if)#sw acc vlan 100 //將鏈路接入vlan100 sw2(config-if)#ex //退出 sw2(config)#int f1/2 //進(jìn)入f1/2接口 sw2(config-if)#sw m acc //進(jìn)入配置鏈路 sw2(config-if)#sw acc vlan 10 //將鏈路接入vlan10 sw2(config-if)#ex //退出 sw2(config)#int f1/3 //進(jìn)入f1/3接口 sw2(config-if)#sw m acc //進(jìn)入配置鏈路 sw2(config-if)#sw acc vlan 20 //將鏈路接入vlan20 sw2(config-if)#ex //退出 sw2(config)#do show vlan-sw b //查看vlna VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1 default active Fa1/0, Fa1/4, Fa1/5, Fa1/6 Fa1/7, Fa1/8, Fa1/9, Fa1/10 Fa1/11, Fa1/12, Fa1/13, Fa1/14 Fa1/15 10 VLAN0010 active Fa1/2 20 VLAN0020 active Fa1/3 //鏈路成功接入vlan 100 VLAN0100 active Fa1/1 1002 fddi-default act/unsup 1003 token-ring-default act/unsup 1004 fddinet-default act/unsup 1005 trnet-default act/unsup sw2(config)#int f1/0 //進(jìn)入f1/0接口 sw2(config-if)#sw m t //將接口配置為trunk sw2(config-if)#sw t en do //在trunk鏈路中封裝dot1q協(xié)議 sw2(config-if)#ex //退出 sw2(config)#do show int f1/0 switchport //查看接口是否配置成功 Name: Fa1/0 Switchport: Enabled Administrative Mode: trunk //成功配置trunk鏈路 Operational Mode: trunk Administrative Trunking Encapsulation: dot1q Operational Trunking Encapsulation: dot1q Negotiation of Trunking: Disabled Access Mode VLAN: 0 ((Inactive)) Trunking Native Mode VLAN: 1 (default) Trunking VLANs Enabled: ALL Trunking VLANs Active: 1,10,20,100 Protected: false Priority for untagged frames: 0 Override vlan tag priority: FALSE Voice VLAN: none Appliance trust: none sw2(config)#no ip routing //關(guān)閉2層交換設(shè)備路由功能
sw3(config)#vlan 10,20,100 //在3層交換設(shè)備中配置vlan10、20、100 sw3(config-vlan)#ex //退出 sw3(config)#do show vlan-sw b //查看vlan VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1 default active Fa1/0, Fa1/1, Fa1/2, Fa1/3 Fa1/4, Fa1/5, Fa1/6, Fa1/7 Fa1/8, Fa1/9, Fa1/10, Fa1/11 Fa1/12, Fa1/13, Fa1/14, Fa1/15 10 VLAN0010 active 20 VLAN0020 active //配置成功 100 VLAN0100 active 1002 fddi-default act/unsup 1003 token-ring-default act/unsup 1004 fddinet-default act/unsup 1005 trnet-default act/unsup sw3(config)#int vlan 10 //進(jìn)入虛擬接口vlan10 sw3(config-if)#ip add 192.168.10.1 255.255.255.0 //在接口中添加IP地址 sw3(config-if)#ip helper-address 192.168.100.100 //指定IP地址192.168.100.100可通過接口 sw3(config-if)#no shut //開啟配置 sw3(config-if)#ex //退出 sw3(config)#int vlan 20 //進(jìn)入虛擬接口vlan20 sw3(config-if)#ip add 192.168.20.1 255.255.255.0 //在接口中添加IP地址 sw3(config-if)#ip helper-address 192.168.100.100 //指定IP地址192.168.100.100可通過接口 sw3(config-if)#no shut //開啟配置 sw3(config-if)#ex //退出 sw3(config)#int vlan 100 //進(jìn)入虛擬接口vlan100 sw3(config-if)#ip add 192.168.100.1 255.255.255.0 //在接口中添加IP地址 sw3(config-if)#ip helper-address 192.168.100.100 //指定IP地址192.168.100.100可通過接口 sw3(config-if)#no shut //開啟配置 sw3(config-if)#ex //退出 sw3(config)#int f1/0 //進(jìn)入f1/0 接口 sw3(config-if)#sw m t //配置為trunk鏈路 *Mar 1 00:22:18.607: %DTP-5-TRUNKPORTON: Port Fa1/0 has become dot1q trunk *Mar 1 00:22:19.111: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan10, changed state to up *Mar 1 00:22:19.119: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan20, changed state to up *Mar 1 00:22:19.127: %LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan100, changed state to up sw3(config-if)#sw t en do //封裝協(xié)議 sw3(config-if)#ex //突出 sw3(config)#do show int f1/0 switchport //查看trunk是否配置成功 Name: Fa1/0 Switchport: Enabled Administrative Mode: trunk //成功配置trunk鏈路 Operational Mode: trunk Administrative Trunking Encapsulation: dot1q Operational Trunking Encapsulation: dot1q Negotiation of Trunking: Disabled Access Mode VLAN: 0 ((Inactive)) Trunking Native Mode VLAN: 1 (default) Trunking VLANs Enabled: ALL Trunking VLANs Active: 1,10,20,100 Protected: false Priority for untagged frames: 0 Override vlan tag priority: FALSE Voice VLAN: none Appliance trust: none sw3(config)#do show ip int b //查看IP地址是否配入vlan,是否開啟 Interface IP-Address OK? Method Status Protocol FastEthernet0/0 unassigned YES unset administratively down down FastEthernet0/1 unassigned YES unset administratively down down FastEthernet1/0 unassigned YES unset up up FastEthernet1/1 unassigned YES unset up down ...//省略部分內(nèi)容... FastEthernet1/14 unassigned YES unset up down FastEthernet1/15 unassigned YES unset up down Vlan1 unassigned YES unset up up Vlan10 192.168.10.1 YES manual up up Vlan20 192.168.20.1 YES manual up up Vlan100 192.168.100.1 YES manual up up //成功配入,并開啟
4、完成配置后我們來查看虛擬機(jī)客戶端win 10、win 7是否自動獲取IP地址
5、下面我們來給win 10 客戶機(jī)指定固定的IP地址,首先在win 10客戶機(jī)中獲取win 10客戶機(jī)網(wǎng)卡的MAC地址,然后會的CentOS 7系統(tǒng)中進(jìn)入DHCP配置文件中進(jìn)行設(shè)置