“VPS能不能分配IPv6地址?”——答案是肯定的。绝大多数主流VPS服务商都已支持IPv6,而且很多新创建的实例默认就分配了IPv6地址。
但问题在于:分配了不等于配置好了,配置好了不等于能用了。很多用户看到控制面板里有个IPv6地址就以为万事大吉,结果网站还是打不开、ping还是超时。今天这篇文章,把从“分配”到“真正能用”的完整流程讲清楚。
先确认服务商是否已经分配了IPv6地址
真正动手配置之前,先确认你的VPS是否已经拿到了可公网访问的IPv6地址。
登录服务器后执行:
ip -6 addr show
ip -6 route show
如果网卡上只有`fe80::`开头的地址,那只是链路本地地址,只能在同一个二层网络里通信,不能直接用于公网访问。你需要在控制面板中检查实例是否已启用IPv6,并记录平台分配的地址、前缀长度和默认网关。常见前缀包括`/64`和`/128`:`/64`更常见于完整子网分配,`/128`通常表示单个主机地址。
如果控制面板里根本没有IPv6相关的选项,说明服务商不支持或未开通。这种情况下可以联系客服确认。
Linux系统配置IPv6(主流发行版全覆盖)
确认地址后,再进入系统配置。不同Linux发行版的配置方式不同,以下按发行版分别说明。
CentOS 8 / Rocky Linux / AlmaLinux
假设网络适配器名称为`ens3`。修改`/etc/sysconfig/network-scripts/ifcfg-ens3`:
TYPE="Ethernet"
DEVICE="ens3"
ONBOOT="yes"
BOOTPROTO="dhcp"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
重启网络:
nmcli con load /etc/sysconfig/network-scripts/ifcfg-ens3
nmcli con up 'System ens3'
CentOS 6-7
修改`/etc/sysconfig/network-scripts/ifcfg-eth0`:
IPV6INIT="yes"
IPV6ADDR="2001:db8:1000::100/64"
IPV6_AUTOCONF="yes"
重启网络:
service network restart
Ubuntu 17-20(Netplan)
修改`/etc/netplan/10-ens3.yaml`:
network:
version: 2
renderer: networkd
ethernets:
ens3:
dhcp4: yes
addresses:
- '2001:db8:1000::200/64'
执行`sudo netplan try`会先验证配置并给你一次自动回滚机会——适合远程操作,避免因为写错网关导致SSH断开。确认无误后执行`sudo netplan apply`。
Ubuntu 22.04/24.04(Netplan含路由配置)
如果需要同时配置默认路由,配置片段可参考:
network:
version: 2
ethernets:
eth0:
dhcp4: true
addresses:
- "2001:db8:1::10/64"
routes:
- to: "::/0"
via: "2001:db8:1::1"
同样先执行`sudo netplan try`确认不会断连再应用。
Debian 9-10
添加以下代码到`/etc/network/interfaces`文件中:
动态获取:
iface ens3 inet6 auto
静态配置:
iface ens3 inet6 static
address 2001:db8:1000::100
netmask 64
重启网络:
systemctl restart networking.service
Fedora 29-32
通过nmcli命令行配置:
nmcli con mod 'Wired connection 1' ipv6.method 'auto' ipv6.addresses ''
nmcli con mod 'Wired connection 1' +ipv6.addresses '2001:db8:1000::200/128'
nmcli con up 'Wired connection 1'
通用检查:确认内核未禁用IPv6
如果系统内核禁用了IPv6,即使地址和路由正确也不会生效。执行以下命令检查:
sysctl net.ipv6.conf.all.disable_ipv6
返回`0`表示启用,返回`1`表示禁用。需要调整时,把`/etc/sysctl.conf`中对应值改为0,再执行`sudo sysctl -p`。
临时添加默认路由(用于验证)
如果服务器已有全局IPv6地址但公网测试失败,先看路由表:
ip -6 route show | grep default
若没有输出,可以临时添加一条默认路由做验证:
sudo ip -6 route add default via 你的IPv6网关 dev eth0
ping6 -c 3 2001:4860:4860::8888
注意:这里的IPv6网关必须替换为控制台或服务商提供的实际网关地址。若临时路由添加后连通性恢复,说明问题在持久化网络配置,需要写入网卡配置文件。
Windows系统配置IPv6
Windows系统的配置相对直观,主要通过图形界面完成。
登录Windows云服务器后,进入“控制面板”→“网络和Internet”→“网络和共享中心”,单击对应的以太网适配器进行编辑。在以太网状态弹窗中,单击左下角“属性”。在属性弹窗中,选中“Internet协议版本6(TCP/IPv6)”,再单击“属性”。
在弹窗中手工输入系统为云服务器分配的IPv6地址。如果不确定地址,可以在云服务商控制台的实例详情页或弹性网卡详情页查看。你还可以按需设置IPv6协议的DNS服务器(如不设置,默认通过IPv4协议配置的DNS服务器进行域名解析)。
配置完成后,打开Windows PowerShell窗口,通过以下命令查看配置生效情况和测试连通性:
ipconfig /all
ping -6 www.qq.com
注意:默认情况下,云服务器上配置的IPv6地址仅具有IPv6内网通信能力。若需要访问IPv6公网或被IPv6公网访问,还需要根据服务商的指引开通公网带宽。
添加DNS AAAA记录
系统能访问IPv6并不代表域名已经能走IPv6。你还需要在域名解析面板里添加AAAA记录。
- A记录指向IPv4地址
- AAAA记录指向IPv6地址
如果两者同时存在,访问端会根据本地网络和系统策略选择合适协议。实际配置时,主机记录通常填`@`或`www`,记录值填写完整的IPv6地址。
防火墙与Web服务监听:配置IPv6端口放行
IPv4防火墙与IPv6防火墙完全独立。只放行了IPv4的80、443端口不代表IPv6也能通。
Linux ip6tables放行示例:
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
Nginx同时监听IPv4和IPv6:
listen 80;
listen [::]:80;
Apache同时监听IPv4和IPv6:
Listen 80
或明确指定:
Listen 0.0.0.0:80
Listen [::]:80
验证结果
配置完成后,执行以下测试确认IPv6已正常工作:
服务器出站测试:
ping6 -c 3 2001:4860:4860::8888
若能ping通,说明服务器可以访问公网IPv6。若返回`Network is unreachable`,通常是默认路由缺失。
外部入站测试:从另一台支持IPv6的设备上`ping6 你的服务器IPv6地址`。或使用在线IPv6测试工具(如`test-ipv6.com`)验证。
给VPS分配IPv6地址并不复杂——确认服务商已分配地址、在系统中配置网络、添加DNS AAAA记录、放行防火墙端口、验证连通性,五个步骤走完就能让IPv6真正“跑起来”。
Jtti提供覆盖香港、日本、美国、新加坡等数据中心的云服务器产品,支持IPv6双栈部署。其香港节点采用双向CN2 GIA精品线路,华南地区延迟可低至12-18ms,为IPv6业务提供稳定流畅的网络底座。无论你是搭建面向IPv6用户的网站,还是为未来的网络架构做准备,一台支持IPv6的Jtti云服务器都是可靠的起点。
CN
EN