searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

DHCPv6报文交互过程

2022-12-29 09:35:55
5523
0

前面我们提到IPv6地址的配置方式比较丰富,支持有状态地址配置、无状态地址配置和手工配置等配置方式,并且就手工配置方式和IPv6的地址架构进行了充分介绍。

相比于无状态地址配置和手工配置的方式,DHCPv6有状态地址配置能更好地控制地址的分配。和IPv4的DHCP一样,服务器可以为特定主机分配特定的地址,以便于网络管理。还可以为主机分配DNS服务器、域名、域名后缀、SIP(Session Initiation Protocol,会话起始协议)服务器地址或域名等网络配置参数。

与IPv4的DHCP不同的是,DHCPv6除了支持分配IPv6地址,还支持为客户端分配前缀,以便于全网络的自动配置和管理。

我们先来看一个比较正常的DHCPv6动态分配IPv6地址配置。

组网非常简单,就是一台DHCPv6服务器为客户端分配IPv6地址。

配置之前先接单介绍一下IPv6邻居发现(Neighbor Discovery,ND消息中比较重要的路由器请求消息RS(Router Solicitation路由器通告消息RA(Router Advertisement,RS消息用于请求前缀和其他配置信息,以实现节点的自动配置,而RA消息是对RS消息进行响应。

也就是说,在本案例中,DHCPv6客户端会向DHCPv6服务器发送RS消息来请求配置信息,而DHCPv6服务器会响应DHCPv6客户端的请求。

但在RA消息中,又有两个比较重要的标志位:被管理地址配置标志位(M flag其他信息配置标志位(O flag。在配置DHCPv6服务器时,要配置被管理地址的配置标志位(M flag)的值为1,即主机采用有状态自动配置(通过DHCPv6服务器)获取IPv6地址;配置其他信息配置标志位(O flag)的值为1,即主机通过DHCPv6服务器获取除IPv6地址以外的其他信息。以上配置统称为取消设备发布RA消息的抑制。

配置DHCPv6服务器接口IPv6地址,同时配置接口工作在DHCPv6服务器模式。

#
interface GigabitEthernet2/0
 port link-mode route
 ipv6 dhcp select server
 ipv6 address 1::1/64
 ipv6 nd autoconfig managed-address-flag
 ipv6 nd autoconfig other-flag
 undo ipv6 nd ra halt

配置IPv6地址池1,为1::/64网段的客户端分配IPv6地址,配置DNS服务器地址为2::2,配置主机域名后缀为guotiejun.com,配置网关为1::1。

#
ipv6 dhcp pool 6
 network 1::/64
 dns-server 2::2
 domain-name guotiejun.com
 gateway-list 1::1

配置完成之后查看初级获取到的IPv6地址信息。

可以看到,主机上一下子有了4个IPv6地址,其中一个首选地址是1::2,很明显,这个是从DHCPv6服务器获取到的;还有两个地址也是1::的前缀,但是目前看不出来是怎么来的,因为抓包的时候报文太多了;还有一个FE80的本地链路地址。还能看到获取到的DNS服务器和DNS后缀和服务器配置的一样。

通过display ipv6 dhcp server ip-in-use命令在DHCPv6服务器上查看已经分配的IPv6地址信息。

电脑的报文太杂,把客户端换成路由器测试一下。

这次报文就好看多了,可以看到报文交互使用了以下几种类型的IPv6地址:

1、fe80打头的链路本地地址,分别是FE80::2E5F:80FF:FE16:105(服务器)和FE80::2E5F:82FF:FE0D:205(客户端);

2、ff打头的组播地址,ff02表示本地链路上的所有IPv6 路由器组;

3、::表示未指定地址;

4、1::2和1::1两个全球单播地址。

可以看到配置完RA消息的M位和O位之后,服务器发送的RA消息中对应标志位已经设置为1。

可以看到DHCPv6的交互报文为4个,属于标准的交互4个消息的分配过程。除此之外,还有一种交互2个消息的快速分配过程。

第1个报文是客户端发送的Solicit消息,请求DHCPv6服务器为其分配IPv6地址和网络配置参数。

这里面,我们可以看到客户端消息中携带的链路层地址和真实MAC地址的最后两位不相同,原因现在还不知道。Option Request中的参数可以说是覆盖服务器能配置的所有参数。

第2个报文是DHCPv6服务器回复的Advertise消息,通知客户端为其分配的IPv6地址为1::2,域名后缀为guotiejun.com,DNS服务器为2::2。同样的,这里可以看到服务器和客户端消息中携带的链路层地址和真实MAC地址的最后两位不相同,原因现在还不知道。

第3个报文是客户端向服务器发送Request消息,请求服务器确认为其分配IPv6地址1::2和其他配置参数。如果网络中有多个DHCPv6服务器,则根据报文中的Server Identifier进行标识。

第4个报文是DHCPv6服务器回复客户端的Reply消息,确认将地址1::2分配给该客户端使用,同时下发其他网络配置参数。

在客户端上使用命令display ipv6 dhcp client查看DHCPv6客户端的信息。

状态基本上都是对的,现在我们把1::2配置为不参与自动分配的IPv6地址,查看一下客户端重新获取地址的情况。

#
 ipv6 dhcp server forbidden-address 1::2

可以看到,客户端再次请求地址时,被分配了1::3的IPv6地址。

查看DHCPv6客户端的信息。

这里比较有意思的就是路由表,无论是电脑还是路由器作为客户端,显示的网关都是FE80的地址。

但是不同的是,路由器上无法对这个地址执行ping操作,而Windows上却可以,但是第一个包会丢。

真是神奇又尴尬呢,看来之前有地方是说错了。

0条评论
0 / 1000
SD万
89文章数
22粉丝数
SD万
89 文章 | 22 粉丝
原创

DHCPv6报文交互过程

2022-12-29 09:35:55
5523
0

前面我们提到IPv6地址的配置方式比较丰富,支持有状态地址配置、无状态地址配置和手工配置等配置方式,并且就手工配置方式和IPv6的地址架构进行了充分介绍。

相比于无状态地址配置和手工配置的方式,DHCPv6有状态地址配置能更好地控制地址的分配。和IPv4的DHCP一样,服务器可以为特定主机分配特定的地址,以便于网络管理。还可以为主机分配DNS服务器、域名、域名后缀、SIP(Session Initiation Protocol,会话起始协议)服务器地址或域名等网络配置参数。

与IPv4的DHCP不同的是,DHCPv6除了支持分配IPv6地址,还支持为客户端分配前缀,以便于全网络的自动配置和管理。

我们先来看一个比较正常的DHCPv6动态分配IPv6地址配置。

组网非常简单,就是一台DHCPv6服务器为客户端分配IPv6地址。

配置之前先接单介绍一下IPv6邻居发现(Neighbor Discovery,ND消息中比较重要的路由器请求消息RS(Router Solicitation路由器通告消息RA(Router Advertisement,RS消息用于请求前缀和其他配置信息,以实现节点的自动配置,而RA消息是对RS消息进行响应。

也就是说,在本案例中,DHCPv6客户端会向DHCPv6服务器发送RS消息来请求配置信息,而DHCPv6服务器会响应DHCPv6客户端的请求。

但在RA消息中,又有两个比较重要的标志位:被管理地址配置标志位(M flag其他信息配置标志位(O flag。在配置DHCPv6服务器时,要配置被管理地址的配置标志位(M flag)的值为1,即主机采用有状态自动配置(通过DHCPv6服务器)获取IPv6地址;配置其他信息配置标志位(O flag)的值为1,即主机通过DHCPv6服务器获取除IPv6地址以外的其他信息。以上配置统称为取消设备发布RA消息的抑制。

配置DHCPv6服务器接口IPv6地址,同时配置接口工作在DHCPv6服务器模式。

#
interface GigabitEthernet2/0
 port link-mode route
 ipv6 dhcp select server
 ipv6 address 1::1/64
 ipv6 nd autoconfig managed-address-flag
 ipv6 nd autoconfig other-flag
 undo ipv6 nd ra halt

配置IPv6地址池1,为1::/64网段的客户端分配IPv6地址,配置DNS服务器地址为2::2,配置主机域名后缀为guotiejun.com,配置网关为1::1。

#
ipv6 dhcp pool 6
 network 1::/64
 dns-server 2::2
 domain-name guotiejun.com
 gateway-list 1::1

配置完成之后查看初级获取到的IPv6地址信息。

可以看到,主机上一下子有了4个IPv6地址,其中一个首选地址是1::2,很明显,这个是从DHCPv6服务器获取到的;还有两个地址也是1::的前缀,但是目前看不出来是怎么来的,因为抓包的时候报文太多了;还有一个FE80的本地链路地址。还能看到获取到的DNS服务器和DNS后缀和服务器配置的一样。

通过display ipv6 dhcp server ip-in-use命令在DHCPv6服务器上查看已经分配的IPv6地址信息。

电脑的报文太杂,把客户端换成路由器测试一下。

这次报文就好看多了,可以看到报文交互使用了以下几种类型的IPv6地址:

1、fe80打头的链路本地地址,分别是FE80::2E5F:80FF:FE16:105(服务器)和FE80::2E5F:82FF:FE0D:205(客户端);

2、ff打头的组播地址,ff02表示本地链路上的所有IPv6 路由器组;

3、::表示未指定地址;

4、1::2和1::1两个全球单播地址。

可以看到配置完RA消息的M位和O位之后,服务器发送的RA消息中对应标志位已经设置为1。

可以看到DHCPv6的交互报文为4个,属于标准的交互4个消息的分配过程。除此之外,还有一种交互2个消息的快速分配过程。

第1个报文是客户端发送的Solicit消息,请求DHCPv6服务器为其分配IPv6地址和网络配置参数。

这里面,我们可以看到客户端消息中携带的链路层地址和真实MAC地址的最后两位不相同,原因现在还不知道。Option Request中的参数可以说是覆盖服务器能配置的所有参数。

第2个报文是DHCPv6服务器回复的Advertise消息,通知客户端为其分配的IPv6地址为1::2,域名后缀为guotiejun.com,DNS服务器为2::2。同样的,这里可以看到服务器和客户端消息中携带的链路层地址和真实MAC地址的最后两位不相同,原因现在还不知道。

第3个报文是客户端向服务器发送Request消息,请求服务器确认为其分配IPv6地址1::2和其他配置参数。如果网络中有多个DHCPv6服务器,则根据报文中的Server Identifier进行标识。

第4个报文是DHCPv6服务器回复客户端的Reply消息,确认将地址1::2分配给该客户端使用,同时下发其他网络配置参数。

在客户端上使用命令display ipv6 dhcp client查看DHCPv6客户端的信息。

状态基本上都是对的,现在我们把1::2配置为不参与自动分配的IPv6地址,查看一下客户端重新获取地址的情况。

#
 ipv6 dhcp server forbidden-address 1::2

可以看到,客户端再次请求地址时,被分配了1::3的IPv6地址。

查看DHCPv6客户端的信息。

这里比较有意思的就是路由表,无论是电脑还是路由器作为客户端,显示的网关都是FE80的地址。

但是不同的是,路由器上无法对这个地址执行ping操作,而Windows上却可以,但是第一个包会丢。

真是神奇又尴尬呢,看来之前有地方是说错了。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
9
7