登录  | 加入社区

黑狼游客您好!登录后享受更多精彩

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 1829|回复: 0

IPv6入门教程

[复制链接]

176

主题

176

帖子

0

现金

黑狼菜鸟

Rank: 1

积分
0
发表于 2019-3-20 13:59:51 | 显示全部楼层 |阅读模式 来自 江苏徐州
HkTwK8JAE81Wwtkt.jpg


IPv6 的根本概念


        众所周知,32 位的 IPv4 地点已经耗竭,IPv6 接纳 128 位的地点长度拥有更大的地点空间。起首我们先来熟悉一下 IPv6 到底长成什么样子。
初识 IPv6


sbGQBPhgGpxEDYQe.jpg

图1 IPv6 数据报文上图是我们最认识的 ping 的 IPv6 版本 ICMP v6。可以看到,IPv6 数据报文和IPv4 有很大的差异:
1、数据链路层(L2)的 type字段标识为 0x86dd,表现承载的上层协议是 IPv6
      IPv4 对比:type字段为 0x0800
2、IPv6 的头部字段,和 IPv4 差异巨大可以推测到,IPv6 和 IPv4无法兼容
      IPv6 的报文头部格式如下:
C7c2Oa7M2Akx7ns1.jpg

图2 IPv6 报文头部(该图片来自互联网)        IPv6 报文头部更精简了,字段更少了,对比起 IPv4,有以下几个地方值得留意:
        一、IPv6 报文头部是定长(固定为 40字节),IPv4 报文头部是变长的。这个意味着,写代码处置惩罚 IPv6 数据报文的服从会进步许多:)
        二、IPv6 中 Hop Limit 字段寄义雷同 IPv4 的 TTL。
        三、IPv6 中 的 Traffic Class 字段寄义雷同 IPv4 中的 TOS(Type Of Service)。
        四、IPv6 的报文头部取消了校验和字段。取消这个字段也是对 IPv4 协议的一个改进。当 IPv4 报文在网路间传输,每颠末一个路由器转发就是修改 TTL字段,就必要重新盘算校验和,而由于数据链路层 L2 和传输层 L4 的校验已经充足强健,因此 IPv6 取消这个字段会进步路由器的转发服从。值得一提的是,在 IPv6 协议下,传输层 L4 协议 UDP、TCP 是逼迫必要举行校验和的(IPv4是可选的)。
        五、IPv6 报文头部中的 Next Header 字段表现“承载上一层的协议范例”大概“扩展头部范例”。这里的寄义与IPv4有很大的差异,必要加以表明:
        当 IPv6 数据报文承载的是上层协议 ICMPv6、TCP、UDP 等的时间,Next Header的值分别为 58、6、17,这个时间和 IPv4 报文头部中的Protocol字段很雷同。
        当不是以上 3 种协议范例的时间,IPv6 报文头部紧接的是扩展头部。扩展头部是 IPv6 引入的一个新的概念,每个 IPv6 的数据报文可以承载 0 个或多个扩展头部,扩展头部通过链表的情势构造起来。当 IPv6 数据报文承载着扩展头部的时间,Next Header 的数值为扩展头部的范例值。
        为什么要引入扩展头部这个概念,这里也是 IPv6 对 IPv4 改进的一个方面,用扩展头部代替了 IPv4 的可选项信息,精简了 IPv6 的头部,加强了 IPv6的扩展性。有同砚会不会有疑问,IPv6 的分片数据报文怎么处置惩罚?实在就是利用了 IPv6 扩展头部。我们来抓一个 UDP 分片报文来看看。
sazMxsSMfgqM1d02.jpg

图3 IPv6分片报文        当发送一个分片 IPv6 数据报文的时间,IPv6 利用的是扩展头部的情势构造各个分片的信息,如图 IPv6 报文头部 Next Header 字段值为 44 表现存在扩展头部,扩展头部是 IPv6 分片数据信息。
        对比 IPv4,分片信息是记载在 IPv4 报文头部的分片字段中。
        IPv6 的扩展头部范例有许多种,除了上述的分片头部,另有路由头部、逐跳可选头部等,详细的可以参考 RFC 2460。
IPv6 的地点语法

        一个 IPv6 的地点利用冒号十六进制表现方法:128 位的地点每 16 位分成一段,每个 16 位的段用十六进制表现并用冒号分隔开,比方:
        一个平凡公网IPv6地点:        2001:0D12:0000:0000:02AA:0987:FE29:9871
        IPv6 地点支持压缩前导零的表现方法,比方上面的地点可以压缩表现为:
        2001:D12:0:0:2AA:987:FE29:9871
        为了进一步精简 IPv6 地点,当冒号十六进制格式中出现一连几段数值 0 的位段时,这些段可以压缩为双冒号的表现,比方上面的地点还可以进一步精简表现为:
        2001:D12::2AA:987:FE29:9871        又比方 IPv6 的地点:
        FF80:0:0:0:FF:3BA:891:67C2          可以进一步精简表现为:
        FE80::FF:3BA:891:67C2 。
        这里值得留意的是,双冒号只能出现一次。
