IPv6 部署指南:VPS 开启 IPv6 的完整配置流程

IPv6 部署配置示意

为什么你的 VPS 需要 IPv6

2026 年,全球 IPv6 流量占比已超过 45%。如果你的 VPS(虚拟专用服务器)仍然只监听 IPv4,意味着越来越多使用 IPv6-only 网络的访客根本连不上你的网站——尤其在东南亚和欧洲部分运营商中,这一比例正快速攀升。

对于外贸站长来说,这不仅是技术问题,更是业务问题:Google 早已将 IPv6 作为排名参考因素之一,主流 CDN(内容分发网络)节点也优先分配 IPv6 回源地址。及早在 VPS 上完成 IPv6 部署,能让你的网站在访问速度和搜索引擎可见性上同时获益。

本文将带你走完从内核检查到防火墙放行的全部流程,覆盖 Ubuntu、Debian、CentOS 三种主流发行版。无论你用的是 Hostease VPS 还是其他服务商的实例,配置逻辑都是一样的。

第一步:确认内核和网卡已启用 IPv6

在动手配置之前,先验证你的系统是否已经具备 IPv6 基础条件。这一步很多人跳过,结果后面配置了半天发现是内核没开支持,白白浪费时间。

检查内核模块:

cat /proc/net/if_inet6

如果返回内容不为空,说明内核已加载 IPv6 模块。若没有输出,需要手动加载:

modprobe ipv6

检查网卡 IPv6 地址:

ip -6 addr show

大部分 VPS 开通时已经自动分配了 IPv6 地址,格式以 fe80 开头的是链路本地地址(link-local),以 23 开头的是全局单播地址。你需要确认至少有一个全局单播地址,格式类似:

inet6 2001:db8:1::1/64 scope global

如果只有 fe80 地址,说明服务商只给了链路本地地址,你需要联系服务商或通过控制面板申请 IPv6 地址段。选择支持原生 IPv6 的 VPS 主机 可以省去这一步的麻烦。

内核 IPv6 检查流程

第二步:配置静态 IPv6 地址

拿到 IPv6 地址段后,下一步是写入网络配置文件,让系统在每次重启后都能自动获取地址。不同发行版的配置方式差异较大,下面分别说明。

Ubuntu 22.04 / 24.04(Netplan)

Ubuntu 使用 Netplan 管理网络,配置文件在 /etc/netplan/ 目录下,通常是 01-netcfg.yaml50-cloud-init.yaml。编辑前先备份原文件:

sudo cp /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak

然后在原有配置的网卡段落中添加 IPv6 地址:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true
      addresses:
        - "2001:db8:1::1/64"
      routes:
        - to: "::/0"
          via: "2001:db8:1::1"

注意:2001:db8:1::1 只是示例地址,实际使用时替换为你的服务商分配的 IPv6 地址和网关。保存后执行:

sudo netplan apply

Debian 12 / CentOS 7(传统方式)

Debian 和 CentOS 使用传统的 /etc/network/interfaces/etc/sysconfig/network-scripts/ifcfg-eth0

Debian 示例(编辑 /etc/network/interfaces):

iface eth0 inet6 static
    address 2001:db8:1::1/64
    gateway 2001:db8:1::1

CentOS 示例(编辑 /etc/sysconfig/network-scripts/ifcfg-eth0):

IPV6INIT=yes
IPV6ADDR=2001:db8:1::1/64
IPV6_DEFAULTGW=2001:db8:1::1

改完配置后重启网络服务:

# Debian
sudo systemctl restart networking

# CentOS
sudo systemctl restart network

配置完成后,用 ip -6 addr show eth0 确认地址已生效。如果你的站点同时运行了 WordPress,可以参考 WordPress 托管优化指南 中关于服务器网络配置的建议。

第三步:配置 DNS AAAA 记录

DNS(域名系统)是将域名转换为 IP 地址的互联网基础设施,AAAA 记录是 DNS 中专门用于存储 IPv6 地址的记录类型(区别于存储 IPv4 的 A 记录)。服务器端配置完成后,还需要在 DNS 解析中添加 AAAA 记录,才能让域名指向你的 IPv6 地址。这一步经常被遗漏,导致”服务器有 IPv6 但域名解析不到”的尴尬情况。

以 Cloudflare 为例,在 DNS 设置中新增一条记录:

  • 类型:AAAA
  • 名称:@(主域名)或 www
  • 内容:你的 IPv6 地址,如 2001:db8:1::1
  • 代理状态:可开可关,建议先关闭以验证直连是否正常

添加后用以下命令验证解析是否生效:

