0%

基于ipv6-ddns的PC建站方式

教程

偶然发现实验室的电脑都分配了很多ipv6地址,且有很多是公网地址。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
inet 10.108.11.94 netmask 255.255.254.0 broadcast 10.108.11.255
inet6 2001:da8:204:1086:ad28:ff67:94a7:1997 prefixlen 64 scopeid 0x0<global>
inet6 2001:da8:204:1086:b9b8:9136:3ef3:6be6 prefixlen 64 scopeid 0x0<global>
inet6 2001:da8:204:1086:f455:5fa0:b6ca:63c prefixlen 64 scopeid 0x0<global>
inet6 fd00:f484:8d1f:b661::1066 prefixlen 128 scopeid 0x0<global>
inet6 fe80::7258:dd48:9547:6be3 prefixlen 64 scopeid 0x20<link>
inet6 fd00:f484:8d1f:b661:41f7:aed6:af12:5f13 prefixlen 64 scopeid 0x0<global>
inet6 2001:da8:204:1086:a1e4:69cb:2d82:3f54 prefixlen 64 scopeid 0x0<global>
inet6 fd00:f484:8d1f:b661:b2b0:dbde:63f4:d9e0 prefixlen 64 scopeid 0x0<global>
inet6 2001:da8:204:1086:fc1b:66d8:b2b5:8904 prefixlen 64 scopeid 0x0<global>
ether e4:54:e8:77:f5:f3 txqueuelen 1000 (以太网)
RX packets 52881182 bytes 10069311241 (10.0 GB)
RX errors 0 dropped 26069 overruns 0 frame 0
TX packets 2549468 bytes 249593912 (249.5 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 16 memory 0xe5400000-e5420000

那么就不需要ipv4公网ip了。据说现在ipv6普及,家里的宽带也都有ipv6地址。

但是ipv6地址都是被分配的,且没法固定,这个时候可以用dns解析托管商的ddns服务。很简单,其实就是获取托管商那里的一些key,然后在本地写脚本获取ipv6地址并PUSH到托管商那里更新ip。
具体见:基于 Cloudflare DNS API 部署 IPv6 DDNS

困难

但我遇到一个问题,就是直接采用上述链接里的脚本时,会尝试将所有带标记的ip地址加到域名上。而域名解析只能一对一!
其实用这种方法无法将输出列表里的fd00开头的地址剔除出去:

1
2
3
4
5
6
7
jxl@vostro-5090-china-hdd-protection:~$ ip -6 addr show dev eno1 | grep 'global temporary' | awk '{print $2}' | awk -F "/" '{print $1}'
fd00:f484:8d1f:b661:b2b0:dbde:63f4:d9e0
2001:da8:204:1086:f455:5fa0:b6ca:63c
2001:da8:204:1086:fc1b:66d8:b2b5:8904
2001:da8:204:1086:a1e4:69cb:2d82:3f54
2001:da8:204:1086:ad28:ff67:94a7:1997

但是不知道为什么,fd00这种总在列表头部,实际想要获取的2001开头地址在尾部。那么可以在命令管道后面在再加上一个tail -1,输出结果如下:

1
2
3
jxl@vostro-5090-china-hdd-protection:~$ ip -6 addr show dev eno1 | grep 'global temporary' | awk '{print $2}' | awk -F "/" '{print $1}'|tail -1
2001:da8:204:1086:ad28:ff67:94a7:1997

获得了想要的ipv6公网地址!

用途

ipv6公网地址通过ddns绑定到域名上,任何闲置主机就都能变成云服务器了。

  • ipv6支持ssh,以后在任何地方都能轻松登陆自家电脑
  • 必须要一个公网云服务器做中转的frp类内网穿透方法将被取代
  • mc服务器等可以开在自己的电脑上
  • 可以在自己的服务器上自建云盘、博客
  • 旧电脑将可以被利用,收费昂贵性能也有限的阿里云、腾讯云不再成为小服务器玩家的首选。

缺点也有,就是ipv6开起来的服务不能被只支持ipv4的网络用户访问。当然随着ipv6大力普及,这个缺点越来越小。

彩蛋

本来搞ipv6 ddns是想在主机上建一个饥荒服务器的…

结果照着饥荒面板服的教程走完,发现饥荒开服根本就不需要服务器有固定公网ip。它实际上是把个人的服务器统一登记在科雷服务器上,然后让玩家去访问科雷。
不过因为实验室电脑会自行断网,安装过程总是报网络原因的错误,我还以为是需要挂梯子,挂了也没用。最后重新用脚本连接下校园网,就非常顺滑地安装完了。
唉,安装环境总担心是资源在国外需要挂梯子的,也就中国程序员和伊朗程序员了…………

补充:ipv4

只需要把教程里的6改成4,把AAAA改为A就可以了。不需要公网ipv4,内网依旧有效。