[计算机网络] IPv6
1 IPv6 概述
引言
- 近期突发奇想,能不能用 IPv6 的公网地址,给家里的 NAS 做 内网穿透。
技术上是可行的。只是必须确保是 IPv6 的公网地址。
- 大学学的 IPv6 的知识,早就抛到九霄云外了,故此需要重新学习,并记录之。
1.1 诞生的由来:32位的IPv4数量受限,已分配殆尽
-
192.168.1.1,这个数字串对我们大部分人来说并不陌生,它是一个广泛使用的IPv4私有地址。很可能你家中的路由器管理页面就设置在了这个地址上。路由器可能会为你的电脑分配类似的私有IP地址。但是,私有IP地址仅能在局域网内部的设备间使用。要想访问互联网,必须采用公网IP地址。 -
电脑能够仅凭私有IP地址访问公网IP的互联网,得益于
NAT(网络地址转换)技术的应用。然而,NAT只是一个十分蹩脚的解决方案,对P2P连接或者游戏来说严重恶化了网络环境。相对而言,IPv6提供了一个无需NAT的互联网世界,能够为每一台网络设备分配一个或多个公网IP地址,实现真正的万物互联,这也是互联网最初的设想。 -
常见的家庭网络环境中,通常包括运营商提供的宽带连接、光猫以及用户自行购买的路由器构成。路由器通过
PPPoE拨号获取运营商分配的公网IPv4地址,同时作为局域网的网关,拥有自己的内网IP地址,例如192.168.1.1。家中的所有网络设备都会连接到这台路由器,而路由器负责为每一台设备分配内网IP地址以及其他如默认网关、DNS等信息。

-
在访问例如百度这样的外部资源时,浏览器首先向DNS服务器请求解析baidu.com的IP地址。随后,浏览器向该IP地址发送请求,以获取百度首页的数据。由于电脑使用的是局域网内的私有IP地址,路由器需要通过NAT将请求中的源IP地址转换为公网IP地址,才能将请求发送到互联网上。这一过程虽然解决了IPv4地址不足的问题,但也带来了网络通信复杂性增加、网络对等连接破坏等诸多问题。
-
IPv6的引入旨在解决IPv4地址耗尽的问题。与IPv4的地址空间(232个地址)相比,IPv6提供了几乎无限的地址空间(2128个地址),这使得每一台设备都可以拥有一个或多个公网IP地址,从而无需NAT即可实现设备间的直接通信。
-
对于家庭网络的IPv6部署而言,配置过程要略微复杂一些。首先,需要确保你的路由器支持IPv6。大多数近两年内购买的路由器默认开启了IPv6支持。路由器通过PPPoE拨号,从运营商那里获取一个公网IPv4地址。同时,由于开启了IPv6,路由器还会获得一个公网IPv6地址以及一个IPv6前缀。
-
小结:IPv6的诞生
- 为扩大网络以满足未来需求,必须能够提供无限的IP地址并改善移动性.
- IPv6 扩大了地址空间,并使用了效率更高,功能更丰富的报头.
- 虽然IPv6类似于IPv4,但它满足IPv4无法支持的日益负责的层次编址需求.
IPv4 vs IPv6
| 对比项 | IPv4 | IPv6 |
|---|---|---|
| 长度 | 32 bit | 128 bit |

1.2 IPv6的地址结构
表示方法
- IPv6有128位,每四位用0~f的一个字符表示,那么共有32个字符,然后每四个字符为一组,用冒号:分开,那么共有八组。
比如,一个IPv6地址如下:
1234:5678:9abc:def0:aaaa:aaaa:aaaa:aaaa
- 一个
IPv6地址中可能连续多个组中的字符都为0,那么,此时我们可以把连续为0的组压缩为::,比如1234:0000:0000:0000:0000:0000:0000:0001可以表示为1234::0001
另外,一个组中最前面的字符0也可以省略,比如上面的
1234::0001也可以表示为1234::1
IPv6地址结构






IPV6基本包头
- IPv6包头由一个IPv6基本包头(必须存在)和多个扩展包头(可能不存在)组成

