IPv6系列-入门指南

本文是《IPv6系列》文章的第一篇《入门指南》,用于快速了解并上手IPv6。

小慢哥的原创文章,欢迎转载


目录

? 一. 为什么要了解IPv6
? 二. 顾虑:IPv6地址太复杂了,记不住啊
? 三. 顾虑:每台服务器都有IPv6地址,会暴露整个内网,不安全
? 四. 顾虑:IPv6地址有好几种类型,很难区分和记忆
? 五. 需要学哪些知识
? 六. IPv6基础知识
? 七. IPv6地址生成
? 八. 常用命令
? 九. 在线测试工具
? 十. 开启与关闭IPv6
? 十一. 在CentOS7上配置静态IPv6地址
? 十二. 如何让我的网站对外提供IPv6服务


一. 为什么要了解IPv6

你以为我会讲些“正确的废话”,比如IPv6地址空间巨大,可以让地球上的每一粒沙子拥有一个IP地址?比如IPv6更加安全?

错!我才不在意这些,这跟我们有什么关系。

我要讲的,是不上IPv6,会有哪些后果。

1?? 势不可挡:各大运营商已经在全面铺设IPv6,包括手机、家庭宽带,比如笔者所在地福州的移动4G手机,已经获得IPv6地址。
2?? 坐以待毙:当IPv6占用率达到一定比例的时候,我相信已有的网站、新申请备案的网站,会被强制要求上IPv6,如果不配置,已有网站停止运营、申请备案不予通过。甚至,到那时,手机、家庭宽带,会仅获得IPv6地址,无法获得IPv4地址。最后,IPv4从中国互联网中废除。

通过上述2点,可以知道,作为服务端(如WEB服务提供方)是必须要上IPv6的,否则不仅无法运营、连用户也都无法访问。

那么,内网需要IPv6吗

? 家庭内网,比如连着wifi的手机、电脑
? 企业内网,比如办公室内每个工位上的电脑
? 数据中心内网,比如机房内的服务器、公有云主机

这些内网环境,是否也需要配置ipv6地址?

答:只要你想访问IPv6互联网,就必须要在终端上配置IPv6地址。原因在于“IPv6优先原则”,越来越多的程序,比如各大编程语言的许多主流模块/框架,在进行域名解析时,会通过dns优先查询AAAA记录(对应IPv4的A记录) ,若该域名有提供IPv6访问,就必然会解析出AAAA记录。接着,就会优先通过IPv6来访问(即使本机没有配置IPv6,甚至没有启用IPv6),如果IPv6网络不通,则该访问直接失败,即便有的模块/框架在失败后会尝试IPv4,但已经增加了许多的延时

综上所述,IPv6已经来临,而不是还在讨论中,现在没有任何理由继续固守IPv4了。与其坐以待毙,不如主动学习


二. 顾虑:IPv6地址太复杂了,记不住啊

说的好像IPv4地址你能背下来似的,其实IPv6地址只是长度增加,并且展示方式从十进制改为十六进制,具体的计算方式是一样的。而且有dns在,没必要去背IP地址,就算是内网的IPv6地址,也可以通过DHCPv6或者路由器发送RA包来自动生成IPv6地址。


三. 顾虑:每台服务器都有IPv6地址,会暴露整个内网,不安全

担心是对的,但解决方案也和IPv4一样,有2种:

? 可以在内网服务器上配置“IPv6私网地址”,这样公网就访问不到了。在IPv6中,私网地址是fd00::/8,这相当于IPv4的10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。然后在网关上配置NAT
? 依然用“IPv6公网地址”(即全球单播地址),但在网关上配置“有状态防火墙”

无论是哪种方案,最终都实现了“只出不进”,即服务器可以主动访问IPv6公网,但公网无法主动访问进来,保证了内网的安全。


四. 顾虑:IPv6地址有好几种类型,很难区分和记忆

什么全球单播、唯一本地、链路本地,类型太多了吧?其实,常用的IPv6地址,在IPv4中都能一一对应找到。

? 全球单播:对应IPv4的公网
? 唯一本地:对应IPv4的私网
? 链路本地:在IPv4中也有对应,就是169.254.x.x(这在IPv4中也叫链路本地)

至于其他类型的地址,要不然是被废弃的,要不然就是很少用到的,除非工作所需碰到,否则完全不用理会,上面这3种类型已经足够用了。除了这3种,下面这2个特殊地址一定很常见

? ::1,表示环回地址,对应IPv4中的127.0.0.1
? ::,表示未指定地址,对应IPv4中的0.0.0.0


五. 需要学哪些知识

