2026年,IPv6的普及已经不再是“未来趋势”,而是现实压力。全球IPv4地址池早已耗尽,云厂商默认分配IPv6地址,运营商网络天然优先走IPv6,手机移动网络在多数场景下IPv6的优先级已经高于IPv4。如果你的VPS只监听IPv4,相当于主动把相当一部分用户拒之门外。
但对于刚接触VPS的用户来说,IPv6配置往往卡在一个尴尬的位置:网上的教程要么太碎,要么默认你已经懂了基础概念。这篇文章从零开始,把IPv6的配置流程拆解成可执行的步骤,不要求任何前置知识。
先确认你的VPS到底有没有IPv6地址
动手配置之前,先搞清楚一个前提:不是所有VPS产品都默认分配IPv6地址。
理解IPv6地址的“身份构成”
IPv6地址看起来比IPv4复杂得多——`2001:db8:1000::100/64`这样的格式,初学者容易懵。拆开来看其实不复杂。
`2001:db8:1000::`是网络前缀,相当于IPv4里的“网段”。`::100`是接口标识,相当于IPv4里的“主机号”。`/64`是前缀长度,表示这个地址的前64位是网络部分,后64位留给设备自己分配。绝大多数VPS场景下,你会拿到一个`/64`的子网,意味着有海量的地址空间可以自由使用。
网关地址是数据包离开本地子网时需要经过的“出口”,格式通常与你的IPv6地址在同一网段,但接口标识部分不同。云服务商控制台通常会同时给出IPv6地址和网关地址,记下来备用。
识别需要配置的网卡
通过SSH连接VPS后,第一步是确认要配置在哪块网卡上。
ip address show
输出中会列出所有网络接口。重点关注两个信息:接口名称(如`eth0`、`ens3`、`enp0s3`)和当前是否已有IPv6地址。如果你看到`inet6 fe80::...`这样的地址,那是链路本地地址,以`fe80::`开头,不是公网IPv6地址,无法用于互联网通信。真正的公网IPv6地址不会以`fe80`开头。
记下需要配置的网卡名称,后续所有操作都围绕它展开。
选择配置方式:工具配置与手动配置
Linux云服务器配置IPv6有三种路径:自动获取、工具配置和手动配置。自动获取依赖云平台的DHCPv6服务,部分镜像默认支持,但很多云环境并没有开启DHCPv6,自动获取会失败。
手动配置的核心是在网络配置文件中写入IPv6地址和网关。不同Linux发行版使用不同的网络管理工具,下面分别说明。
Ubuntu 18.04及以上版本:Netplan
Netplan是Ubuntu的默认网络配置工具,配置文件位于`/etc/netplan/`目录下,文件名通常为`01-netcfg.yaml`或`50-cloud-init.yaml`。
编辑配置文件:
sudo nano/etc/netplan/01-netcfg.yaml
在对应的网卡配置段中添加IPv6地址和路由。注意:`gateway6`键在Netplan 0.103之后已被弃用,推荐使用`routes`语法来定义默认网关:
yaml
network:
version:2
renderer:networkd
ethernets:
eth0:
addresses:
-你的IPv4地址/24
-你的IPv6地址/64
routes:
-to:default
via:你的IPv4网关
-to:::/0
via:你的IPv6网关
nameservers:
addresses:
-8.8.8.8
-2001:4860:4860::8888
保存后执行:
sudo netplan apply
CentOS/RHEL/Rocky Linux:ifcfg文件
CentOS 7及更早版本使用`/etc/sysconfig/network-scripts/ifcfg-eth0`文件。添加以下配置:
IPV6INIT="yes"
IPV6ADDR="你的IPv6地址/64"
IPV6_DEFAULTGW="你的IPv6网关"
CentOS 8及以上版本使用NetworkManager,可以通过`nmcli`命令配置:
sudo nmcli connection modify eth0 ipv6.addresses"你的IPv6地址/64"
sudo nmcli connection modify eth0 ipv6.gateway"你的IPv6网关"
sudo nmcli connection modify eth0 ipv6.method manual
sudo nmcli connection up eth0
验证配置是否生效
配置完成后,用以下命令验证。
ip-6 addr show eth0
输出中应该能看到你配置的IPv6地址,状态为`scope global`。如果只看到`fe80::`开头的地址,说明配置没有生效。
ping6-c 4 2001:4860:4860::8888
这是Google的IPv6公共DNS地址。如果能ping通,说明IPv6的连通性正常。
curl-6 ifconfig.me
这条命令会通过IPv6协议访问外部服务并返回你的公网IPv6地址。如果返回了你配置的地址,说明IPv6出口已经正常工作。
服务监听与防火墙:容易被忽略的两步
IPv6地址配置好了,但如果服务只监听了IPv4,外部依然无法通过IPv6访问。
以Nginx为例,仅写`listen 80;`只监听IPv4。双栈的正确写法是同时添加IPv6监听:
nginx
server{
listen 80;
listen[::]:80;
server_name example.com;
}
`[::]`是IPv6的“任意地址”写法,等价于IPv4的`0.0.0.0`。漏掉这一行,所有IPv6请求都会超时。
防火墙同样需要同步。IPv4和IPv6的防火墙规则是两套独立的体系。UFW环境下执行:
sudo ufw allow 80/tcp
UFW会自动同时处理IPv4和IPv6规则。但如果你使用的是`iptables`,需要单独在`ip6tables`中添加规则,否则IPv6流量会被默认丢弃。
验证IPv6公网可达性
从服务器自身验证通过后,还需要从外部验证。打开浏览器访问`test-ipv6.com`,这个工具会从你的浏览器出发,测试IPv6的连通性并给出评分。如果你的VPS上运行着网站,也可以使用在线IPv6检测工具输入域名,确认AAAA记录是否生效以及IPv6访问是否正常。
IPv6的配置本身并不复杂,核心就是三步:拿到地址、写入配置、验证连通。真正需要花心思的是确认你的VPS产品是否支持IPv6,以及服务监听和防火墙规则是否同步更新。
推荐文章