- Version:版本号,长度为4 bit。对于IPv6,该值为6。
- Traffic Class:流类别,长度为8 bit。
- Flow Label:流标签,长度为20 bit。
- Payload Length:有效载荷长度,长度为16 bit。
- Next Header:下一个包头,长度为8 bit。
- Hop Limit:跳数限制,长度为8 bit。定义了IP数据包所能经过的最大跳数。每经过一个路由器,该数值减去1,当该字段的值为0时,数据包将被丢弃。
- Source Address:源地址,长度为128 bit。表示发送方的地址。
- Destination Address:目的地址,长度为128 bit。表示接收方的地址。
IPV6拓展包头

- Extension Header Length:扩展包头长度,长度为8 bit。表示扩展包头的长度(不包含Next Header字段)。
- Extension Header Data:扩展包头数据,长度可变。扩展包头的内容,为一系列选项字段和填充字段的组合。
IPv6 简化表示规则
- 每一个段中开头的0可以省略不写,但中间和末尾的0不能省略;
原始IPv6地址:
3ffe:1944:0100:000a:0000:00bc:2500:0d0b
简化后IPv6地址:3ffe:1944:100:a:0:bc:2500:d0b
- 如果某段或连续几段全是0,则可以使用一个“::”来代替。
原始IPv6地址:
ff02:0000:0000:0000:0000:0000:0000:0005
简化后IPv6地址:ff02::5
- 如果128位全部为0的地址,则可以使用一个“::”来表示。
原始IPv6地址:
0000:0000:0000:0000:0000:0000:0000:0000
简化后IPv6地址:::
- 在IPv6地址中,只能使用一次双冒号。
例如:
2001:0d02:0000:0000:0014:0000:0000:0095,以下两种缩写方式都是正确的:
2001:d02::14:0:0:95
2001:d02:0:0:14::95
但下面这种缩写方式是错误的:
2001:d02::14::95
- 可以表示下面任何一个可能的IPv6地址:
2001:0d02:0000:0000:0014:0000:0000:0095
2001:0d02:0000:0000:0000:0014:0000:0095
2001:0d02:0000:0014:0000:0000:0000:0095
IPV6中的%号
-
IP地址255.255.255.0fe80::98f0:7fff:fe64:1220%20
-
IPv6地址中的百分号是网卡/interface标识。这个表示该地址仅限于标号为21的网络接口(一般指网卡或者虚拟网卡)。而在其他网络接口这个地址是无效的。
IPv6接口标识的生成方法
接口标识可通过三种方法生成:
- 方法1:手工配置
- 方法2:系统自动生成
- 方法3:IEEE EUI-64规范生成:将接口的MAC地址转换为IPv6接口标识(MAC地址转化为二进制,第7bit取反,中间插FFFE)
MAC地址:3C-52-82-49-7E-9D
MAC地址二进制:00111100-10010010-10000010 - 01001001-01111110-10011101
第7bit取反,中间插入FFFE
IEEE EUI-64(二进制):00111110-10010010-10000010-11111111-11111110-01001001-01111110-10011101
IEEE EUI-64(IPV6): 3E-52-82-FF-FE-49-7E-9D
IPv6 地址分类
- 小结
任何以 ::、fc、fd、fe 开头的地址都无法接入 IPv6 互联网。
- 单播地址:标识单个节点。
- GUA/全局单播地址/可聚合全球单播地址。
该类地址全球唯一,用于需要有互联网访问需求的主机,相当于IPv4的公网地址。通常,GUA的网络部分长度为
64 bit,接口标识也为64 bit
全局单播地址通常由 48 位全球路由前缀和 16 位子网 ID 组成再加上64位的接口ID组成。
各组织可以使用 16 位子网字段创建自己的本地编址架构。
此字段允许组织使用最多 65,535 个子网。
以 2000::/3 开头,由 IANA 分配
例:2001::1/64 2001:1::1/64 2001:2::1/64
- ULA/IPv6私网地址
只能够在内网中使用。该地址空间在IPv6公网中不可被路由,因此,不能直接访问公网。本地地址使用
FC00::/7地址块
即:在IPv4,有内网地址(10.0.0.0/8等)和外网地址,IPv6也有。IPv6的内网地址的前缀为
fc00::/7 # 1111 1100 与 1111 1101
换言之,以fc、fd开头的地址,都是内网地址————内网地址无法在公网中进行路由
- LLA/链路地址
IPv6中还有一类特殊的地址叫链路地址,该类地址不能跨
VLAN路由。也就是说,该类地址只能在同一个子网中的主机之间相互访问。
该类地址的前缀为FE80::/10
fe80::/10 # 1111 1110 1000
换言之,以fe8、fe9、fea、feb开头的地址,都是链路地址。
链路本地地址是受限制的,只能与同一链路的节点通信,它们都是使用链路本地前缀FE80::/10和一个64位接口ID创建的。
链路本地地址是用来做自动配置、邻居发现和路由器发现
FE80::FE80::20C:85FF:FE00:7D07
- loopback地址/本机回环地址
在
IPv4中,127.0.0.1表示回环地址,每台主机的lo网卡都是这个地址。
在IPv6中,回环地址为::1
-
多播地址:标识一组节点。
-
任意播地址:标识一组节点, 源节点的数据流被转发到组里离源最近的节点。
注:任意播地址来自全局单播地址
多台设备使用相同的任意播地址
- 特殊地址
本地环回地址:
::1类比,IPv4的本机回环地址:
127.0.0.1
任意网络:::(全0)
1.3 IPv6的特点
IPv6 特性
- 更大地址空间
IPv6 地址长 128 位, IPv4地址为 32 位.
IPv6 巨大的地址空间比整个 IPv4 地址空间大,可以满足这个星球上每一个人.
-
地址层次化分配:相较于IPv4地址,IPv6地址的分配更加规范,利于路由聚合(缩减IPv6路由表规模)、路由快速查询。
-
即插即用:IPv6支持无状态地址自动配置(SLAAC),终端接入更简单
-
简化的报文头部:简化报文头,提高效率;通过扩展包头支持新应用,利于路由器等网络设备的转发处理,降低投资成本
-
安全性:IPsec、真实源地址认证等保证端到端安全;避免NAT破坏端到端通信的完整性
-
移动性:对移动网络实时通信有较大改进,整个移动网络性能有比较大的提升。
-
QoS特性:额外定义了流标签字段,可为应用程序或者终端所用,针对特殊的服务和数据流,分配特定的资源
-
无需 NAT
更大的地址空间似的无需NAT(网络地址转换)就能进行端到端通信
- NAT(Network Address Translation),是指网络地址转换,1994年提出的。NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局 IP 地址的技术。NAT实际上是为解决IPv4地址短缺而开发的技术。 [3]
- NAT旨在通过将一个外部 IP 地址和端口映射到更大的内部 IP 地址集来转换 IP 地址。 基本上,NAT 使用流量表将流量从一个外部(主机)IP 地址和端口号路由到与网络上的终结点关联的正确内部 IP 地址。
- NAT路由器:
- 其工作在网络层。
NAT(Network Address Translation,网络地址转换)是一种技术,允许专用网内部的主机通过NAT路由器将其本地地址(私网IP地址)转换成全球IP地址(公网IP地址),以便与因特网上的主机进行通信。NAT路由器工作在OSI(Open Systems Interconnection)模型的第三层,即网络层,这是因为它直接对IP地址进行操作,而IP地址是网络层的关键组成部分。
- 交换机是否具备NAT功能:大部分不具备,少量高端机型具备
参考:FAQ-交换机是否支持NAT,如何才能支持 - Huawei Cloud
- 作为网络设备的一种,交换机主要用于局域网络中的数据包交换。它能够根据
设备的MAC地址将数据包转发到特定的端口,使得数据能够在局域网中高效地传输。然而,与路由器相比,交换机在以下几个方面存在一些功能上的限制:
- 交换机的功能受限于其工作层次。交换机工作在OSI模型的第二层(数据链路层),主要负责数据帧的转发和广播。它无法对网络层的数据包进行处理和转发。而路由器则能够在OSI模型的第三层(网络层)上工作,具备识别不同网络之间的IP地址和路由表,能够实现不同网络之间的数据包转发和数据包过滤等功能。
- 交换机缺乏网络地址转换(NAT)功能。网络地址转换(NAT)是一种将私有IP地址转换成公共IP地址以在互联网上进行通信的技术。路由器通常具备NAT功能,能够管理内部和外部网络之间的通信,提供更好的网络安全性和隐私保护。但是交换机一般不具备NAT功能,无法实现对内部网络的地址转换和管理。
- 交换机缺乏广域网连接的功能。广域网连接是指将不同地理位置的局域网连接到一起,实现远程通信和资源共享。路由器通常具备接入广域网的功能,能够实现不同网络之间的通信和数据交换。而交换机主要用于局域网内的通信,无法用于远程网络之间的连接。
- 交换机的安全性相对较低。由于交换机主要负责局域网内的数据包转发,对于局域网之外的安全威胁相对无能为力。而路由器能够通过防火墙、访问控制列表等安全性配置来保护网络的安全。它能够对数据包进行过滤、检查和控制,提供网络的安全保护。
- NAT地址转换的主要类型:
- 静态NAT:一对一的地址转换,某个私网IP地址只能转换为某个公网IP地址,适用于需要外部网络访问的特定设备。
>> + 动态NAT:基于地址池动态转换,所有被授权访问Internet的私有IP地址可以随机转换为任何指定的合法IP地址。
>> + 动态端口地址转换(PAT):多个私网IP地址映射到同一个公网IP地址和端口上,实现地址复用,适用于内部网络的所有主机共享一个合法外部IP地址。
>> + Easy IP:直接使用公网接口的IP地址作为NAT转换后的地址,适用于拨号的场景。
>> + NAT Server:实现公网IP地址和端口与私网IP地址和端口之间的映射关系,实现外网访问内网服务。
- 配置NAT地址转换的方法:
- 静态NAT:配置命令如
nat static global <自定义公网IP> inside <私网IP>。
>> + 动态NAT:配置命令如nat address-group 1 200.10.10.1 200.10.10.200和acl 2000。
>> + Easy IP:配置命令如 nat outbound 2000。
>> + NAT Server:配置命令如 nat server protocol tcp global <自定义公网IP> <外网端口> inside <私网IP> <内网端口>。
通过这些配置方法,可以实现内部网络与外部网络的互通,解决IP地址不足的问题,并提高网络的安全性
- 没有广播地址
IPv6 包括单播地址,多播地址和任意播地址.
- 支持移动性和安全性
有助于确保遵循移动 IP 标准和 IPsec s标准.
- 更简单的报头提高了路由器的效率
IPv6 新特性
- 修改前缀
IPv6 提高了一种简化的地址和前缀修改机制.
- 每个接口多个地址
一个IPv6接口可以分配多个不同类型的地址,并可同时使用.
- 链路本地地址
交换路由更新时,IGP将 link-local 地址用作下一跳.
- 无状态自动配置:
DHCP并不是必需的,因为一个IPv6设备能根据本身分配一个独特link-local IPv6的地址.
- 独立或不独立于提供商的编址
1.4 IPV6报文处理链路
- 始发路由器(按需构造IPV6报文)———— 中间路由器(处理基本包头和逐条选项包头)————终点路由器(处理所有包头)
1.5 IPv6所需支持项
网卡适配器支持
网络路由器支持
- 在路由器启用 IPv6 协议
# 在路由器上启用IPv6协议
R(config)#ipv6 unicast-routing
# 为接口指定IPv6地址
R(config)#interface f0/0
R(config-if)#ipv6 address 2001::1/64|2001::/64 eui-64
# 查看命令
show ipv6 interface brief
show ipv6 route
DNS 服务器支持
应用服务器支持
用户浏览器支持
-
由于
IPv6网络使用范围不是特别大,因此许多浏览器将默认配置禁用了IPv6功能。例如:Google Chrome就是如此,即便我们接入IPv6网络后,依然无法使用IPv6相关功能。 -
360 浏览器 : 支持
-
QQ 浏览器 : 支持
-
Chrome : 支持,但需用户主动开启
为了使用Chrome的IPv6功能,我们需要对Chrome进行配置修改,以开启IPv6。
- step1 在Chrome的地址栏输入:
about:net-internals/#dns或chrome://net-internals/#dns- step2 点击Enable Ipv6按钮。至此,我们的Chrome已可以正常使用IPv6,再次登录 test.ipv6s.com 后,各项功能均恢复正常了!
如果你认为启用ipv6对你造成了影响,也可以关闭掉。方法是:右键chrome的快捷方式,点击“属性”,在“目标”地址后面加上--disable-ipv6,重启chrome即可。例如:
cd /opt/google/chrome
sudo gedit google-chrome
# exec -a "$0" "$HERE/chrome" "--enable-ipv6" "$@"
# exec -a "$0" "$HERE/chrome" "--disable-ipv6" "$@"
或:
C:\Users\xxxxxx\AppData\Local\Google\Chrome\Application\chrome.exe --disable-ipv6
- chrome常用参数
--enable-ipv6
启用ipv6
--disable-ipv6
禁用ipv6
例如:
--disable-async-dns
--disable-images
禁用图片
--disable-javascript
禁用javascript
--disable-logging
禁止自动登录
--disable-sync
禁用自动同步
--disk-cache-dir
ex:”chrome.exe” –disk-cache-dir=”X:/”
指定缓存目录
--disable-java
禁用java
--disk-cache-size
缓存容量
用户的电脑支持
IPv6核心配置
- 使能IPV6:IPV6
- 进入接口:interface GigabitEthernet 0/0/0
- 使能设备转发IPv6单播报文:ipv6 enable
- 配置接口的链路本地地址:ipv6 address auto link-local(自动模式)
- 配置接口全球单播地址:ipv6 address auto(自动模式)
- 使能系统发布RA报文功能:undo ipv6 nd ra halt
- 查询接口IPV6信息:display interface brief
- 查看邻居表信息:display ipv6 neighbors
CENTOS Linux
参考 https://www.golinuxcloud.com/how-to-configure-ipv6-address-in-linux-rhel-centos-7/
- 以下为
centos虚拟机上/etc/sysconfig/network-scripts/ifcfg-ens33配置文件的一个示例:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6ADDR=fd92::102/64
#IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
#UUID=2c8f88f4-54d4-4adc-b1bf-8351e6810982
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.92.102
MASK=255.255.255.0
GATEWAY=192.168.92.2
DNS1=114.114.114.114
Windows
- Windows 启用/禁用IPv6
控制面板\网络和 Internet\网络和共享中心\(选择一个活动的以太网连接)\(双击)连接-(点击)属性,查看以太网属性或者:
控制面板\网络和 Internet\网络和共享中心-更改适配器设置\(选择一个活动的以太网连接)\(右键)属性`,查看以太网属性

- 找到
Internet协议版本6(TCP/IPv6)选项,勾选或取消勾选即可

IPv6支持情况测验
Windows电脑
- Windows电脑
控制面板\网络和 Internet\网络和共享中心\(选择一个活动的以太网连接)\(双击)连接-查看IPv6连接的状态信息

不支持 IPv6 的以太网连接


支持 IPv6 的以太网连接
命令行工具
$ ping -6 fd15::101
$ curl -6 "http://\[fd15::101\]:8080"
$ telnet fd15::101 8080
测验网站
- 测验网站:


IPv6-test.com 是一项免费服务,可检查您的 IPv6 和 IPv4 连接和速度。诊断连接问题,发现您当前正在使用哪些地址浏览互联网,以及当 v6 和 v4 都可用时您的浏览器选择的协议是什么。

https://ipv6.ustc.edu.cn/onlinechecklog.php?h=ipv6.baidu.com
这里以百度为例
Y 政策/报告
2024.8.2
IPv6 分布趋势的近实时分析报告
X 参考文献
- [网络] IP地址的内外网判别与分类(IPv4) - 博客园/千千寰宇
- Chrome开启或关闭IPv6的方法 - 百度文库
- IPV6 - CSDN
- IPv6 支持 - 中国科技云通行证
- 人人都有的公网IP-IPv6介绍 - 什么值得买 【推荐】
- ipv6可以访问那些网页? - 百度
ipv6.baidu.com 访问地址:2400:da00:2::29
...
百度的公共DNS的IP
- network - IPv6 | 看云 【推荐】
- 网络基础——IPV6地址及介绍 - CSDN 【推荐】
本文链接: https://www.cnblogs.com/johnnyzen
关于博文:评论和私信会在第一时间回复,或直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
日常交流:大数据与软件开发-QQ交流群: 774386015 【入群二维码】参见左下角。您的支持、鼓励是博主技术写作的重要动力!

浙公网安备 33010602011771号