0%

IPv6入门教程

IPv6是IPv4的下一个版本,其目的是为了替代IPv4。虽然目前IPv6的普及率仍然不高,不过它正在加速普及。本文用理论+实践的方法帮助大家了解IPv6的基本知识,介绍IPv6基本使用方法。

IPv6简介

IPv6(Internet Protocol version 6)是网络协议的最新版本,它的出现就是为了替代IPv4,解决IPv4地址短缺的问题。IPv4地址长度为32位,最多能提供2^32(约42亿)个地址。而截至2018年1月,全球上网人口已经超过40亿,且越来越多的物联网设备也陆续加入互联网,IPv4地址匮乏严重。而IPv6地址长度为128位,可提供的地址为2^128(约3.4×10^38)个,
号称“能够给地球上的每一粒沙子分配地址”。

IPv6发展迅速

根据中国互联网络信息中心2019年2月底发布的第43次《中国互联网络发展状况统计报告》,截至2018年12月,我国拥有IPv6地址块41,079个,较上一年增长75.3%。2019年4月16日,工信部发布《关于开展2019年IPv6网络就绪专项行动的通知》,提出了到2019年末应用商店新上架的APP均应支持IPv6网络、获得IPv6地址的LTE终端比例达到90%、获得IPv6地址的固定宽带终端比例达到40%等目标。
从谷歌提供的IPv6统计数据也可以看出,使用IPv6访问谷歌的用户的比例正在迅速上升:

由此可见,IPv6正在迅速发展。

如何查看是否支持IPv6?

IPv6需要运营商、路由器和交换机等网络设备、终端(电脑、手机等)同时支持IPv6才能正常使用。根据第43次《中国互联网络发展状况统计报告》,截至2018年底,分配IPv6的移动宽带接入和固定宽带用户已经超过8个亿。
经过本人实际测试,手机上的4G网络和移动宽带均已支持IPv6。查看是否支持IPv6的方法如下。

  1. 方法一
    在浏览器中访问http://test-ipv6.com/, 如果支持IPv6,网页上将会显示你的IPv6地址。或者访问IPv6版百度搜索: ipv6.baidu.com,如果能看到熟悉的搜索框,表示支持IPv6,否则提示“无法访问IPv6域名”。

  2. 方法二
    在Windows下使用ipconfig命令,或在Linux下用ifconfig命令查看。如下图可以看到IPv6地址:

    如果没有分配IPv6地址,输出的结果中没有IPv6地址这一项:

如果你的电脑支持IPv6,对你理解IPv6将非常有帮助,因为你可以一边体验IPv6一边学习。如果电脑不支持IPv6,可以试试手机是否支持,如果支持,可以使用手机热点或USB共享网络给电脑,一般来说,你的电脑就会分配到IPv6地址。

IPv6地址格式

IPv6地址的长度为 128 位,用冒号分隔为8部分,每部分16位,使用十六进制表示。
例如:

2001:0db8:3c4d:0015:0000:0000:1a2f:1a2b

地址中的前导0可以省略,例如0db8可以省略为db8。如果连续的两段或更多都是0,可以用“::”表示。例如上述地址可以表示为 2001:db8:3c4d:15::1a2f:1a2b为了防止歧义,"::"只能出现1次。

常见的特殊IPv6地址

  1. 全零地址0:0:0:0:0:0:0:0,缩写为::,表示未指定地址,等价于IPv4中的0.0.0.0
  2. 本机地址::1,又叫做环回地址,等价于IPv4中的127.0.0.1
  3. 链路本地地址fe80::/10,只能在单个链路上使用,不能在路由间传播,类似IPv4中的169.254.0.0/16。例如上文通过ipconfig命令输出的内容中,fe80开头的就是链路本地地址。如果你将一根网线的两端分别连接两台电脑,这两台电脑将可以使用链路本地地址进行通信。

如何使用IPv6

在浏览器中使用IPv6地址访问网站

与IPv4不同,IPv6需要在地址前后加上中括号,格式如下:

http://[IPv6]:port

例如,使用IPv6地址访问百度: http://[2400:da00:2::29]/,效果如下:

搭建一个IPv6网站

下面以Nginx来举例。默认情况可能没有开启IPv6监听,你需要找到Nginx配置文件,打开后找到监听IPv4端口的指令,如下:

listen       80;

在后面加上一行监听IPv6的80端口,修改后如下所示:

listen       80;
listen       [::]:80;

保存配置文件后,需要重启Nginx才能生效。之后你可以通过http://[服务器IPv6地址]来访问网站,如果你的网站在本地,则可以通过http://[::1]来访问。

绑定域名到IPv6地址

如果域名与IPv4地址绑定,添加解析的记录类型是A,IPv6地址则是AAAA记录。例如:

常用命令行

经过测试,大部分命令行都支持直接IPv6地址或域名,部分需要加上-6参数。下面以百度搜索的服务器为例:
ping: ping -6 2400:da00:2::29ping6 2400:da00:2::29
curl: curl http://[2400:da00:2::29]/
wget: curl http://[2400:da00:2::29]/
ssh: ssh root@2400:da00:2::29
nslookup: nslookup -type=AAAA ipv6.baidu.com
traceroute: traceroute -6 ipv6.baidu.comtraceroute6 ipv6.baidu.com
route: route -6
ftp: ftp 2400:da00:2::29
telnet: telnet 2400:da00:2::29 80

IPv6安全性

与IPv4相比,IPv6的地址非常非常多,地址多带来的一个好处就是减少被恶意扫描的几率,一定程度上提高了安全性。

举个例子,如果黑客每秒钟可以扫描一百万个IP地址,不到2个小时就可以把IPv4的大约42亿个地址扫描完;如果使用相同的速度扫描IPv6的全部地址,从宇宙诞生之初开始扫描,到现在大概扫描了一万亿分之一。

需要注意的是,在IPv4中,NAT用于解决IP地址匮乏的问题,由于内网中的主机没有公网IP地址,互联网中的其它主机不能直接访问内网中的主机,意味着NAT其实可以起到保护内网的作用。而在IPv6中,由于地址数量充足,IPv6中并没有NAT,这导致原本在内网中的主机直接暴露在公网中,公网中的主机可以通过IPv6直接访问局域网中的设备。

未完待续