初识IPv6

偶然发现家里用的宽带已经支持IPv6, 折腾下看看……

这两天偶然发现家里用的浙江联通宽带已经支持IPv6,虽然我的无线路由器还不支持,但是网线直连光猫的电脑已经可以看到分配的IPv6地址。

什么是IPv6

自己看维基百科 https://zh.wikipedia.org/wiki/IPv6

我的IPv6网络信息

出于安全隐私考虑,本文中的IP地址都被“修饰”过

通过https://test-ipv6.com/这个网站可以查看自己网络对于ipv6的支持情况,下图是我的网络测试情况:

image-20200105202418639

再看下以太网适配器的配置信息:

1
2
3
4
5
连接特定的 DNS 后缀 . . . . . . . :
IPv6 地址 . . . . . . . . . . . . : 2408:8360:729:a000:b512:46b1:420c:9da8
临时 IPv6 地址. . . . . . . . . . : 2408:8360:729:a000:c027:5ee8:d275:c280
本地链接 IPv6 地址. . . . . . . . : fe80::b512:46b1:420c:9da8%6
IPv4 地址 . . . . . . . . . . . . : 192.168.1.3

值得注意的是,这台设备被分配了2个全球单播地址(IPv6地址临时IPv6地址)和1个链路本地地址,并有如下特征:

  • IPv6地址和临时IPv6地址的前缀是一样的2408:8360:729:a000
  • 本地链接 IPv6前缀为fe80::,后缀和IPv6地址是一样的b512:46b1:420c:9da
  • 在test-ipv6网站中显示的地址是临时IPv6地址

再来看下光猫里的配置信息:

image-20200105195403021

注意这里面的获取前缀2408:8360:729:a000::/60,表明着运营商分配的前缀长度是60位,剩余的68位地址就是我们的子网容量,这也就意味着在这个光猫下可以容纳2的68次方个地址!给家里每一粒灰层分配一个估计都用不完。

深入理解IPv6

现在我们对IPv6有了直观的认识,接下来看看这128位地址究竟是如何生成的,以及三个不同的IPv6地址分别有什么作用。

IPv6地址格式

IPv6二进位制下为128位长度,以16位为一组,每组以冒号“:”隔开,可以分为8组,每组以4位十六进制方式表示。例如:2001:0db8:86a3:08d3:1319:8a2e:0370:7344 是一个合法的IPv6地址。

IPv6地址生成方法

IPv6支持无状态配置(SLAAC),网络接口接上后能自动生成若干个地址,地址一般分为网络段和主机段,各占64位。IPv6地址分配机制只管高64位的分配,低64位的标识符(主机段)则由主机自己来保证唯一性。

标识符的生成算法包括但不限于:

  • EUI-64规则根据MAC地址生成,用于一般局域网或者物联网(Windows XP, Windows Server 2003及大多数Linux发行版都采用这种方式生成)
  • 低碰撞的随机数算法随机生成,用于生成临时地址实现隐私扩展(出于安全考虑,Windows Vista及之后的Windows系统都默认采用随机算法)
  • 人工配置保证唯一,用于配置一个服务器集群
  • anycast地址,全0,本来就可以多路访问

IPv6隐私扩展

当一个客户端使用SLAAC配置其IPv6时,它会使用网络前缀和网卡的MAC地址构造地址。这会引起安全问题:计算机的MAC地址可以轻松通过其IPv6地址推算出,即使漫游到其他物理位置,由于MAC地址的全球唯一性,依然可以定位到客户端的设备。

IPv6实现了一种使用临时地址访问服务器的方式:在连接远程服务器时,内核会从原本的IPv6地址计算生成一个“临时地址”,系统会优先选择这个地址以隐藏原来的地址。每一个时刻只有一个临时地址是有效的,在一个地址过期时会立刻生成一个新的地址作为新的临时地址。

三个地址的作用

  • 本地链路地址:用于本地网络通信和网络配置
  • 临时全球地址:用于对外访问
  • 固定全球地址:可用于固定监听外部对你的访问

有什么用呢

有了IPv6地址,意味着联网的设备不再是隐藏在NAT后面,而是全都具有公网IP。有了公网IP,那是不是可以直接在电脑上搭建提供Web服务呢?

启动个简单的web服务来试一下

image-20200105204502736

看到这个打印信息就觉得不太行,似乎只支持IPv4,通过浏览器分别访问下IPv6地址果然不行

image-20200105205322509

换成Caddy试试

image-20200105210305005

服务启动好了,浏览器里访问试一下,可以了

image-20200105211123978

在本机上三种IPv6地址都能访问,通过手机4G测试在外网IPv6地址临时IPv6地址均能访问成功。

看起来ISP还没有针对80端口进行封禁,不过经过这两天观察,光猫上分配的前缀是会变化的,如果想搭建网站或者服务需要采用DDNS等手段,有空了再试。

安全性问题

通过上面的测试我意识到一个问题,那就是我的设备端口现在等于直接暴露在公网环境中,我随便起了个Web服务就能在公网中访问到,如果有什么漏洞真是不堪设想。那是不是以后开发本地启动项目暴露的端口,也直接在公网上可以访问,不过现在Win10默认自带防火墙,开启如下设置即可。

image-20200105212403400

按理说阻止入站连接应该是路由器的默认防火墙安全级别,很遗憾联通的这个光猫似乎并没有防火墙。


评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×