dig AAAA yourdomain.com +short

如果返回你的 IPv6 地址,说明 DNS 已正确配置。同时建议检查 IPv4 和 IPv6 双栈是否都能正常工作:

curl -4 https://yourdomain.com   # 测试 IPv4
curl -6 https://yourdomain.com   # 测试 IPv6

两条命令都应该返回正常的 HTTP 响应。

如果你的域名托管在其他 DNS 服务商(如阿里云 DNS、腾讯云 DNSPod),操作逻辑相同:进入域名解析管理页面,新增 AAAA 记录类型,填入 IPv6 地址即可。解析生效时间取决于 TTL 设置,通常在 5 分钟到 1 小时之间。建议在修改 DNS 前先降低 TTL 值到 300 秒(5 分钟),这样后续调整能更快生效。

第四步:防火墙放行与最终验证

很多人配置完 IPv6 地址后发现仍然无法访问,原因是防火墙只放行了 IPv4 流量。这是最容易被忽略的一步,也是导致”配置好了但连不上”最常见的原因。

iptables / nftables

如果你用的是 iptables,需要使用 ip6tables 单独配置 IPv6 规则:

# 允许 ICMPv6(IPv6 邻居发现依赖此协议)
sudo ip6tables -A INPUT -p ipv6-icmp -j ACCEPT

# 允许 HTTP/HTTPS
sudo ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT

# 允许 SSH
sudo ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT

# 保存规则
sudo ip6tables-save > /etc/ip6tables.rules

UFW(Ubuntu 默认防火墙)

UFW 对 IPv6 的支持是内置的,但需要确认已启用:

sudo nano /etc/default/ufw

确保 IPV6=yes 这一行存在且未被注释。然后正常添加规则即可:

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

UFW 会自动为 IPv4 和 IPv6 同时创建对应规则。

防火墙 IPv6 配置示意

防火墙规则配置完成后,用以下命令做最终验证:

# 测试 IPv6 连通性
ping6 -c 3 2001:4860:4860::8888

# 检查本机 IPv6 地址
curl -6 https://ifconfig.co

# 检查 AAAA 记录解析
dig AAAA yourdomain.com +short

如果三条命令都返回正常结果,你的 IPv6 部署就完成了。还有一个实用的在线工具:ipv6-test.com,可以帮你检测网站的 IPv6 可达性和评分。

常见问题与排障思路

问题 1:ping6 返回 “Network is unreachable”

通常是缺少默认 IPv6 路由。检查路由表:

ip -6 route show

如果没有 default via 条目,需要手动添加:

sudo ip -6 route add default via 2001:db8:1::1 dev eth0

问题 2:IPv6 地址 ping 通了,但网站无法访问

检查 Web 服务器是否绑定了 IPv6 地址。Nginx 需要在 listen 指令中添加:

listen [::]:80;
listen [::]:443 ssl;

Apache 则需要在 VirtualHost 中添加:

Listen [::]:80
Listen [::]:443

问题 3:curl -6 返回超时

八成是防火墙问题。用 ip6tables -L -n 检查是否有 DROP/REJECT 规则阻止了目标端口。如果用的是云服务商的安全组,也要确认安全组中放行了 IPv6 流量。

问题 4:IPv6 配置重启后丢失

说明没有写入持久化配置文件。临时命令(如 ip -6 addr add)只在当前会话生效,重启后会丢失。必须将配置写入 Netplan、/etc/network/interfacesifcfg-eth0 文件中,才能保证开机自动加载。

问题 5:部分客户端能访问,部分不行

这通常是 DNS 缓存或运营商 DNS 服务器的问题。建议在 DNS 切换前降低 TTL,并在切换后等待至少 2 个原 TTL 周期。用户端可以通过刷新 DNS 缓存加速生效(Windows: ipconfig /flushdns,macOS: sudo dscacheutil -flushcache)。

如果你需要一个开箱即用的 VPS 环境,选择已预配置 IPv6 的服务商可以省去大部分排障步骤。

总结

IPv6 部署并不复杂,但每一步都有可能出现”差一点就通”的情况。核心流程可以归纳为五个环节:确认内核支持 → 配置静态地址 → 添加 DNS AAAA 记录 → 防火墙放行 → 验证连通性。

建议按照本文的顺序逐步操作,每完成一步就验证一次,不要一口气全改完再测试——这样出了问题很难定位是哪一步的锅。对于运行重要业务的站点,建议先在测试环境验证 IPv6 配置,确认无误后再应用到生产服务器。如果你想了解更多服务器优化技巧,可以访问 Hostease 博客 获取更多实用教程。

发表评论