? 开发、测试、DBA:只需简单了解IPv6即可,也就是本文看明白后基本就够了
? 运维人员:除了需要了解IPv6,还需要掌握IPv6通讯的工作原理、防火墙的配置等等,详见《IPv6系列》后续文章
? 网工:需要深入了解IPv6,包括IPv6的各类数据包格式、各种架构、多播路由通讯等等


六. IPv6基础知识

关于IPv6的教程,网络上已经有非常多写的很棒的教程了,笔者没有把握能写出更好的,因此《IPv6系列》文章,将把重点放在一些概念、解决方案、很多人没注意到的坑、工作原理等等

IPv6地址长度

? IPv4:32 bit
? IPv6:128 bit

可以这么记忆,IPv6比IPv4多了一倍的段落,并且每个段落里增加了一倍的长度,所以IPv6比IPv4长了2x2=4倍

IPv6地址组成

? IPv4:网络号+主机号/子网掩码,如192.168.1.2/24
? IPv6:前缀ID+接口ID/前缀长度,如2001:0000:0000:0000:0011:0000:0000:0010/64

地址简写

? IPv4:不支持
? IPv6:压缩0

注意:IPv6单个段落内可重复压缩,比如上述可压缩为2001:0:0:0:11:0:0:10/64;若多个段落连续为0,可压缩,但只能压缩一次,比如上述可进一步压缩为2001::11:0:0:10/64,或者2001:0:0:0:11::10/64,通常为前者

检验方法

找一台linux服务器,比如centos7系统,执行ip addr add ${IPv6地址} dev eth0,然后ip addr show dev eth0看一下会如何压缩

IPv6地址分类

注意:表格列出的是比较常见的地址,并非全部地址

另外,除了单播、多播,IPv6相比IPv4新增了一种任播(anycast),任播是属于单播范畴内的,无法单纯从地址识别出任播

术语

? 节点:任何运行IPv6的设备
? 路由器:转发不是发给自己的IPv6报文的节点
? 主机:非路由器的节点
? 接口:节点和链路相连的物理或逻辑配件
? 链路:由路由器分割的网络接口集合
? 邻居:同一链路上的节点
? 链路MTU:链路能传输的最大单位,即最大的IPv6报文字节数
? 路径MTU:IPv6源端和目的端之间能传输的最大的IPv6报文字节数,通常是路径中所有链路的最小链路MTU


七. IPv6地址生成

? IPv4:手工指定、dhcp分配
? IPv6:手工指定、dhcp分配、自动生成

在IPv6里,主流方案就是自动生成IP,而不是手工指定或dhcp分配。当然,作为服务端是需要手工指定的,但对于更广阔的客户端来说,基本都是自动生成。这种自动生成的,叫做“无状态”,相对于“无状态”,通过dhcp获取到的固定IP,就叫做“有状态”(dhcp也支持“无状态”,这里不做详解)

除了协议规定的特殊地址,其他可自行分配的地址,都是可以在具体范围内自动生成的,包括链路本地、全球单播、唯一本地。其中全球单播、唯一本地,是在接收到路由器发送的RA包后自动生成,具体生成的是全球单播还是唯一本地,是根据RA包内容中的前缀而定

如何自动生成的

无需关心,只要记住一点,能用即可。因为有多种自动生成的方法,有通过mac地址换算而来,有通过某种算法获得,也可能是完全随机而来,而且有的自动生成的地址还会每隔一段时间自动更换,不同的操作系统实现方法不一样,无法统一

为什么会出现这种无法统一的情况

原因在于IPv6协议一直在发展,新协议推翻老协议,每个实现者(也就是不同的操作系统)的诞生时间不同,所参考的协议就有可能不同,而且有的协议还支持不只一种方式,不同实现者出于不同的考量就会采用不同的方式。怎么办?没办法,要不然不理会,要不然投入精力去研究其不同之处,没有一劳永逸的方法。(这段话不仅适用IPv6地址,还适用其他方面,比如DHCPv6等等)


八. 常用命令

# 查看ip
ip -6 addr

# 查看路由
ip -6 route

# 查看多播地址
ip -6 maddr
netstat -gn

# 查dns AAAA记录(走ipv4线路)
dig -t AAAA fzxiaomange.com
nslookup -query=AAAA fzxiaomange.com

# 查dns AAAA记录(走ipv6线路)
dig @2620:0:ccc::2 -6 -t AAAA fzxiaomange.com
nslookup -query=AAAA fzxiaomange.com 2620:0:ccc::2

# 查dns AAAA记录(走ipv6线路的最纯粹、最完整、最靠谱方法)
dig @2620:0:ccc::2 -t AAAA -6 fzxiaomange.com +trace

