笔记08:IPv6地址配置方法二——无状态地址自动配置SLAAC
yuyutoo 2024-10-11 21:41 12 浏览 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地址都没有问题。
相关推荐
- 当 Linux 根分区 (/) 已满时如何释放空间?
-
根分区(/)是Linux文件系统的核心,包含操作系统核心文件、配置文件、日志文件、缓存和用户数据等。当根分区满载时,系统可能出现无法写入新文件、应用程序崩溃甚至无法启动的情况。常见原因包括:...
- 玩转 Linux 之:磁盘分区、挂载知多少?
-
今天来聊聊linux下磁盘分区、挂载的问题,篇幅所限,不会聊的太底层,纯当科普!!1、Linux分区简介1.1主分区vs扩展分区硬盘分区表中最多能存储四个分区,但我们实际使用时一般只分为两...
- Linux 文件搜索神器 find 实战详解,建议收藏
-
在Linux系统使用中,作为一个管理员,我希望能查找系统中所有的大小超过200M文件,查看近7天系统中哪些文件被修改过,找出所有子目录中的可执行文件,这些任务需求...
- Linux 操作系统磁盘操作(linux 磁盘命令)
-
一、文档介绍本文档描述Linux操作系统下多种场景下的磁盘操作情况。二、名词解释...
- Win10新版19603推送:一键清理磁盘空间、首次集成Linux文件管理器
-
继上周四的Build19592后,微软今晨面向快速通道的Insider会员推送Windows10新预览版,操作系统版本号Build19603。除了一些常规修复,本次更新还带了不少新功能,一起来了...
- Android 16允许Linux终端使用手机全部存储空间
-
IT之家4月20日消息,谷歌Pixel手机正朝着成为强大便携式计算设备的目标迈进。2025年3月的更新中,Linux终端应用的推出为这一转变奠定了重要基础。该应用允许兼容的安卓设备...
- Linux 系统管理大容量磁盘(2TB+)操作指南
-
对于容量超过2TB的磁盘,传统MBR分区表的32位寻址机制存在限制(最大支持2.2TB)。需采用GPT(GUIDPartitionTable)分区方案,其支持64位寻址,理论上限为9.4ZB(9....
- Linux 服务器上查看磁盘类型的方法
-
方法1:使用lsblk命令lsblk输出说明:TYPE列显示设备类型,如disk(物理磁盘)、part(分区)、rom(只读存储)等。...
- ESXI7虚机上的Ubuntu Linux 22.04 LVM空间扩容操作记录
-
本人在实际的使用中经常遇到Vmware上安装的Linux虚机的LVM扩容情况,最终实现lv的扩容,大多数情况因为虚机都是有备用或者可停机的情况,一般情况下通过添加一块物理盘再加入vg,然后扩容lv来实...
- 5.4K Star很容易!Windows读取Linux磁盘格式工具
-
[开源日记],分享10k+Star的优质开源项目...
- Linux 文件系统监控:用脚本自动化磁盘空间管理
-
在Linux系统中,文件系统监控是一项非常重要的任务,它可以帮助我们及时发现磁盘空间不足的问题,避免因磁盘满而导致的系统服务不可用。通过编写脚本自动化磁盘空间管理,我们可以更加高效地处理这一问题。下面...
- Linux磁盘管理LVM实战(linux实验磁盘管理)
-
LVM(逻辑卷管理器,LogicalVolumeManager)是一种在Linux系统中用于灵活管理磁盘空间的技术,通过将物理磁盘抽象为逻辑卷,实现动态调整存储容量、跨磁盘扩展等功能。本章节...
- Linux查看文件大小:`ls`和`du`为何结果不同?一文讲透原理!
-
Linux查看文件大小:ls和du为何结果不同?一文讲透原理!在Linux运维中,查看文件大小是日常高频操作。但你是否遇到过以下困惑?...
- 使用 df 命令检查服务器磁盘满了,但用 du 命令发现实际小于磁盘容量
-
在Linux系统中,管理员或开发者经常会遇到一个令人困惑的问题:使用...
- Linux磁盘爆满紧急救援指南:5步清理释放50GB+小白也能轻松搞定
-
“服务器卡死?网站崩溃?当Linux系统弹出‘Nospaceleft’的红色警报,别慌!本文手把手教你从‘删库到跑路’进阶为‘磁盘清理大师’,5个关键步骤+30条救命命令,快速释放磁盘空间,拯救你...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- 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)