个人知识总结之:DHCP与中继原理_dhcp中继原理
个人知识总结之:DHCP与中继原理由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“dhcp中继原理”。
DHCP 1.1.DHCP工作原理、DHCP中继原理
BOOT和DHCP的区别与联系
DHCP和BOOTP都基于C/S模式,都是用UDP的67号(DHCP服务器)和68号端口(DHCP客户机)
二者最主要的不同是:BOOTP需要预先手工配置主机信息,即配置主机的MAC地址和其捆绑的IP。当BOOTP客户端请求IP地址时,BOOTP服务器在预先配置的信息表中搜索和请求客户端MAC地址相匹配的条目。如果该条目存在,和这个条目相对应的IP地址被返回给客户端。这意味着IP地址和MAC地址的捆绑条目必须被预先配置在BOOTP服务器上。
DHCP根据预约机制允许客户端续租或重新分配IP地址。这种租约机制允许一个IP地址在不同的时间可以被分配给多个客户端使用,也允许一个客户端移到另一个子网时重新获取新的IP地址,还允许客户端刷新租约或保持相同的IP地址。
而BOOTP不适用租约机制,BOOTP中一个客户端被分配的IP地址不能再被分配给其他的客户端。
1.1.1.DHCP工作过程:
1.单机在本地子网中发送DHCP discover信息:此信息以广播的形式发送,因为客户机现在还不知道DHCP服务器的IP地址。该数据包源MAC是单机的MAC,目标MAC地址为全F,源IP是0.0.0.0,目标IP是255.255.255.255,单机并不知道DHCPIP地址,只能广播发送,DHCP使用的是UDP协议,客户端端口号68,服务器端使用端口号是67,。2.DHCP服务器收到单机的广播discover信息后,它就会在地址池中按照前后顺序找一个可以租出去的IP,在下发IP前,服务器先发送一个ARP查询,查询这个IP地址是否被租用,如果收到ARP应答,则表明这个地址已经在网络中被使用,服务器会在地址池选择另外一个IP地址,再次进行ARP查询。如有没有收到ARP应答则证明这个IP地址可以使用。(PS:ARP查询也是一个广播包,源MAC是服务器自己的MAC,目标MAC地址是广播MAC,源IP地址是自己的IP,目标IP是即将要下发的IP地址)
3.没有收到ARP应答后,DHCP服务器发送DHCP Offer信息:此信息仍是一个广播包(但包中包含即将要租出去的IP地址),源是服务器自己,目标MAC和IP是广播。这样是为了告知网络上其他的DHCP服务器,他即将为一个单机租出去一个IP地址。
4.客户端收到DHCP Offer信息,单机发送DHCP Request租约选择信息到服务器,表示它将使用这个服务器所提供的IP地址。此数据仍然是一个广播包(但包中数据包含它选择的DHCP服务器和这个服务器为其提供的IP地址),源MAC是自己的MAC,目标MAC全F,源IP是0.0.0.0,目标IP是255.255.255.255。因为此时单机也要告知网络中的其它DHCP服务器它选择了某个IP服务器提供的某个IP地址。
5.DCHP收到 Request后,发送DHCP ACK确认信息,以此确认租约的成立。
6.单机收到确认信息后,利用下发的信息进行TCP/IP的属性配置,并发送一个ARP Reply包通知网络上的其它设备,该IP地址已经被使用。1.1.2.DHCP中继原理
在现实中,稍复杂一些的网络,服务器经常集中存放在服务器区,DHCP服务器和客户端不在同一个网段,DHCP的广播包被三层设备阻止,会导致DHCP获取地址失败。
此时,可以在离客户端最近的三层设备接口上配置DHCP中继,让其进行辅助寻址,进行DHCP请求广播包的转发。
在接口配置模式下:ip helper-addre a.b.c.d(DHCP服务器的IP地址)
1.2.DHCP配置
DHCP可以在3层交换机上或者路由器上进行配置 一般的DHCP配置:
首先要在下方DHCP地址的接口必须拥有一个合法的IP地址。r1(config)#ipdhcp pool aaa全局配置下定义一个名叫aaa的地址池
r1(dhcp-config)#network 192.168.1.0 255.255.255.01.从地址范围中找接口地址,激活改接口
使之成为下方DHCP的接口 2.定
义下放的地址范围
PS:当有一个路由器下被VLAN划分为多个网段时,可以在路由器上或者三层上定义多个地址池,然后进行下发
r1(dhcp-config)#default-router 192.168.1.254定义下发的网关地址 r1(dhcp-config)#dns-server 8.8.8.8定义下发的DNS地址
r1(config)#ipdhcp excluded-addre 192.168.1.66定义不给予下发的一个地址
r1(config)#ipdhcp excluded-addre 192.168.1.1 192.168.1.9定义不给予下发的地址段
在show run 的信息中可以看到定义的地址池和排除的地址
VLAN间的DHCP、DHCP中继配置:
为多个Vlan中的主机下发IP地址,远端路由器可以通过DHCP中继对其广播域中主机下发IP地址。实验拓扑配置如下:
边拓扑所存在的问题
在路由器R1下(左边路由器),连接一个3560,3560做DHCP,下方两个2960进行Vlan的划分,PC0、2属于Vlan2,PC1、3属于Vlan3(VLAN2网段192.168.1.0/24,VLAN3网段172.16.1.0/24) 在路由器R2下(右边路由器),连接两个2960,进行Vlan的划分,PC4、7属于Vlan2,PC5、6属于Vlan3 目标:PC4、5自动获取可以从3560上地址池中获得地址,并且可以实现全网可达,即PC之间可以互相通信。
配置如下:先搞通左边的VLAN之间通信、DHCP、PC与路由器之间通信,在搞通右边,然后左右在串联起来,做DHCP中继。
左边部分配置:
1.首先在2960中,划分Vlan2和Vlan3,将其与3560或者路由器连接的端口配置为Trunk Sw1(config)#vlan 2创建Vlan2 Sw1(config-vlan)#name ccna为Vlan2命名 Sw1(config-vlan)#exit Sw1(config)#vlan 3创建Vlan3 Sw1(config-vlan)#name ccnp Sw1(config-vlan)#exit Sw1(config)#intfastEthernet 0/1 Sw1(config-if)#switchport mode acce将f0/1端口配置为acce模式 Sw1(config-if)#switchport acce vlan 2将f0/1端口划分到Vlan2中 Sw1(config)#intfastEthernet 0/2 Sw1(config-if)#switchport mode acce将f0/1端口配置为acce模式 Sw1(config-if)#switchport acce vlan3
将f0/1端口划分到Vlan2中
Sw1(config-if)#exit Sw1(config)#intfastEthernet 0/24将与3560连接的24号端口配置为Trunk,配置后24称为主
干端口,Trunk默认承载所有Vlan信息,如果想手动配置只允许主干端口传输某个
Vlan可以通过命令,在主干端口下:switchport trunk allowed vlan2、3、4(或者单个VLAN号)
Sw1(config-if)#switchport mode trunk 2.VLan划分完成后,左边部分Vlan之间可以进行正常通信,PC之间要正常通信,应先与自己的路由器通信正常。
在3560与路由器连接的端口24口上,配置一个IP,给路由器的f0/0口也配上一个同网段IP,配置如下:
Switch(config)#intfastEthernet 0/24 Switch(config-if)#no switchport
PS:交换机上端口默认是二层交换端口不能配置
IP,通过命令no switchport关闭二层端口后
才可以进行IP地址的配置
Switch(config-if)#ip add 10.1.1.2 255.255.255.0 Switch(config-if)#no shutdown
Router(config)#int fa0/0给路由器配置IP地址
Router(config-if)#ip add 10.1.1.1 255.255.255.0 Router(config-if)#no shutdown 3.因为路由器并不知道自己内部主机的网段信息,故需要进行路由的配置 Router(config)#ip route 192.168.1.0 255.255.255.0 10.1.1.2 Router(config)#ip route 172.16.1.0 255.255.255.0 10.1.1.2 4.在3560上做DHCP Switch(config)#ipdhcp pool aaa创建名为aaa的地址池
Switch(dhcp-config)#network 192.168.1.0 255.255.255.0定义VLAN2的地址池 Switch(dhcp-config)#default-router 192.168.1.254下发网关
Switch(dhcp-config)#dns-server 8.8.8.8下发DNS Switch(dhcp-config)#lease 7
进行DHCP租约的设置,默认为无期限这里设置租约为7天 Switch(dhcp-config)#exit Switch(config)#ipdhcp pool bbb Switch(dhcp-config)#network 172.16.1.0 255.255.255.0定义VLAN3的地址池 Switch(dhcp-config)#default-router 172.16.1.254 Switch(dhcp-config)#dns-server 8.8.8.8 Switch(dhcp-config)#exit Switch(config)#ipdhcp excluded-addre 192.168.1.1 192.168.1.100 VLAN2的地址池进行排除,192.168.1.1~192.168.1.00范围
内的地址不进行下方
Switch(config)#ipdhcp excluded-addre 172.16.1.1 172.16.1.100
VLAN2的地址池排除 可以看到PC0、1、2、3均得到相应的IP地址,测试之间的通信正常,至此左边部分已经搞通。
右边部分的配置:
1.路由器R1和R2分别配置IP为12.1.1.1/24,12.1.1.2/24,PT中别忘记在R1上配置时钟频率(接口下clock rate 64000或者9600)。
2.在两个2960上分别划分好VLAN2、3配置与上面相同,此处略。3.由于此右边拓扑结构中没有三层交换机(也称之为单臂路由结构),所以要使用路由器来实现VLAN间的通信。交换机和交换机之间也要进行VLAN的打标,所以要将两个交换机之间相连的23号端口配置为主干端口(配置略)。
4.路由器实现VLAN之间通信,必须启用路由器的子接口封装802.1Q,标识VLAN ID。Router(config)#int f0/0 Router(config-if)#no ip addre 路由器与交换机连接的真实接口不能配置IP地址 Router(config-if)#no shutdown
开启路由器与交换机相连的真实端口 Router(config-if)#int fa0/0.1启用路由器子接口
Router(config-subif)#ip add 10.1.2.254 255.255.255.0 Router(config-subif)#encapsulation dot1Q ?封装协议为820.1Q IEEE 802.1Q VLAN ID Router(config-subif)#encapsulation dot1Q 22表示的是子接口所对应的VLAN ID Router(config-subif)#ip add 10.1.2.254 255.255.255.0为子接口配置与VLAN ID相对应的IP地址,也是下面单机所需要的网关,可以想象为三层上为VLAN配置IP地址
Router(config-subif)#exit Router(config)#int fa0/0.2 Router(config-subif)#encapsulation dot1Q 3 Router(config-subif)#ip add 10.1.3.254 255.255.255.0 Router(config-subif)#no shutdown
给右边单机配置上静态IP测试发现右边PC之间已经可以进行通信。给3560上配置静态路由
Switch(config)#ip route 12.1.1.0 255.255.255.0 10.1.1.1 Switch(config)#ip route 10.1.2.0 255.255.255.0 10.1.1.1 Switch(config)#ip route 10.1.3.0 255.255.255.0 10.1.1.1 R1上配置静态路由
r1(config)#ip route 10.1.2.0 255.255.255.0 12.1.1.2 r1(config)#ip route 10.1.3.0 255.255.255.0 12.1.1.2 R2上配置静态路由
R2(config)#ip route 10.1.1.0 255.255.255.0 12.1.1.1 R2(config)#ip route 192.168.1.0 255.255.255.0 12.1.1.1 R2(config)#ip route 172.16.1.0 255.255.255.0 12.1.1.1 测试已经可以全网可达,在测试没有其他问题的情况下,现在就让右边的单机通过中继安心的自动获取IP吧
现在让右边单机从3560上进行IP的自动获取——DHCP中继
对于与DHCP不在同一网段的单机而言要自动获取IP地址,可以让连接单机的三层设备路由器或者三层交换机充当DHCP中继,代为转发DHCP请求。 在定义DHCP中继获取IP前,要现在3560上为右边的VLAN2和VLAN3定义好地址池和下放的网关、dns等等。配置如下:
在3560上增加DHCP地址池
Switch(config)#ipdhcp pool ccc Switch(dhcp-config)#network 10.1.2.0 255.255.255.0 Switch(dhcp-config)#default-router 10.1.2.254 Switch(dhcp-config)#dns-server 8.8.8.8 Switch(dhcp-config)#exit Switch(config)#ipdhcp pool ddd Switch(dhcp-config)#network 10.1.3.0 255.255.255.0 Switch(dhcp-config)#default-router 10.1.3.254 Switch(dhcp-config)#dns Switch(dhcp-config)#dns-server 8.8.8.8 Switch(dhcp-config)#exit Switch(config)#ipdhcp excluded-addre 10.1.2.1 10.1.2.200 Switch(config)#ipdhcp excluded-addre 10.1.3.1 10.1.3.220 在R2上做DHCP中继
Router(config)#int fa0/0.1不管单机和DHCP服务器之间经过多少台设备,只需配置离DHCP
单机因为进的那个接口即可。f0/0.1对应的是VLAN2的地址所以在此接口下进行中继配置。
Router(config-subif)#ip helper-addre 10.1.1.2
//把收到的DHCP广播包以单播的方式转发到服务器10.1.1.2 Router(config-subif)#exit Router(config)#int fa0/0.2 Router(config-subif)#ip helper-addre 10.1.1.2