记为 Ubuntu 20.04 增加 IPv6 地址

本文以BuyVM装有Ubuntu 20.04.3的VPS为例,希望能够避免更多人踩坑甚至遭遇服务器失联。

尤其对于并不是BuyVM的VPS用户来说,情况不一定相同,建议同时参照下面加粗的参考文献研究。

分配IPv6地址

BuyVM的VPS本身不带IPv6,仅有一个IPv4。

要分配一个IPv6地址,在Stallion管理界面 - Virtual Services-Networking-IPv6内点击Assign IPv6 Address。

你可以随机选择一个,也可以在范围内指定一个IP地址。点击Add IPv6 Address,就可以了。

暂时不要关闭Stallion,等待下一步操作。

编辑Netplan设置

网络上搜到的教程大多是旧版Ubuntu所使用的方法,而Ubuntu 20.04.3已经开始使用Netplan。

使用SSH连接到服务器。如果你担心因操作不当而失联,可以直接使用VNC连接,方法见下章。

Netplan的默认配置文件处于 / etc/netplan中,里面应该有一个YAML文件,即其配置文件。

使用你喜欢的代码编辑器(Vim,Nano,whatever)打开此文件,你将看到如下形式的配置文件。有些许差异可以忽略。

yaml
1
2
3
4
5
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true

将其改成如下内容,其中核心内容将在下面说明。

yaml
1
2
3
4
5
6
7
8
9
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true
      dhcp6: true
      gateway4: x.x.x.x # IPv4 网关
      gateway6: xx::1 # IPv6 网关
      addresses: [x.x.x.x/24,'x:x::/Bitmask'] # 分别为 IPv4 地址、IPv6 地址、IPv6 Bitmask

从Stallion刚刚的页面中点击IPv4选项卡,然后在下方的IPv4 addresses中的Normal项找到设置图标。点击它,再点击Network Settings。

这个IP Address就是你的IPv4地址,Gateway就是IPv4网关,分别将其替换入上面的修改内容。如果你的Netmask也是255.255.255.0,那么 / 24就不需要变动,它们的意义相同,只是一个Netmask和Bitmask的相互转换,前者是IPv4惯用表述,后者则是IPv6的表述。Netplan统一用后者。

另外,对于某几个地点的Gateway,Frantech 官网 也有说明。

同理,进入刚刚你分配的IPv6地址设置中,替换IP Address和Gateway为对应的值。Bitmask的值则替换为网页上Netmask/Bitmask的值,一般为48。

保存配置文件,使用命令 sudo netplan try 可以自动检查配置文件,如果看起来没有问题的话就可以按回车继续了。然后使用 sudo netplan apply 来应用更改。

检查网络连接

一小段时间之后,使用 networkctl status eth0 命令查看eth0端口情况。除了查看Address信息有没有错误之外,最重要的是State。如果是绿色的routable(configured),那么一切正常。否则,degraded表示可能没有连接公网,而若下方log中提示No Route to Host则可能代表Gateway设置错误。

这之后,可以使用 ping6 google.com 测试一下IPv6下的网络连接。也可以用其他设备Ping你刚刚分配的IPv6地址。如果都不会提示Network Unreachable,那么就万事大吉了。

如果你的服务器已经因此失联

你永远可以相信VNC。在Stallion右上方的Console内点击Direct VNC Connection,然后在你的VNC客户端(官方推荐的TightVNC就不错)Viewer上输入网页中弹出的用户名和密码,就可以连接到服务器了。

参考文献