18、DHCP
Dynamic Host Configuration Protocol
DHCP的前身:Bootstrap
DHCP的封装
DHCP基本知识点
1 、DHCP协议在RFC2131中定义,使用udp协议进行数据报传递,使用的端口是67以及68。DHCP的前身是
2 、DHCP最常见的应用是,自动给终端设备分配IP地址,掩码,默认网关,但是DHCP也同样可以给终端设备自动配置其他options,比如DNS server, 域名(比如 net130.com),time zones, NTP servers 以及其他的配置内容,更有些厂家,利用自己开发的第3方软件,把自己的一些配置信息,利用dhcp协议来实现对终端设备的自动配置。
3 、DHCP服务的系统最基本的构架是 client/server模式,client向server发请求去获取IP地址。并且如果client 和server不在同一个2层网络内(即广播可以到达的网络范围),则必须要有能够透过广播报文的中继设备,或者能把广播报文转化成单播报文的设备(cisco的ios就引进了这种功能)
4、同一个网段DHCP服务器可以有多个,这不会影响终端设备从服务器获取配置信息,终端设备以接受到的第一组配置信息为准。以后收到的服务器返回的DHCP配置信息被抛弃。
DHCP提供三种 IP 定位方式:
Manual Allocation
网络管理员为某些少数特定的Host绑定固定IP地址,且地址不会过期
Automatic Allocation
自动分配,其情形是:一旦 DHCP 客户端第一次成功的从 DHCP 服务器端申请到 IP 地址之后,就永远使用这个地址。
Dynamic Allocation
动态分配,当 主机第一次从 DHCP 服务器端租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个 IP 地址,以给其它工作站使用。当然,客户端可以比其它主机更优先的更新(renew)租约,或是租用其它的 IP 地址。
DHCP封包格式
以下为各字段的简要说明:
OP
若是 client 送给 server 的封包,设为 1 ,反向为 2 。
HTYPE
硬件类别,Ethernet 为 1 。
HLEN
硬件地址长度, Ethernet 为 6 。
HOPS
若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0 。
TRANSACTION ID
DHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据。
SECONDS
Client 端启动时间(秒)。
FLAGS
从 0 到 15 共 16 bits ,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。
ciaddr
要是 client 端想继续使用之前取得之 IP 地址,则列于这里。
yiaddr
从 server 送回 client 之 DHCP OFFER 与 DHCPACK 封包中,此栏填写分配给 client 的 IP 地址。
siaddr
若 client 需要透过网络开机,从 server 送出之 DHCP OFFER、DHCPACK、DHCPNACK 封包中,此栏填写开机程序代码所在 server 之地址。
giaddr
若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0 。
chaddr
Client 之硬件地址。
sname
Server 之名称字符串,以 0x00 结尾。
file
若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。
DHCP的请求过程:
可以分为四个阶段:
1、client向server发送请求,发向广播地址
2、server向client回应一个IP,发向单播地址
3、client向server回应一个确认,发向广播地址,表示自已已得到IP地址,这样可以防止在网络上有多台DHCP服务器的情况下,其它服务器不会再给它分配IP
4、server再向client回应一个确认
详细的解释:
1.发现阶段,即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
2.提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。
3.选择阶段,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。(request的两个作用:通知服务器不用分配IP给它;通知服务器允许使用IP)
4.确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。
5.重新登录。以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
6.更新租约。DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。
DHCP基本知识点
1 、DHCP协议在RFC2131中定义,使用udp协议进行数据报传递,使用的端口是67以及68。DHCP的前身是
2 、DHCP最常见的应用是,自动给终端设备分配IP地址,掩码,默认网关,但是DHCP也同样可以给终端设备自动配置其他options,比如DNS server, 域名(比如 net130.com),time zones, NTP servers 以及其他的配置内容,更有些厂家,利用自己开发的第3方软件,把自己的一些配置信息,利用dhcp协议来实现对终端设备的自动配置。
3 、DHCP服务的系统最基本的构架是 client/server模式,client向server发请求去获取IP地址。并且如果client 和server不在同一个2层网络内(即广播可以到达的网络范围),则必须要有能够透过广播报文的中继设备,或者能把广播报文转化成单播报文的设备(cisco的ios就引进了这种功能)
4、同一个网段DHCP服务器可以有多个,这不会影响终端设备从服务器获取配置信息,终端设备以接受到的第一组配置信息为准。以后收到的服务器返回的DHCP配置信息被抛弃。
DHCP提供三种 IP 定位方式:
Manual Allocation
网络管理员为某些少数特定的Host绑定固定IP地址,且地址不会过期
Automatic Allocation
自动分配,其情形是:一旦 DHCP 客户端第一次成功的从 DHCP 服务器端申请到 IP 地址之后,就永远使用这个地址。
Dynamic Allocation
动态分配,当 主机第一次从 DHCP 服务器端租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个 IP 地址,以给其它工作站使用。当然,客户端可以比其它主机更优先的更新(renew)租约,或是租用其它的 IP 地址。
DHCP封包格式
以下为各字段的简要说明:
OP
若是 client 送给 server 的封包,设为 1 ,反向为 2 。
HTYPE
硬件类别,Ethernet 为 1 。
HLEN
硬件地址长度, Ethernet 为 6 。
HOPS
若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0 。
TRANSACTION ID
DHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据。
SECONDS
Client 端启动时间(秒)。
FLAGS
从 0 到 15 共 16 bits ,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。
ciaddr
要是 client 端想继续使用之前取得之 IP 地址,则列于这里。
yiaddr
从 server 送回 client 之 DHCP OFFER 与 DHCPACK 封包中,此栏填写分配给 client 的 IP 地址。
siaddr
若 client 需要透过网络开机,从 server 送出之 DHCP OFFER、DHCPACK、DHCPNACK 封包中,此栏填写开机程序代码所在 server 之地址。
giaddr
若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0 。
chaddr
Client 之硬件地址。
sname
Server 之名称字符串,以 0x00 结尾。
file
若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。
DHCP的请求过程:
可以分为四个阶段:
1、client向server发送请求,发向广播地址
2、server向client回应一个IP,发向单播地址
3、client向server回应一个确认,发向广播地址,表示自已已得到IP地址,这样可以防止在网络上有多台DHCP服务器的情况下,其它服务器不会再给它分配IP
4、server再向client回应一个确认
详细的解释:
1.发现阶段,即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
2.提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。
3.选择阶段,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。(request的两个作用:通知服务器不用分配IP给它;通知服务器允许使用IP)
4.确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。
5.重新登录。以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
6.更新租约。DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。
DHCP基本知识点
1 、DHCP协议在RFC2131中定义,使用udp协议进行数据报传递,使用的端口是67以及68。DHCP的前身是
2 、DHCP最常见的应用是,自动给终端设备分配IP地址,掩码,默认网关,但是DHCP也同样可以给终端设备自动配置其他options,比如DNS server, 域名(比如 net130.com),time zones, NTP servers 以及其他的配置内容,更有些厂家,利用自己开发的第3方软件,把自己的一些配置信息,利用dhcp协议来实现对终端设备的自动配置。
3 、DHCP服务的系统最基本的构架是 client/server模式,client向server发请求去获取IP地址。并且如果client 和server不在同一个2层网络内(即广播可以到达的网络范围),则必须要有能够透过广播报文的中继设备,或者能把广播报文转化成单播报文的设备(cisco的ios就引进了这种功能)
4、同一个网段DHCP服务器可以有多个,这不会影响终端设备从服务器获取配置信息,终端设备以接受到的第一组配置信息为准。以后收到的服务器返回的DHCP配置信息被抛弃。
DHCP提供三种 IP 定位方式:
Manual Allocation
网络管理员为某些少数特定的Host绑定固定IP地址,且地址不会过期
Automatic Allocation
自动分配,其情形是:一旦 DHCP 客户端第一次成功的从 DHCP 服务器端申请到 IP 地址之后,就永远使用这个地址。
Dynamic Allocation
动态分配,当 主机第一次从 DHCP 服务器端租用到 IP 地址之后,并非永久的使用该地址,只要租约到期,客户端就得释放(release)这个 IP 地址,以给其它工作站使用。当然,客户端可以比其它主机更优先的更新(renew)租约,或是租用其它的 IP 地址。
DHCP封包格式
以下为各字段的简要说明:
OP
若是 client 送给 server 的封包,设为 1 ,反向为 2 。
HTYPE
硬件类别,Ethernet 为 1 。
HLEN
硬件地址长度, Ethernet 为 6 。
HOPS
若封包需经过 router 传送,每站加 1 ,若在同一网内,为 0 。
TRANSACTION ID
DHCP REQUEST 时产生的数值,以作 DHCPREPLY 时的依据。
SECONDS
Client 端启动时间(秒)。
FLAGS
从 0 到 15 共 16 bits ,最左一 bit 为 1 时表示 server 将以广播方式传送封包给 client ,其余尚未使用。
ciaddr
要是 client 端想继续使用之前取得之 IP 地址,则列于这里。
yiaddr
从 server 送回 client 之 DHCP OFFER 与 DHCPACK 封包中,此栏填写分配给 client 的 IP 地址。
siaddr
若 client 需要透过网络开机,从 server 送出之 DHCP OFFER、DHCPACK、DHCPNACK 封包中,此栏填写开机程序代码所在 server 之地址。
giaddr
若需跨网域进行 DHCP 发放,此栏为 relay agent 的地址,否则为 0 。
chaddr
Client 之硬件地址。
sname
Server 之名称字符串,以 0x00 结尾。
file
若 client 需要透过网络开机,此栏将指出开机程序名称,稍后以 TFTP 传送。
DHCP的请求过程:
可以分为四个阶段:
1、client向server发送请求,发向广播地址
2、server向client回应一个IP,发向单播地址
3、client向server回应一个确认,发向广播地址,表示自已已得到IP地址,这样可以防止在网络上有多台DHCP服务器的情况下,其它服务器不会再给它分配IP
4、server再向client回应一个确认
详细的解释:
1.发现阶段,即DHCP客户机寻找DHCP服务器的阶段。DHCP客户机以广播方式(因为DHCP服务器的IP地址对于客户机来说是未知的)发送DHCP discover发现信息来寻找DHCP服务器,即向地址255.255.255.255发送特定的广播信息。网络上每一台安装了TCP/IP协议的主机都会接收到这种广播信息,但只有DHCP服务器才会做出响应。
2.提供阶段,即DHCP服务器提供IP地址的阶段。在网络中接收到DHCP discover发现信息的DHCP服务器都会做出响应,它从尚未出租的IP地址中挑选一个分配给DHCP客户机,向DHCP客户机发送一个包含出租的IP地址和其他设置的DHCP offer提供信息。
3.选择阶段,即DHCP客户机选择某台DHCP服务器提供的IP地址的阶段。如果有多台DHCP服务器向DHCP客户机发来的DHCP offer提供信息,则DHCP客户机只接受第一个收到的DHCP offer提供信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容。之所以要以广播方式回答,是为了通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。(request的两个作用:通知服务器不用分配IP给它;通知服务器允许使用IP)
4.确认阶段,即DHCP服务器确认所提供的IP地址的阶段。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。然后DHCP客户机便将其TCP/IP协议与网卡绑定,另外,除DHCP客户机选中的服务器外,其他的DHCP服务器都将收回曾提供的IP地址。
5.重新登录。以后DHCP客户机每次重新登录网络时,就不需要再发送DHCP discover发现信息了,而是直接发送包含前一次所分配的IP地址的DHCP request请求信息。当DHCP服务器收到这一信息后,它会尝试让DHCP客户机继续使用原来的IP地址,并回答一个DHCP ack确认信息。如果此IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,它就必须重新发送DHCP discover发现信息来请求新的IP地址。
6.更新租约。DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。
DHCP配置
Router(config)#no ip dhcp conflict logging 关闭冲突记录信息
Router(config)#ip dhcp pool WOLF 启用DHCP功能,起个名字
Router(dhcp-config)#network 12.1.1.0 255.255.255.0 地址池
Router(dhcp-config)#default-router 12.1.1.1 配置网关
Router(dhcp-config)#dns-server 202.96.128.68 配置DNS
Router(dhcp-config)#lease 10 修改租期为10天
Router(config)#ip dhcp excluded-address 12.1.1.1 12.1.1.10 保留这十个地址,不下放,通常这些地址是给其它固定设备用的。
Debug ip dhcp server packet
Show ip dhcp binding 查看ip地址和mac地址的绑定
Router(config)#ip dhcp ping packets 3 DHCP服务器在分配一个地址之前,要先对这个地址PING一下(默认PING两个包),用来确定这个地址是否已被其他主机所用。
在client端:
Router(config-if)#ip address dhcp
show dhcp lease 显示学习到的地址
show dhcp server 显示学习到的其它信息
在一台路由器上可以同时配很多个DHCP服务,取不同的名,接口根据自己的IP地址来决定下发哪一个DHCP服务
DHCP的中继:
1、在客户端设备和DHCP服务器不再同一广播域内的时候(例如上图),中间设备即路由器(有路由功能的设备)必须要能够转发这种广播包,具体到cisco的设备上,则启用ip helper-address命令,来实现这种中继。
2、DHCP服务器要给终端设备分配地址时需要掌握两个重要的信息,第一,该客户端设备所在网络的子网,DHCP服务器依据子网的信息来判断,服务器该分配哪个IP地址,以使得该IP地址在那个子网内,第二,DHCP服务器必须知道客户端的MAC地址,以维护DHCP服务器的IP地址和MAC之间的映射关系,由此保证同样一台客户机,每次启动后能获得和前一次相同的IP地址。
3、配置了ip helper-address命令之后的路由器在中继DHCP请求时的工作过程如下
1)DHCP客户端发送请求,由于没有ip地址,所以自己的源IP地址为0.0.0.0,而且也不知道目的DHCP服务器的地址,所以为广播255.255.255.255。该数据报中当然还包含其他信息,比如二层的信息,源mac地址,和目的mac地址FFFF.FFFF.FFFF。
2)当路由器接收到该数据报的时候,他就用自己的接口地址(接收到数据报的接口)来取代源地址0.0.0.0,并且用ip help-address 命令中指定的地址来取代目的地址255.255.255.255
3)当DHCP服务器接收到路有器转发过来的DHCP请求包时,他有了足够的信息,(由源IP地址中的地址,确定客户机所在的子网,由此分配相应地址池中的空闲地址,并且知道了客户机的MAC地址,把它写入自己的数据库,建立IP地址和MAC的映射关系)然后DHCP服务器做出响应,并且由路由器把数据报转发给客户端。(整个过程应该在客户机和服务器之间还有一次会话,由于这不是路由器DHCP配置的讨论重点,这里不谈)
4)如果配置了两个DHCP服务器,我们必须分别用ip helper-address 命令指明,路有器会转发DHCP请求包到所有的DHCP服务器上。很多企业的做法都是至少有两台DHCP服务器,有提高冗余和可靠性的作用。此时,如果客户端受到几个来自不同DHCP服务器的应答,则只选择最先接收到的应答数据报。
5)必须要注意的是;ip helper-address 命令不仅仅是只转发DHCP请求包,事实上,在默认情况下,他还转发其他的UDP报(比如DNS请求)到ip helper-address命令所指定的服务器上,所以这种额外的数据流量可能会增加DHCP服务器链路的负担以及服务器CPU负担,可能会引起问题。
配置实例:
R1(config)#intface e0
R1(config-if)#Ip helper-address 13.1.1.3--这个地址是DHCP服务器的地址
Ip helper-address 13.1.1.3的作用:可以帮助R1在E0口收到主机发过来的广播包时去把这个广播包转化成单播包再发送给DHCP服务器(发到E0口时转化SIP:10.1.1.1 DIP:13.1.1.3)
show ip int e0 查看helper-address信息
R3(config)#ip dhcp pool WOLF
R3(dhcp-config)#network 192.168.1.0 255.255.255.0
注意:在DHCP服务器上还必须有去PC所在网段的路由
注意:ip helper-address 命令默认情况下会转发8种UDP广播包,会占用带宽,建议关掉其他7种广播包的转发。
R1(config)#no ip forward-protocol udp ***----用来指明那些UDP的广播包允许用ip helper-address切换成单播去转发。
options
允许厂商定义选项(Vendor-Specific Area),以提供更多的设定信息(如:Netmask、Gateway、DNS、等等)。其长度可变,同时可携带多个选项,每一选项之第一个 byte 为信息代码,其后一个 byte 为该项数据长度,最后为项目内容。 CODE LEN VALUE 此字段完全兼容 BOOTP ,同时扩充了更多选项。其中,DHCP 封包可利用编码为 0x53 之选项来设定封包类别:
项值 类别
1 DHCP DISCOVER
2 DHCP OFFER
3 DHCP REQUEST
4 DHCPDECLIENT
5 DHCPACK
6 DHCPNACK
7 DHCPRELEASE
OPTION 82
所谓Option 82是DHCP报文中的一个选项,支持option 82的接入交换机在做DHCP Relay的时候会在DHCP请求报文中的Option 82字段写入信息,包括交换机的MAC地址(这是对交换机的定位),以及DHCP请求是从交换机的那个端口进入网络的。利用这一功能,DHCP不仅仅可以提供IP和MAC的关联,还可以成功的将IP地址和计算机的物理接入位置有机的结合在一起。这对Trouble shooting、攻击定位都给予了极大的帮助。