DigitalOcean VPS启用IPv6以及解决IPv6地址Ping不通问题
一、开启IPv6
很容易,登录DigitalOcean Contorl Panel
选择需要开启IPv6的Droplet
选择Settings
点击Public IPv6 Network
下的Enable
等待几秒钟就会出现分配好的IPv6地址等信息,比如我的:
PUBLIC IPV6 ADDRESS:
2604:a880:1:20::13:c001/64
PUBLIC IPV6 GATEWAY:
2604:a880:1:20::1
CONFIGURABLE ADDRESS RANGE:
2604:a880:1:20::13:c000 - 2604:a880:1:20::13:c00f
注意:
- 此IPv6地址不需要重启服务器即已生效
- 像我的IPv6地址这里显示的是2604:a880:1:20::13:c001/64,而实际使用时是不需要后面的/64的,即我的IPv6地址为2604:a880:1:20::13:c001
此时从本地计算机ping
这个IPv6地址是ping
不通的,如:
ping 2604:a880:1:20::13:c001
会出现:
无法访问目标主机。
请求超时。
无法访问目标主机。
请求超时。
其实原因是:DigitalOcean虽然已经将此IPv6地址分配给这个Droplet
,但此Droplet
服务器网卡中还未更新IPv6地址。
二、修改服务器IPv6配置
使用这个命令可以看到服务器网卡目前设置的IPv6地址:
ip -6 addr show eth0
可以看到例如:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
inet6 fe80::601:1cff:fe11:5b01/64 scope link
valid_lft forever preferred_lft forever
解决ping
不通的方法就是手动配置IPv6地址。
首先配置IPv6地址:
ip -6 addr add YOUR_PUBLIC_IPV6_ADDRESS/64 dev eth0
然后配置IPv6网关:
ip -6 route add default via YOUR_PUBLIC_PIV6_GATEWAY dev eth0
这样再ping
自己服务器的IPv6地址就能ping
通了,不过服务器重启后又会要重复上述步骤。
三、固化IPv6配置
为了避免每次重启服务器都要重新配置IPv6,可以通过写入服务器网络配置文件的方式实现。
Ubuntu下,编辑/etc/network/interfaces
文件:
nano /etc/network/interfaces
将下面的内容添加到文件中:
iface eth0 inet6 static
address YOUR_PUBLIC_IPV6_ADDRESS
netmask 64
gateway YOUR_PUBLIC_PIV6_GATEWAY
autoconf 0
dns-nameservers 2001:4860:4860::8844 2001:4860:4860::8888 209.244.0.3
注意:上面的YOUR_PUBLIC_IPV6_ADDRESS
最后没有/64
重启后即生效。
这样即可正常使用此IPv6地址,甚至用来SSH
登录。