【网络】Internet 协议版本 6 (IPv6)

  • Post author:
  • Post category:其他


Internet 协议版本 6 (IPv6) 是 Internet 的网络层的标准协议套件。 IPv6 旨在解决当前版本的 Internet 协议套件(称作 IPv4)存在的许多问题,包括地址消耗、安全性、自动配置和扩展性等问题。 IPv6 扩展了 Internet 的功能以启用新型应用程序,包括对等和移动应用程序。 以下是当前 IPv4 协议的主要问题:

  • 地址空间快速消耗。

这导致使用网络地址转换器 (NAT) 将多个专用地址映射到一个公共 IP 地址。 此机制造成的主要问题是处理开销和端对端连接性的缺失。

  • 层次结构支持缺失。

因其固有的预定义类组织,IPv4 缺乏真正的层次结构支持。 无法通过真正地映射网络拓扑的方式构成 IP 地址。 由于存在这种重大的设计缺陷,所以需要通过大型路由表将 IPv4 数据包传送至 Internet 上的任何位置。

  • 复杂的网络配置。

对于 IPv4,地址必须以静态方式分配,或使用配置协议,如 DHCP。 在理想情况下,主机不需要依靠 DHCP 基础结构的管理。 主机可基于其所在的网络段自行配置。

  • 缺乏内置身份验证和保密性。

IPv4 不需要针对提供交换数据的身份验证或加密的机制的支持。 IPv6 在这一方面作出更改。 Internet 协议安全 (IPSec)是 IPv6 支持要求。

新协议套件必须满足以下基本需求:

  • 低开销的大规模路由和寻址。
  • 针对各种连接情况进行自动配置。
  • 内置身份验证和保密性。



IPv6 寻址

使用 IPv6 时,地址长度为 128 位。 地址空间如此之大的一个原因是将可用地址细分为可以反映 Internet 拓扑的路由域的层次结构。 另一个原因是映射将设备连接到网络的网络适配器(或接口)的地址。 IPv6 有可以解析最低级别的地址(即网络接口级别的地址)的固有功能以及自动配置功能。



文本表示形式

以下是用于将 IPv6 地址表示为文本字符串的三种常规形式:

  • 冒号十六进制形式:

这是首选形式

n:n:n:n:n:n:n:n

。 每个 n 表示地址的 8 个 16 位元素之一的十六进制值。 例如:

3FFE:FFFF:7654:FEDA:1245:BA98:3210:4562

  • 压缩形式:

由于地址长度,有些地址通常包含一长串的零。 若要简化这些地址的编写,可使用压缩形式,其中 0 块的单个相邻的序列由双冒号

(::)

表示。 该符号在地址中只能出现一次。 例如,多播地址

FFED:0:0:0:0:BA98:3210:4562

的压缩形式是

FFED::BA98:3210:4562

。 单播地址

3FFE:FFFF:0:0:8:800:20C4:0

的压缩形式是

3FFE:FFFF::8:800:20C4:0

。 环回地址

0:0:0:0:0:0:0:1

的压缩形式是

::1

。 未指定地址

0:0:0:0:0:0:0:0

的压缩形式是 ::。

  • 混合形式:

此形式合并了 IPv4 和 IPv6 地址。 在这种情况下,地址格式为

n:n:n:n:n:n:d.d.d.d

,其中每个 n 表示六个 IPv6 高序位 16 位地址元素的十六进制值,每个 d 表示一个 IPv4 地址的十进制值。



地址类型

地址中的前导位定义了特定 IPv6 地址类型。 包含这些前导位的可变长度字段称为格式前缀 (FP)。

IPv6 的单播地址分为两个部分。 第一部分包含地址前缀,第二部分包含接口标识符。 表示 IPv6 地址/前缀组合的简洁方法如下:ipv6-address/prefix-length。

以下是具有 64 位前缀的地址示例。


3FFE:FFFF:0:CD30:0:0:0:0/64

.

本示例中的前缀是

3FFE:FFFF:0:CD30

。 此地址也可以采用压缩形式编写为