# curl
curl -6 https://fzxiaomange.com

# ping
ping6 fzxiaomange.com

# trace route
mtr -6 fzxiaomange.com
traceroute6 fzxiaomange.com
tracert6 fzxiaomange.com
tracepath6 fzxiaomange.com

# 邻居地址解析,类似ipv4的arping
ndisc6 -n 2002::102 eth0

# iptables查看
ip6tables-save

# tcpdump
tcpdump -nnn -i eth0 ip6

九. 在线测试工具

? 公共dns列表

https://dns.icoa.cn/ipv6/

? 查询网站是否提供IPv6

https://ready.chair6.net/
http://ip6tools.com/#checkWebServer

? 查询我自己是否拥有公网IPv6地址

http://www.test-ipv6.com
http://ip6tools.com/#WhatisMyIPv6Address

十. 开启与关闭IPv6

# 检查ipv6是否开启
sysctl -a | grep ipv6 | grep disable # 如果输出的值是一堆0则表示ipv6是开启的
ip -6 addr | grep inet6,如果有看到fe80则表示ipv6是开启的

# 临时禁用ipv6
sysctl -w net.ipv6.conf.all.disable_ipv6=1

# 临时开启ipv6
sysctl -w net.ipv6.conf.all.disable_ipv6=0

# 彻底禁用ipv6
在grub里添加ipv6.disable=1,然后重启操作系统

十一. 在CentOS7上配置静态IPv6地址

1?? 内核参数

# /etc/sysctl.conf里增加
net.ipv6.conf.all.disable_ipv6=0
net.ipv6.conf.default.disable_ipv6=0
net.ipv6.conf.lo.disable_ipv6=0

# 立即生效
sysctl -p

2?? /etc/sysconfig/network里增加一行

NETWORKING_IPV6=yes

3?? /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
IPV6INIT=yes
IPV6ADDR=2002::102/64
IPV6_DEFAULTGW=2002::1

4?? 重启网络

systemctl restart network

十二. 如何让我的网站对外提供IPv6服务

1?? 找你的运营商要IPv6地址

? 如果你的服务器是托管在电信机房里,那么就找电信运营商要,通常会给你一个/48或/56的地址段
? 如果你的服务器用的是公有云,比如阿里云、腾讯云,就找他们要,只不过由于IPv6还未全面普及,因此有的地域有提供IPv6,有的没有。另外,提供IPv6的方案也不完全一样,有的是以双栈方式,就是你的云主机里可以直接看到IPv6地址,而有的是负载均衡或者弹性IP方式提供。笔者的网站是放在腾讯云上,用的就是IPv6的L4负载均衡

2?? 接下来,在dns里为自己的网站域名增加AAAA记录。(其实现在很多大厂dns服务器,即NS,还未提供纯IPv6线路的解析,比如笔者的个人网站域名解析商当前不支持ipv6-only,这点会在后续文章里进行详细说明)

3?? 最后一步,测试IPv6,可通过https://ready.chair6.net/进行查询

这里展示下笔者个人网站支持IPv6后的效果

原文地址:https://www.cnblogs.com/fzxiaomange/p/ipv6-getstart.html

时间: 2024-10-14 05:58:26

IPv6系列-入门指南的相关文章

(一)Kafka0.8.2官方文档中文版系列-入门指南

写在前面的话 本系列文章仅仅代表个人的观点,结合自己的学习.使用经验,将kafka0.8.2官方文档,进行翻译,目录结构按照官方文档进行排版. 目的: 系统梳理下kafka知识点,从整体上重新认识下kafka 与广大网友进行交流,内容中难免有不合适的地方,还请大家不吝赐教,我会及时更正 尽一点点微薄之力,去帮助一些人,大家共同进步 一.Getting Started 1.1  Introduction(简介) Kafka是一个分布式.分区的.数据备份的日志收集系统.Kafka使用了一种的独特的方

Ember.js 入门指南——路由简介

从本文开始,将为大家介绍路由(route),如果你看过前面的<Ember.js 入门指南--{{link-to}} 助手>这篇文章应该初步了解了route.不过在这篇文章中只是简单介绍了路由是定义.路由层次,更深入的route将从本文开始逐一介绍. 当用户使用你的应用时,应用要在不同的状态之间切换.Ember提供了很多工具用于管理那些因应用规模改变而改变的状态. 讲route前先了解URL,在应用中大概会会有如下方式设置URL: 用户第一次加载应用的时: 用户手动改变URL,比如点击按钮之后跳

单片机入门指南系列(十) 单片机程序下载相关知识