IPv6 地点的号段分别和前缀表现法

        IPv6 拥有 128 位巨大的地点空间,对于那么大的空间,也不是随意的分别,而是利用按照 bit 位举行号段分别。
        IPv6 的地点布局如下图:
rF2nM2A1KHFNs252.jpg

图4 IPv6 地点布局        比方:RFC 4291中界说了 n=48, m=16,也就是子网和接口 ID与各占64位。
        IPv6 支持子网前缀标识方法,雷同于 IPv4 的无分类域间路由 CIDR 机制(留意:IPv6 没有子网掩码 mask 的概念)。利用 “IPv6 地点/前缀长度” 表现方法,比方:2001:C3:0:2C6A::/64 表现一个子网,而2001:C3:0:2C6A:C9B4:FF12:48BC:1A22/64 表现该子网下的一个节点地点。
        可以看到,一个IPv6 的地点有子网前缀+接口 ID构成,子网前缀由地点分配和管理机构界说和分配,而接口 ID 可以由各操纵体系实现天生。
IPv6的地点范例

        IPv6地点分三种范例
        1、单播,对应于 IPv4 的平凡公网和私网地点
        2、组播,对应于 IPv4 的组播(多播)地点
        3、任播,IPv6 新增的地点概念范例
        IPv6 没有广播地点,用组播地点实现广播的功能。现实上我们工作和生存最大概最多打仗的就是单播地点,接下来本文重点会解说单播地点的种类。组播和任播地点有爱好的同砚自行查阅相干 RFC 和文献。
IPv6 单播地点

        留意,各人假如在网上搜刮 IPv6 的地点,大概都是如出一辙的把全部“出现过”的单播地点先容出来,实在有一些单播地点范例已经在相干的 RFC 中被废除大概不发起利用,而本节会指出这类地点。同时,在先容单播地点的时间,只管与 IPv4 中对应的大概相雷同的概念做对比,加深明白。
       IPv6 单播地点有以下几种:
1、环球单播地点
kms1nJk995GQxNC9.jpg

图5 IPv6 环球单播地点布局        前缀 2000::/3,相称于 IPv4 的公网地点( IPv6 的诞生根本上就是为了办理 IPv4 公网地点耗尽的题目)。这种地点在环球的路由器间可以路由。
2、链路当地地点
O9ANa8bOTmT9j2wU.jpg

图6 链路当地地点布局        前缀 FE80::/10,顾名思义,此类地点用于同一链路上的节点间的通讯,重要用于主动设置地点和邻人节点发现过程。Windows 和 Linux 支持或开启IPv6 后,默认会给网卡接口主动设置一个链路当地地点。也就是说,一个接口肯定有一个链路当地地点。如下图:
zRV88Pa8vp58PvrR.jpg

图7 Linux 下检察链路当地地点
V8882bz4U88gRg1W.jpg

图8 Windows下检察链路当地地点        值得说的是,每个接口必须至少有一个链路当地地点;每个接口可以设置1 个以上的单播地点,比方一个接口可以设置一个链路当地地点,同时也可以设置一个环球单播地点。
        留意,很轻易会把链路当地地点和 IPv4 的私网/内网地点对应起来,实在链路当地地点对应于 IPv4 的 APIPA 地点,也就是 169.254 开头的地点(典范场景就是 Windows 开启主动获取地点而获取失败后主动分配一个 169.254 的地点)。而 IPv4 私网对应于 IPv6 的什么地点,在背面会先容。
3、唯一当地地点
cjuVEeRN88UrU1xU.jpg

图9 唯一当地地点布局        前缀 FC00::/7,相称于 IPv4 的私网地点(10.0.0.0、172.16.0.0、192.168.0.0),在 RFC 4193中新界说的一种办理私网需求的单播地点范例,用来取代废弃利用的站点当地地点。
        大概看到这里,有同砚会跳出来说:IPv6 不是为了办理 IPv4 地点耗尽的题目吗,既然 IPv6 的地点空间那么大,可以为每一个网络节点分配公网 IPv6 的节点,那为什么 IPv6 还必要支持私网?这里必要谈谈对 IPv6 下私网支持的熟悉。
        在 IPv4 中,使用 NAT 技能私网内的网络节点可以利用同一的公网出口访问互联网资源,大大节流了 IPv4 公网地点的斲丧(IPv6 推进迟钝的缘故原由之一)。另一方面,由于默认环境下私网内节点与外界通讯的发起是单向的,网络访问仅仅能从私网内发起,外部发起的哀求会被同一网关大概防火墙隔绝掉,如许的网络架构很好的掩护了私网内的节点安全性和私密性。可以假想一下,假如内部每台办公电脑都设置了 IPv6 的公网地点上网,是多么可骇的事变,每台办公电脑都碰面临被黑客入侵的威胁。
        因此,在安全性和私密性要求下,IPv6 中同样必要支持私网,而且也必要支持 NAT。在 Linux 内核 3.7 版本开始参加对 IPv6 NAT 的支持,实现的方式和 IPv4 下的差异不大。
