笔记08:IPv6地址配置方法二——无状态地址自动配置SLAAC
yuyutoo 2024-10-11 21:41 2 浏览 0 评论
手动静态配置IPv6的方式比较合适于需要固定地址的服务器、路由器、交换机等。对于一般主机,自动配置IPv6地址则更显方便。自动配置IPv6地址方式主要分为无状态和有状态。
其中无状态地址自动配置SLAAC是一种简单的IPv6地址配置方式,支持几乎所有的网络终端。其缺点是:
- 路由器网关或服务器不记录分配给客户机的IPv6地址信息,不利于管理;
- 不能为指定终端分配固定的IPv6地址;
- 客户机只能获得可通信的全局IPv6地址,不能获取到诸如IPv6DNS等其他信息。
注:
无状态:是指负责地址分配的网关或服务器不会记录客户获得的IPv6地址,只在RA报文中携带前缀信息选项通告给客户端。该方式的缺点是不利于进行溯源。
无状态地址自动配置过程
IPv6设备能够自动为每个接口配置链路本地地址。通过路由器发现技术——交换RS和RA报文,设备即可确定邻居节点路由器的地址、链路上的前缀、无状态地址以及其他设置参数。路由器通告消息中包含的一些标志作用是:表示是否需要为额外的配置使用地址配置协议(如DHCPv6)。
无状态地址自动配置机制及过程大致如图1
- 接口启用IPv6协议后,将使用fe80::/64前缀和接口标识符构建一个临时状态的链路本地地址。(接口标识符可以随机生成,也可以基于EUI-64格式,看是否禁止了随机生成接口标识符功能)
- 主机发送NS报文(报文中的目标地址设置为上面生成的链路本地地址)对该临时的链路本地地址进行DAD。
- 如果该接口收到响应NS报文的NA报文,则表示该临时的链路本地地址重复了,需重新生成链路本地地址并进行DAD。
- 如果没有收到NA响应报文,则说明该临时链路本地地址是唯一的,将在接口上把该地址的状态更改为选用状态。
- 主机发送RS报文,源地址是上面通过DAD的链路本地地址,目的地址是FF02::2。
- 主机如果没收到RA报文,则使用DHCPv6配置地址——向DHCPv6服务器(组播地址FF02::1:2)或中继(组播地址FF05::1:3)发送DHCPv6请求报文,以完成地址配置。
- 如果收到RA报文,则检查RA报文中的“路由器生存时间”字段,如果值不为0,则将RA发送方设为自己的默认网关。
- 检查RA报文中的管理地址配置标志(M位),如是1,则使用DHCPv6配置地址。
- 检查RA报文中的其他状态化配置标志(O位),如是1,则采用DHCPv6获取地址外的其他参数信息。
- 检查RA报文,是否携带前缀信息,如果有,主机将提取RA报文中所有的前缀。
- 检查前缀中的链路上标志(L位),如是1(On-link),将该前缀加入自己的前缀列表(路由表)中。
- 检查前缀中的自治标志(A位),如是1,将进行无状态自动地址配置。
- 对临时IPv6地址做DAD,如果通过检测,则将地址状态转成首选状态。
- 继续检查前缀列表中每一个前缀的自治标志(A位),如是1,则生成随机的或基于EUI-64格式的接口标识符,加上对应的前缀构成临时状态的公用IPv6地址并进行DAD。
注:
- 无状态自动配置的地址可与有状态DHCPv6自动配置的地址并存。
- 无状态自动配置的地址的首选优先级一般高于有状态DHCPv6配置的地址。
自动配置地址的状态
自动配置地址存在以下几种状态,如图2。
- 试探(Tentative): 该地址正处于验证唯一性的过程中。验证通过DAD来实现的。处于此状态的地址无法接收单播流量,但可以接收和处理DAD的组播NA响应消息。
- 选用(Preferred): 该地址的唯一性已经被验证,是有效的地址,并且可用于实现不受限制的通信。节点可以发送和接收从选用地址出入的单播流量。通过“路由器通告”消息中“前缀信息”可选项中的“选用生存时间”字段或“DHCPv6 IA地址”可选项中的“选用生存时间”字段,可以判断出该地址处于试探和选用状态的时间周期。
- 弃用(Deprecated): 该地址的唯一性已经被验证,是有效的地址,但是并不鼓励将它用于新的通信。现存的通信会话仍然可以使用弃用的地址。节点可以发送和接收从弃用地址出入的单播流量。
- 有效(Valid): 该地址可以用于发送和接收单播流量。有效状态中包括选用(preferred)和弃用(deprecated)状态。通过“路由器通告”消息中“前缀信息”可选项的“有效生存时间”字段或“DHCPv6 IA(身份联系)地址”可选项中的有效生存时间字段,可以确定地址保持在试探、选用以及弃用状态的时间之和。
- 无效(Invalid): 该地址已不再用于发送或接收单播流量。在有效生存时间到期后,地址就进入无效状态。
SLAAC配置
下面使用H3C的模拟器进行SLAAC配置IPv6地址,地址规划示例如图3拓扑:
与《笔记07:IPv6地址配置方法一——手动静态配置》不同点在于,主要通过R2对PC2进行SLAAC配置。
一、路由器R1配置
# 进入全局配置模式
<H3C> system-view
# 修改主机名
[H3C] hostname R1
# 手工指定接口G6/1的全球单播地址。
[R1] interface gigabitethernet 6/1
[R1-GigabitEthernet6/1] ipv6 address 2001::1/64
# 手工指定接口G0/0的全球单播地址。
[R1-GigabitEthernet6/1] interface gigabitethernet 0/0
[R1-GigabitEthernet0/0] ipv6 address 2012::1/64
[R1-GigabitEthernet0/0] quit
二、路由器R2配置
# 进入全局配置模式
<H3C> system-view
# 修改主机名
[H3C] hostname R2
# 手工指定接口G6/1的全球单播地址,使能接口发布RA消息功能。
[R2] interface gigabitethernet 6/1
[R2-GigabitEthernet6/1] ipv6 address 2002::1/64
[R2-GigabitEthernet6/1] undo ipv6 nd ra halt
# 手工指定接口G0/0的全球单播地址。
[R2-GigabitEthernet6/1] interface gigabitethernet 0/0
[R2-GigabitEthernet0/0] ipv6 address 2012::2/64
[R2-GigabitEthernet0/0]
[R2-GigabitEthernet0/0] quit
# 手工配置IPv6静态路由。
[R2] ipv6 route-static 2001:: 64 2012::1
# 保存配置
[R2] save
注:在HCL5.9版中,缺省情况下,路由器的接口不会发布RA消息,需要手动打开。
三、PC1配置
# 进入全局配置模式
<H3C> system-view
# 修改主机名
[H3C] hostname PC1
# 手工指定接口G0/1的全球单播地址。
[PC1] interface gigabitethernet 0/1
[PC1-GigabitEthernet0/1] ipv6 address 2001::2/64
[PC1-GigabitEthernet0/1] quit
# 手工配置IPv6缺省路由。
[PC1] ipv6 route-static :: 0 2001::1
# 保存配置
[PC1] save
四、PC2配置
# 进入全局配置模式
<H3C> system-view
# 修改主机名
[H3C] hostname PC2
# 使能指定接口G0/1的地址自动配置。
[PC1] interface gigabitethernet 0/1
[PC1-GigabitEthernet0/1] ipv6 address auto
[PC1-GigabitEthernet0/1] quit
# 手工配置IPv6缺省路由。
[PC2] ipv6 route-static :: 0 2002::1
# 保存配置
[PC2] save
验证
一、查看接口信息和邻居状态
(一) 在PC2上查看,如下命令输出
- 从第5~6行的IPv6地址可以看出:PC2与R2成为了邻居;状态因为没有数据传输,所以处于stale。
- 从第11~14行可以看到:自动配置的链路本地地址、无状态自动配置的全球单播地址,以及相应的定时器。
- 从第14~18行可以看到:加入的组播组。
- 从第20~22行可以看到:ND的默认参数信息。
# 查看邻居状态
<PC2> display ipv6 neighbors all
Type: S-Static D-Dynamic O-Openflow R-Rule IS-Invalid static
IPv6 address MAC address VID Interface State T Aging
2002::1 666d-5839-020f -- GE0/1 STALE D 21
FE80::646D:58FF:FE39:20F 666d-5839-020f -- GE0/1 STALE D 12
# 查看接口信息
<PC2>display ipv6 interface GigabitEthernet 0/1
GigabitEthernet0/1 current state: UP
Line protocol current state: UP
IPv6 is enabled, link-local address is FE80::8283:69FF:FEC0:306
Global unicast address(es):
2002::8283:69FF:FEC0:306, subnet is 2002::/64 [AUTOCFG]
[valid lifetime 2591720s/preferred lifetime 604520s]
Joined group address(es):
FF02::1
FF02::2
FF02::1:FFC0:306
MTU is 1500 bytes
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds
ND retransmit interval is 1000 milliseconds
(二) 类似的在R2上查看,如下命令输出
- 从第5~8行的IPv6地址可以看出:R2分别与R1、PC2成为了邻居;
- 从第13~15行可以看到:自动配置的链路本地地址、手工配置的全球单播地址。
# 查看邻居状态
<R2>display ipv6 neighbors all
Type: S-Static D-Dynamic O-Openflow R-Rule IS-Invalid static
IPv6 address MAC address VID Interface State T Aging
2012::1 666d-4b28-0105 -- GE0/0 STALE D 914
FE80::646D:4BFF:FE28:105 666d-4b28-0105 -- GE0/0 STALE D 909
2002::8283:69FF:FEC0:306 8083-69c0-0306 -- GE6/1 STALE D 919
FE80::8283:69FF:FEC0:306 8083-69c0-0306 -- GE6/1 STALE D 909
# 查看接口信息
<R2>display ipv6 interface GigabitEthernet 6/1
GigabitEthernet6/1 current state: UP
Line protocol current state: UP
IPv6 is enabled, link-local address is FE80::646D:58FF:FE39:20F
Global unicast address(es):
2002::1, subnet is 2002::/64
Joined group address(es):
FF02::1
FF02::2
FF02::1:FF00:1
FF02::1:FF39:20F
MTU is 1500 bytes
ND DAD is enabled, number of DAD attempts: 1
ND reachable time is 30000 milliseconds
ND retransmit interval is 1000 milliseconds
ND advertised reachable time is 0 milliseconds
ND advertised retransmit interval is 0 milliseconds
ND router advertisements are sent every 600 seconds
ND router advertisements live for 1800 seconds
Hosts use stateless autoconfig for addresses
二、使用Ping测试PC2与PC1之间的互通性
(一) 在PC2上 ping PC1的手工配置的IPv6地址,结果如图4所示,可以ping通。
(二) 在PC1上 ping PC2的自动配置的IPv6地址,结果如图5所示,可以ping通。
从以上验证的结果来看,手工配置和自动配置的IP地址都没有问题。
相关推荐
- jQuery VS AngularJS 你更钟爱哪个?
-
在这一次的Web开发教程中,我会尽力解答有关于jQuery和AngularJS的两个非常常见的问题,即jQuery和AngularJS之间的区别是什么?也就是说jQueryVSAngularJS?...
- Jquery实时校验,指定长度的「负小数」,小数位未满末尾补0
-
在可以输入【负小数】的输入框获取到焦点时,移除千位分隔符,在输入数据时,实时校验输入内容是否正确,失去焦点后,添加千位分隔符格式化数字。同时小数位未满时末尾补0。HTML代码...
- 如何在pbootCMS前台调用自定义表单?pbootCMS自定义调用代码示例
-
要在pbootCMS前台调用自定义表单,您需要在后台创建表单并为其添加字段,然后在前台模板文件中添加相关代码,如提交按钮和表单验证代码。您还可以自定义表单数据的存储位置、添加文件上传字段、日期选择器、...
- 编程技巧:Jquery实时验证,指定长度的「负小数」
-
为了保障【负小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【负小数】的方法。HTML代码<inputtype="text"class="forc...
- 一篇文章带你用jquery mobile设计颜色拾取器
-
【一、项目背景】现实生活中,我们经常会遇到配色的问题,这个时候去百度一下RGB表。而RGB表只提供相对于的颜色的RGB值而没有可以验证的模块。我们可以通过jquerymobile去设计颜色的拾取器...
- 编程技巧:Jquery实时验证,指定长度的「正小数」
-
为了保障【正小数】的正确性,做成了通过Jquery,在用户端,实时验证指定长度的【正小数】的方法。HTML做成方法<inputtype="text"class="fo...
- jquery.validate检查数组全部验证
-
问题:html中有多个name[],每个参数都要进行验证是否为空,这个时候直接用required:true话,不能全部验证,只要这个数组中有一个有值就可以通过的。解决方法使用addmethod...
- Vue进阶(幺叁肆):npm查看包版本信息
-
第一种方式npmviewjqueryversions这种方式可以查看npm服务器上所有的...
- layui中使用lay-verify进行条件校验
-
一、layui的校验很简单,主要有以下步骤:1.在form表单内加上class="layui-form"2.在提交按钮上加上lay-submit3.在想要校验的标签,加上lay-...
- jQuery是什么?如何使用? jquery是什么功能组件
-
jQuery于2006年1月由JohnResig在BarCampNYC首次发布。它目前由TimmyWilson领导,并由一组开发人员维护。jQuery是一个JavaScript库,它简化了客户...
- django框架的表单form的理解和用法-9
-
表单呈现...
- jquery对上传文件的检测判断 jquery实现文件上传
-
总体思路:在前端使用jquery对上传文件做部分初步的判断,验证通过的文件利用ajaxFileUpload上传到服务器端,并将文件的存储路径保存到数据库。<asp:FileUploadI...
- Nodejs之MEAN栈开发(四)-- form验证及图片上传
-
这一节增加推荐图书的提交和删除功能,来学习node的form提交以及node的图片上传功能。开始之前需要源码同学可以先在git上fork:https://github.com/stoneniqiu/R...
- 大数据开发基础之JAVA jquery 大数据java实战
-
上一篇我们讲解了JAVAscript的基础知识、特点及基本语法以及组成及基本用途,本期就给大家带来了JAVAweb的第二个知识点jquery,大数据开发基础之JAVAjquery,这是本篇文章的主要...
- 推荐四个开源的jQuery可视化表单设计器
-
jquery开源在线表单拖拉设计器formBuilder(推荐)jQueryformBuilder是一个开源的WEB在线html表单设计器,开发人员可以通过拖拉实现一个可视化的表单。支持表单常用控件...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- mybatis plus (70)
- scheduledtask (71)
- css滚动条 (60)
- java学生成绩管理系统 (59)
- 结构体数组 (69)
- databasemetadata (64)
- javastatic (68)
- jsp实用教程 (53)
- fontawesome (57)
- widget开发 (57)
- vb net教程 (62)
- hibernate 教程 (63)
- case语句 (57)
- svn连接 (74)
- directoryindex (69)
- session timeout (58)
- textbox换行 (67)
- extension_dir (64)
- linearlayout (58)
- vba高级教程 (75)
- iframe用法 (58)
- sqlparameter (59)
- trim函数 (59)
- flex布局 (63)
- contextloaderlistener (56)