原文发表自我的个人主页,欢迎大家访问 http://purplesword.info/mcu-primer-10 注:本篇在写<单片机入门指南系列>之前就已经写过,现在发现这篇比较合理的位置,应该是放在<单片机入门指南系列(六) 单片机最小系统--麻雀虽小,五脏俱全>之后的,但是由于之前考虑不周,所以只好放在这里了,也就不重新修改文章的位置了. 作为基础知识补充,本篇详细介绍了串口.51单片机的ISP下载等知识,虽然这些知识并不一定要很了解也能学习单片机,但是有一些概念有时对解决问

单片机入门指南系列(九) 用万用焊板搭建实验电路

原文发表自我的个人主页:http://purplesword.info/mcu-primer-9 ,欢迎大家访问,多谢支持~ 这一篇我们继续上篇的话题,讲解自己搭建电路的另一种方法:用万用焊板搭建电路.在此之前,先普及几点基础知识. 1.电路板 首先我们了解下电路板.前面介绍了面包板可以搭建电路,但是在实际制作出来的电子设备中,我们用的通常都是电路板.电路板主要用于固定元器件,对元器件之间进行可靠的连接. 电路板基板常用不易燃烧的玻璃纤维.酚醛树脂.电木等材料制作.电路连接使用附着在其表面的铜皮

单片机入门指南系列(〇)序

单片机入门指南系列(〇)序 本文由PurpleSword(jzj1993)原创,转载请注明 原文网址 http://blog.csdn.net/jzj1993 我是在上大学时开始接触单片机的,当时走了很多弯路,花了很多时间,才终于比较全面的理解和掌握了单片机.回想起来,从对很多东西毫无概念,到有所认识,直到最终能理解并完全掌握,确实经历了很多.也正是因为这样一些经历,我比较理解初学者的迷茫,后来帮过很多初学者,带动他们去学习单片机等电子设计知识.和初学者的交流中,一方面,我巩固了基础知识,加深了

一起学微软Power BI系列-官方文档-入门指南(5)探索数据奥秘

我们几篇系列文章中,我们介绍了官方入门文档与获取数据等基本知识.今天继续给大家另外一个重点,探索数据奥秘.有了数据源,有了模型,下一步就是如何解析数据了.解析数据的过程需要很多综合技能,不仅仅是需要掌握Power BI的功能要点,熟练的利用一些新功能来提高效率,同时还需要合理的利用仪表盘,以及合理的调整对象,同时作为一个完整的应用,必须掌握数据刷新和同步的技巧,避免做重复工作. 本文原文地址:一起学微软Power BI系列-官方文档-入门指南(5)探索数据奥秘 Power BI系列文章地址:微软

一起学微软Power BI系列-官方文档-入门指南(6)Power BI与Excel

今天介绍了官方入门文档中有关PowerBI和Excel的知识.前几篇入门文档有点仓促,加上最近时间的研究,会有更多技巧性和入门型的文章或者视频发布,最后2篇入门文档将更加详细一点,因为部分文章进行简单的翻译. 本文原文地址:一起学微软Power BI系列-官方文档-入门指南(6)Power BI与Excel Power BI系列文章地址:微软Power BI技术文章与资源目录 1.系列文章说明 一起学微软Power BI系列 文章将分为 官方文档,文档翻译,中文入门教程,中文视频教程和案例等内容

一起学微软Power BI系列-官方文档-入门指南(4)Power BI的可视化

在前面的系列文章中,我们介绍了官方有关获取数据,以及建模的原始文档和基本介绍.今天继续给大家介绍官方文档中,有关可视化的内容.实际上获获取数据和建模更注重业务关系的处理,而可视化则关注对数据的解读.这是我的理解,因为可视化的手段非常丰富,在面对大量的数据和模型,如何从中提取重要的关系,发现重要的数据趋势,并来指导生产和业务开展,这个才是体现数据价值的地方.可视化虽然很简单,但过程非常体现你对业务的理解和发现问题的思路,并不是一个拖动图表的过程.这一块内容非常多,以后有机会再根据实际案例来一步步掌

一起学微软Power BI系列-官方文档-入门指南(3)Power BI建模

我们前2篇文章:一起学微软Power BI系列-官方文档-入门指南(1)Power BI初步介绍 和一起学微软Power BI系列-官方文档-入门指南(2)获取源数据 中,我们介绍了官方入门文档与获取数据等基本知识.今天继续给大家介绍官方文档中,最核定的一个步骤,建模,不管是在Power BI还是在Tableau中,建模都是一个必不可少的步骤,包括传统的Power Privot中,也需要建模这个过程.建模的过程是一个不断演变和需要不断总结经验的过程,和我们传统的关系类型数据库设计有一些类似. 本