理论知识
FE80::/10链路本地地址(自动为本地设备配置的地址,做标识用,无法被路由,仅在本链路有效);
注意:链路本地地址仅仅在本链路范围有效,他起的作用就是标识本地节点用的,标识了节点方便我们跑路由协议建立邻居;且每个节点都会加入对应的IPV6组播节点地址,用来代替IPV4的ARP功能,下面我们用实验来进一步理解。
实例配置
EUI64配置链路本地地址
R1上:
ipv6 //全局开IPV6
interface GigabitEthernet0/0/0
ipv6 enable //接口起IPV6
ipv6 address auto link-local //开启链路本地地址自动配置
dis ipv6 int g 0/0/0 //查看接口的IPV6地址
可以看到链路本地地址:FE80::5689:98FF:FE14:378A
前缀是IPV6协议规定好的: FE80::/10
低64位是通过EUI64而来的:5689:98FF:FE14:378A
EUI64:将MAC地址转换为48位的二进制,在MAC地址的24位后插入16进制的FFFE(换算为二进制为16位),翻转第7位(即0变1,1变0)
加入的节点组播地址: FF02::1:FF14:378A
前缀是规定好的: FF02::1:FF/104
低24位:直接拷贝链路本地地址的低64位
IPV6链路本地地址的有效范围为本链路
我们在R1的G0口R2的G0和G1口全部都配置一样的链路本地地址
R2上G1口:链路本地地址状态也正常
R2上G0口:链路本地地址状态显示占用
由此可以确定链路本地地址生效范围仅仅在本链路范围内
链路本地地址邻居的建立
IPV6中不使用ARP表缓存MAC与IP对应映射,是通过IPV6邻居表。
命令:display ipv6 neighbors
IPV6邻居的状态迁移:
Empty(空闲):A发送NS请求包给B。
Incomplete(未完成):A已发送NS请求包,但未收到NA回复包,超过10S未收到NA则回到Empty状态;
Rechable(可达):已收到NA回复包;
Stale(陈旧):收到NA确认回复包已超过30S或是收到B的非请求NA;
Dely(延迟):在stale状态下发送过一个NA包,但5S内没有收到NA回复报文。
Probe(探查):每隔1S重传NA请求包直到收到NS回复报文。
实验拓扑
IPV6中地址查重通过NS、NA报文替换IPV4中ARP广播报文
当我们为接口配置一个地址后(不管是全局地址还是链路本地地址)都会主动发送一个组播报文,报文的源为 : : ,目的地址为配置的地址加入的节点组播地址(固定前缀FF02::1:FF+所配置的地址的低24bit)也就是相当于自己发给自己的被请求节点组播地址,如果有相同的地址肯定是会回包的
抓包上面试验的AR1上G0口,我们可以看到通过NA、NS报文的交互建立邻居
查看IPV6的邻居可以看到邻居的接口以及邻居的状态
IPV6里就没有ARP这个协议了,取代它的是ICMPV6中NS、NA报文
注意:NS、NA报文的范围仅是在本地链路范围内
理论知识
全局地址是运营商分配给我们一个全球单播地址,我们通过全球单播地址的前缀来进行我们自己局域网内IPV6全局地址的分配,也就是私有地址的分配;IPV6地址协议允许一台设备有多个IPV6全局地址,且都是有效的类似多活。
2000::/3全球单播地址(类似IPV4公网地址);
64位
64位
前缀
接口ID
全局路由前缀
子网(通常分配到64位)
主机位
全局地址的分配分为两种:有状态和无状态
有状态:通过DHCPV6服务器进行分配地址
无状态:不通过DHCPV6服务器分配地址,自己手动配置或者是SLAAC获取
1、无状态SLAAC获取地址(范围为本地链路)
也就是通过交互RA,RS报文来获取邻居发布的IPV6前缀,通过EUI64生成IPV6全局地址
拓扑:
AR1:
ipv6
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001::1/64
ipv6 nd ra prefix 2005::/64 60 60 //手动指定发放地址的前缀生存周期为60秒,时长为60秒
undo ipv6 nd ra halt //关闭IPV6的RA报文抑制,使其能发布RA报文
AR2/AR3:
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto global //开启自动获取全局地址
注意:如果不手动指定前缀则默认使用接口的全局地址前缀,时长的指定是因为IPV6规定通过无状态获取的地址是有时间的,到期后地址就失效,需要依赖定期发布的RA报文来刷新时间,所以最好将生成时间做最大值,否则会出现地址失效的问题。
在R1的接口上抓包查看报文:目的地址为组播地址FF02::1类似IPV4:224.0.0.1
查看R3的地址:
2、有状态获取地址
AR1上:
dhcp enable
dhcpv6 pool AR1 //DHCPV6地址池
address prefix 2001::/64
excluded-address 2001::1
dns-server 5000::1
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2001::1/64
undo ipv6 nd ra halt //向邻居发布RA报文,使client可以学习到IPV6网关的缺省路由
ipv6 nd autoconfig managed-address-flag //置位M标志位,向client发布地址前缀
ipv6 nd autoconfig other-flag //职位O指标志位,向client发布DNS等信息
dhcpv6 server AR1 //接口下调用,可以强制为快速发布,只会有两个报文一个solicit一个replay
AR2/AR3上:
dhcp enable
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto link-local
ipv6 address auto global default //接受RA报文,并通过RA报文学习缺省路由
ipv6 address auto dhcp
查看自动获取的接口地址:
dis ipv6 routing-table //查看路由表
AR1接口上抓包
DHCP中继的配置:
AR1上:server上
dhcp enable
dhcpv6 pool AR1
address prefix 2001::/64
excluded-address 2001::1
dns-server 3000::1
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2500::1/64
dhcpv6 server AR1 //调用地址
ipv6 route-static 2001:: 64 2500::2 //写路由,否则与AR2上的relay接口不通
AR2上:relay上:
dhcp enable
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address 2500::2/64
interface GigabitEthernet0/0/1
ipv6 enable
ipv6 address 2001::1/64
undo ipv6 nd ra halt //发RA报文
dhcpv6 relay destination 2500::1
AR3上:
interface GigabitEthernet0/0/0
ipv6 enable
ipv6 address auto link-local
ipv6 address auto global default //收RA报文并将IPV6网关缺省路由加入路由表
ipv6 address auto dhcp
查看地址:
我们在R3的接口上抓包是正常的DHCPV6报文
在R1接口上抓包是经过DHCP relay转发的单播报文
Relay forw报文是Relay转发client向server发送的请求报文
Relay reply报文是Relay转发server向client发送的回复报文
在一般的IPV6的网络项目上我们最常用到的就是这两类地址,链路本地地址与全球单播地址,注意链路本地地址仅可配置一个,全球单播地址可以配置多个且是多活。