3FFE:FFFF:0:CD30::/64

IPv6 定义以下地址类型:

  1. 单播地址:

单个接口的标识符。 发送到此地址的数据包将会发送到已标识接口。 可通过高序位八进制数的值,区分单播地址和多播地址。 多播地址的高序位八进制数具有 FF 的十六进制值。 此八进制数的任何其他值标识单播地址。 以下是不同类型的单播地址:

  • 链接本地地址:

这些地址用于单个链接,并且具有以下格式:FE80::

InterfaceID

。 链接本地地址用于链接的节点之间以实现自动地址配置、邻居发现,或者用于不存在路由器的情况。 链接本地地址主要用于启动时,以及系统尚未获取较大范围地址时。

  • 站点本地地址:

这些地址用于单个站点,具有以下格式:FEC0::

SubnetID

:

InterfaceID

。 站点本地地址用于在站点内寻址,无需全局前缀。

  • 全局 IPv6 单播地址:

这些地址可以在 Internet 上使用,并具有以下格式:

GlobalRoutingPrefix

::

SubnetID

:

InterfaceID

  1. 多播地址:

一组接口(通常属于不同节点)的标识符。 发送到此地址的数据包将发送到由该地址标识的所有接口。 多播地址类型取代了 IPv4 广播地址。

  1. 任播地址:

一组接口(通常属于不同节点)的标识符。 发送到此地址的数据包将发送到由该地址标识的仅一个接口。 这是路由指标标识的最近接口。 任播地址取自单播地址空间,无法从语法上进行区分。 寻址的接口根据其配置区分单播和任播地址。

通常,节点始终具有链接本地地址。 它可能具有站点本地地址和一个或多个全局地址。



IPv6 路由

灵活的路由机制是 IPv6 的优势之一。 由于 IPv4 网络 ID 以前和现在的分配方式,需要由 Internet 主干网上的路由器来维护大型路由表。 这些路由器必须了解所有路由,才能转发可能定向到 Internet 任何节点的数据包。 借助聚合地址的功能,IPv6 可以灵活寻址,并且大大减小路由表的大小。 在这种新型寻址体系结构中,中间路由器必须仅跟踪网络中的本地部分,才能恰当地转发消息。



邻居发现

邻居发现提供的一些功能是:

  • 路由器发现:这允许主机识别本地路由器。

  • 地址解析:这允许节点解析相应的下一跃点地址的链接层地址(地址解析协议 [ARP] 的替换)。

  • 地址自动配置:这允许主机自动配置站点本地和全局地址。

邻居发现使用 IPv6 的 Internet 控制消息协议 (ICMPv6) 消息,包括:

  • 路由器播发:由路由器在伪周期基础上发送或作为路由器招标的响应发送。 IPv6 路由器使用路由器
  • 播发来播发其可用性、地址前缀和其他参数。
  • 路由器招标:由主机发送以请求链接上的路由器立即发送路由器播发。
  • 邻居招标:由节点发送,以进行地址解析、重复地址检测或验证邻居是否仍可以访问。
  • 邻居播发:由节点发送,以响应邻居招标或通知邻居链接层地址的更改。
  • 重定向:由路由器发送,以指示特定目标的下一个更好的跃点地址,用于发送节点。



IPv6 自动配置

IPv6 的一个重要目标是支持节点即插即用。 也就是说,可以将节点插入 IPv6 网络,让其自动进行配置,无需任何人为干预。



自动配置类型

IPv6 支持以下自动配置类型:

  • 有状态自动配置:

这种类型的配置需要一定程度的人为干预,因其需要 IPv6 动态主机配置协议 (DHCPv6) 服务器来安装和管理节点。 DHCPv6 服务器保存向其提供配置信息的节点列表。 它还维护状态信息,这样服务器知道每个地址的使用时间,以及何时可用于重新分配。

  • 无状态自动配置:

这种配置类型适用于小型组织和个人。 这种情况下,每个主机通过接收的路由器播发的内容确定其地址。 使用 IEEE EUI-64 标准来定义地址的网络 ID 部分,可以合理地假定链接上主机地址的唯一性。