4、站点当地地点
        前缀 FEC9::/48,从前是用来摆设私网的,但 RFC 3879中已经不发起利用这类地点,发起利用唯一当地地点。各人知道有这么一回事就可以了。网上另有许多文章还提到这种地点,但是没有阐明这种地点已经不再利用。
5、特别地点:回环地点
        0:0:0:0:0:0:0:1或::1,等同于 IPv4 的127.0.0.1。
6、过渡地点:内嵌 IPv4 地点的 IPv6 地点
        就是在 IPv6 的某一些十六进制段内嵌这IPv4的地点,比方 IPv6 地点中64:ff9b::10.10.10.10,此 IPv6 地点末了4个字节内嵌一个 IPv4 的地点,这类地点重要用于 IPv6/IPv4 的过渡技能中。

  • IPv4 兼容地点
        0:0:0:0:0:0:w.x.y.z 或 ::w.x.y.z(此中 w.x.y.z是点分十进制的 IPv4 地点)。但在 RFC 4291中已经不保举利用这类地点,各人知道有这么一回事就可以了。

  • 过渡地点:IPv4 映射地点
        0:0:0:0:0:FFFF:w.x.y.z 或 ::FFFF:w.x.y.z(此中 w.x.y.z是点分十进制的IPv4 地点),用于 IPv6 地点表现 IPv4 地点。重要用于某些场景下 IPv6 节点与 IPv4 节点通讯,Linux 内查对这类地点很好地支持。

  • 过渡地点:特定过渡技能地点
        6to4 地点、ISATAP地点、Teredo 地点重要用于对应的过渡技能的地点。
IPv6 接口 ID 天生算法

        从前面的先容中可以看出,IPv6 单播地点是由前缀(64位)+接口 ID(64位)构成。接口 ID 的天生算法重要有以下几种:
        1、根据 RFC4291界说,接口 ID可以从 EUI-64 地点天生。
        2、为了可以具备某种水平的匿名性,接口 ID 可以利用一个随机分配的,Windows 操纵体系默认就是利用这种天生算法,Linux 下也是默认开启这个算法。
        3、利用状态化的主动设置技能分配,比方 DHCPv6分配。
        4、手工设置。
IPv6 地点设置

        前面临 IPv6 的地点、前缀、接口等等做了先容,接下来就是要先容一个接口怎样设置 IPv6 地点。IPv6 一个比 IPv4 更锋利的方面,就是可以主动设置地点,乃至这个设置过程不必要 DHCP v6(在 IPv4 中是 DHCP v4)如许的地点设置协议。最典范的例子就是,只要开启了 IPv6 协议栈的操纵体系,每个接口就能主动设置了链路当地地点,这个是和 IPv4 最紧张的区别之一。
        IPv6 的地点设置有以下几种:
        1、只要开启了 IPv6 协议栈,接口主动分配链路当地地点。
        2、无状态主动设置地点。
        3、有状态主动设置地点,比方 DHCPv6。
        4、手动设置。
IPv6 的域名剖析

        由于 IPv6 的地点扩展为 128位,比 IPv4 的更难誊写和影象,因此 IPv6 下的 DNS 变得尤为紧张。IPv6 的的DNS资源记载范例为 AAAA(又称作4A),用于剖析指向 IPv6 地点的完全有用域名。下面是一个示例:


Hostipv6.example.com IN AAAA 2001:db8:1::1        IPv6 下的域名剖析可以以为是 IPv4 的扩展,具体可以检察 RFC3596。

启用和设置 IPv6


当前大部门操纵体系和硬件都比力好地支持 IPv6 了,简朴枚举如下:



  • Windows:Windows 7、Windows 8.x、Windows 10,默认开启 IPv6。
  • Linux:内核 2.6.x、内核 3.x、内核 4.x 已经支持 IPv6(必要手动开启)。
  • iOS:IOS9 开始已经支持 IPv6 Only,2016 年苹果已经逼迫要求 App 必须支持 IPv6。
  • Android 也已经支持 IPv6(但是不支持 DHCP v6)。


下面我们重要以 Linux 体系为例来解说下怎样启用和设置 IPv6。


