体验全员公网的ipv6——互联网的未来

记一次ipv6的使用体验

引自百度百科

IPv6是英文“Internet Protocol Version 6”(互联网协议第6版)的缩写,是互联网工程任务组(IETF)设计的用于替代IPv4的下一代IP协议,其地址数量号称可以为全世界的每一粒沙子编上一个地址。

由于IPv4最大的问题在于网络地址资源不足,严重制约了互联网的应用和发展。IPv6的使用,不仅能解决网络地址资源数量的问题,而且也解决了多种接入设备连入互联网的障碍。

互联网数字分配机构(IANA)在2016年已向国际互联网工程任务组(IETF)提出建议,要求新制定的国际互联网标准只支持IPv6,不再兼容IPv4。

由于ipv4地址十分有限,资源严重不足,运营商提供的ipv4地址并非在暴露在公网,属于一个大局域网(地区)内的ip。因此不能在内网以外的的地方通过ip地址进行数据交互

目前绝大多数运营商的移动数据接入了ipv6网络,可开启手机热点共享WiFi

并不是所有人都能开启ipv6网络,如果要使用,还得满足两个硬性条件

  • 方法一:在ipv6测试网站测试你的DNS服务器(运营商提供的)是否接入ipv6网络

  • 方法二:设备不经过路由器,直连光猫拨号,查看本设备是否分配到ipv6地址

失败了?别灰心

你的运营商可能接入了ipv6网络,但你的光猫没开启ipv6

有些光猫的ipv6权限划给了超级管理员权限,默认不开启ipv6

如何获取超级管理员权限

  • 百度:搜索光猫型号+超级管理员权限(不要钱,但可能折腾)

  • 淘宝:搜索光猫超级管理员权限/光猫破解

  • 询问宽带业务员:可能会给你,可能会把你臭骂一顿

拥有了超级用户权限后,你或许可以:

  • 光猫页面开启ipv6功能(不推荐,光猫上开启ipv6功能可能需要各种配置参数)

  • 光猫的路由模式改成桥接模式,把拨号的功能交给路由器(推荐)

可进入路由器管理页面查看是否有ipv6相关选项来确认ipv6的支持

一般新款的路由器都支持ipv6网络(斐讯除外),某些路由器可以通过升级固件或刷第三方固件(openwrt)来解决ipv6的问题

建议 百度:搜索路由器型号+ipv6

可进入ipv6测试网站获取你的公网ipv6地址

但是每一次重拨或设备重启都会变动一次

此时你需要配置DDNS动态域名

这里以cloudflare托管的域名举例(来源yinzswang的CSDN文章

需要: 域名接入Cloudflare,Python运行环境,Cloudflare的API key、区域ID(zone id)、dns记录的dns id

浏览器打开开发者工具的Network

https://img-blog.csdnimg.cn/2021013112595989.png

修改目标DNS记录,内容随便填

https://img-blog.csdnimg.cn/20210131130559718.png

在Network面板会获取到请求,点开请求头,会获取到一个Request URL

https://img-blog.csdnimg.cn/20210131131049235.png

Request URL

1
 https://dash.cloudflare.com/api/v4/zones/111/dns_records/222

其中111为区域id(即zone id),222为DNS解析ID

打开Cloudflare的API令牌

https://img-blog.csdnimg.cn/20210131133844232.png

需要输入自己的密码

先安装依赖

1
pip install urllib3

引自CSDN博主yinzswang的代码 原文链接

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48

import urllib3
import json


def askApi(accountInfo, dnsInfo):
    apiUrl = 'https://api.cloudflare.com/client/v4/zones/%s/dns_records/%s' % (
        accountInfo['zones'], dnsInfo['dns_records']
    )

    dnsInfo.pop('dns_records')
    body = json.dumps(dnsInfo)

    headers = {
        'user-agent': 'Mozilla/5.0',
        'X-Auth-Email': accountInfo['email'],
        'X-Auth-Key': accountInfo['api'],
        'Content-Type': 'application/json'
    }

    res = urllib3.PoolManager().request("PUT", apiUrl, body=body, headers=headers)

    if res.status == 200:
        return print(dnsInfo['name'] + ": Success!")
    else:
        return print(dnsInfo['name'] + ": Fail!")


if __name__ == '__main__':
    # 获取IP地址
    ipv4 = urllib3.PoolManager().request(method="GET", url="https://ipv4.icanhazip.com").data.decode().rstrip()
    ipv6 = urllib3.PoolManager().request(method='GET', url='http://ipv6.icanhazip.com').data.decode().rstrip()

    # 账户信息(固定)(全部填写)
    accountInfo = {
        'email': 'example@qq.com', # 修改为你的Cloudflare账户邮箱
        'zones': 'example', # 修改为你的区域id(zone id )
        'api': 'example' # 修改为你的api令牌(api key)
    }
    askApi(accountInfo, dnsInfo={
        'dns_records': 'example', # 修改为你的DNS id
        'type': 'AAAA', # 解析类型
        'name': 'ddns.example.cc', # 修改为你想解析的域名
        'content': ipv6, 
        'ttl': 120,
        'proxied': True # 是否开启Cloudflare代理
    })

保存为py文件

在Python环境运行

1
python 脚本.py

开机自启

具体系统具体操作,详情百度

定时执行(不清楚运营商什么时候给你重拨)

具体系统具体操作

Linux系统一般为crontab -e 30分钟启动一次*/30 * * * * python 脚本.py

已有参考:

知乎专栏

阿里云帖子

每一个设备都分配了一个公网地址,设备之间交流便无需依赖远端服务器中转,便可直接进行交流,对个人用户无疑是个好消息,这意味着智能家居不依赖服务器便可实现,直接访问家里的电脑的文件、nas、直接对电脑进行远程控制、游戏远程联机,对第三方的依赖更少。