无论如何确定地址,节点必须验证可能的地址对于本地链接是否唯一。 通过向可能的地址发送邻居请求消息可完成此操作。 如果节点收到任何响应,就知道该地址已在使用,并且必须确定其他地址。



IPv6 移动性

移动设备的广泛应用催生了新的要求:设备必须能够随意改变 IPv6 Internet 上的位置,但是仍然保持现有连接。 为实现此功能,向移动节点分配一个始终可以到达的主地址。 当移动节点在其中时,它连接到主链接并使用其主地址。 当移动节点离开时,主代理(通常是路由器)在移动节点和其正与之通信的节点之间中继消息。



禁用或启用 IPv6

若要使用 IPv6 协议,请确保当前运行的操作系统版本支持 IPv6,并确保正确配置了操作系统和网络类。



配置步骤

下表列出了各种配置

启用 OS IPv6? 已启用代码 IPv6? 说明
❌ 否 ❌ 否 可以分析 IPv6 地址。
❌ 否 ✔️ 是 可以分析 IPv6 地址。
✔️ 是 ❌ 否 使用未标记为过时的名称解析方法,可以分析并解析 IPv6 地址。
✔️ 是 ✔️ 是 使用所有方法(包含标记为过时的方法),可以分析并解析 IPv6 地址。



代码启用

已.net为例:

IPv6 默认启用。 若要在环境变量中配置此开关,请使用 DOTNET_SYSTEM_NET_DISABLEIPV6 环境变量。



操作系统启用

已linux为例


一:检查Linux是否已经开启ipv6

1.使用 ifconfig 查看自己的IP地址是否含有IPv6地址。

inet6 addr: fe80::213:d4f*:


:


/64 Scope:Link


二:开启ipv6

1、找到配置sysctl.conf 文件,路径在:/etc/sysctl.conf ,找到如下配置:

在这里插入图片描述

如果已经存在,则直接修改,如果不存在,则新增。

将列出的ipv6相关配置更改为0

在这里插入图片描述

net.ipv6.conf.all.disable_ipv6 = 0

net.ipv6.conf.default.disable_ipv6 = 0

net.ipv6.conf.lo.disable_ipv6 = 0

3、然后执行sysctl -p命令

sysctl -p

4、找到 network.conf 文件,路径在:/etc/sysconfig/network

找到如下配置:

在这里插入图片描述

将列出的配置更改为 yes

在这里插入图片描述

5、重启网络服务

service network restart

至此,设备就开启了IPV6功能。

6、通过ifconfig 命令检查是否已经启动ipv6

ifconfig|grep -i inet6

三、配置IPV6地址

1、网卡配置信息

vi /etc/sysconfig/network-scripts/ifcfg-eth0

添加:

  • 单IPv6地址:
IPV6INIT=yes
IPV6ADDR=<IPv6地址>/<子网前缀长度>
IPV6_DEFAULTGW=<IPv6网关>
  • 多IPv6地址:
IPV6INIT=yes
IPV6ADDR=<IPv6地址>/<子网前缀长度>
IPV6ADDR_SECONDARIES="<IPv6地址1>/<子网前缀长度> <IPv6地址2>/<子网前缀长度>"
IPV6_DEFAULTGW=<IPv6网关>

如:

IPV6INIT=yes 网卡初始化IPv6协议栈

IPV6ADDR=2001:250:4000:2000::53 配置IPv6地址

IPV6_DEFAULTGW=2001:250:4000:2000::1 配置IPv6网关

systemctl restart network.service 重启网络服务,使配置生效

2、linux下添加默认路由。

ip -6 route add / via

ip -6 route add default via 2001:0db8:0:f101::1

route -A inet6 add / gw

route -A inet6 add default gw 2001:0db8:0:f101::1

3、查看路由

ip -6 route show

route -A ‘inet6’

route -6



来源


Internet 协议版本 6 (IPv6) 概述



Linux下配置系统ipv6环境



版权声明:本文为weixin_44231544原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。