IPv6 启用和关闭



  • 开启 IPv6


固然 Linux 体系 从 2.6 内核开始就已经支持 IPv6, 但是默认并没有启用。假如你必要利用 IPv6,你就必须在操纵体系中启用它。


1. 查抄当前运行的内核是否支持 IPv6


$ test -f /proc/net/if_inet6 && echo "IPv6 supported" || echo "IPv6 not supported"假如输出 IPv6 not supported,就必要先加载 IPv6 模块。


2. 加载 IPv6 内核模块

2.1 手动加载 IPv6 内核模块



$ modprobe ipv6 2.2 开机主动加载 IPv6 内核模块


假如必要开机主动加载 IPv6 内核模块, 你只需在内核模块加载的设置文件中添加以下行。





$  vim /etc/modprobe.d/ipv6.confalias net-pf-10 ipv6options ipv6 disable=0

http://test-ipv6.com/
http://ipv6-test.com/validate.php
http://ip6.me/



IPv6 相干网络工具




  • Dig

DNS 剖析工具,用于检察一个域名是否具有 AAAA 记载。


z500P6dQiZ2rWJ0Y.jpg 图10 Dig 获取域名的 AAAA 记载





  • Curl


通过 IPv6 网络协议举行哀求相应,获取服务端数据。


MOlO5C496744028z.jpg
图11 Curl 通过 IPv6 获取接口数据



  • Ping6


检察 IPv6 网络的连通性和域名剖析的精确性。


B6fBAAlXb6XzSysf.jpg

图12 Ping6 测试 IPv6 网络连通性



  • Telnet


检察对应 IPv6 地点端口是否开放。


j9anwxynIUEhEBoG.jpg
图13 Telnet 检察端口可用性



  • Mtr


IPv6 网络连通性判定工具。


urbGrwRcNZS5PXh6.jpg

图14 Mtr 检察 IPv6 网络连通性



  • Traceroute6


IPv6 网络测试、评估和管理工具。


nkLD8mWohdW5Q8D8.jpg

图15 Traceroute6 检察 IPv6 路由节点环境



  • Ip & Route


检察本机 IPv6 路由表。


H51Knz11pKhp616v.jpg

图16 检察本机 IPv6 路由表



申请并启用 IPv6 隧道


由于国内大多数运营商网络情况还没有支持 IPv6,假如必要在没有 IPv6 公网地点的服务器上启用 IPv6 地点并对外举行提供服务。 现在你可以利用 HE.Net 提供的免费 IPv6 隧道来获取一个公网地点后就可以接入 IPv6 公网了。


HE.Net 的隧道是 6in4 隧道,即通过的你服务器公网 IPv4 地点与 HE.Net 的公网 IPv4 地点创建一个隧道,然后给这个隧道设置 IPv6 公网地点,网关指向 HE.Net 就可以通过 IPv6 毗连公网了。


1. 注册账号。
2. 邮箱激活。
3. 登录。
4. 点击 “Create Regular Tunnel” 链接来创新一个新的隧道。
5. 输入你的服务器的 IPv4 公网地点,并创建一个新的隧道。
6. 新的隧道创建完成后,在 “Example Configurations” 处根据你的现实环境选择对应操纵体系,获取相应设置。
7. 将对应设置参数设置到你的操纵体系上。
8. 设置乐成后,你便可通过 IPv6 访问对应的服务。


详细的操纵步调你可以参考以下几篇文章:



  • 利用 HE 的 6in4 隧道来访问 IPv6
    http://ekszz.com/blog/?p=20


  • 阿里云ECS(CentOS 7)启用 IPv6 
    http://t.cn/Ex6dqrr


  • 阿里云 Centos 7 设置 HE 隧道支持 IPv6 访问
    http://www.duoluodeyu.com/2479.html


  • 阿里云 Ubuntu 支持 IPv6 的完备步调
    http://jiandanxinli.github.io/2016-08-06.html


  • 怎样把服务器免费接入 IPv6?
    http://zhuanlan.zhihu.com/p/33984430


2. 范围性



  • 你必须有公网 IPv4 地点,也就是在 NAT 路由背面的呆板是不能利用的。假如必要在 NAT 后利用可以接纳 Teredo 方式,在 Linux 下 Teredo 隧道的创建可以利用 Miredo 这个工具。






上一篇:ZABBIX
下一篇:CentOS7肯定要关闭防火墙吗
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

 

QQ|申请友链|小黑屋|手机版|Hlshell Inc. ( 豫ICP备16002110号-5 )

GMT+8, 2024-4-20 18:46 , Processed in 0.092881 second(s), 47 queries .

HLShell有权修改版权声明内容,如有任何爭議,HLShell將保留最終決定權!

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表