为什么现在就必须在 VPS 上部署 IPv6
IPv4(互联网协议第四版)地址池已经基本耗尽,全球各大云服务商和网络运营商正在加速向 IPv6(互联网协议第六版,提供近乎无限的地址空间和更高效的路由机制)过渡。如果你的网站仍然只依赖 IPv4,未来可能面临访问受限和搜索引擎排名下降的风险。对于使用 VPS(虚拟专用服务器)的站长来说,尽早完成 IPv6 部署是保障业务连续性的必要举措。本指南将教你如何一步步在 VPS 上开启 IPv6 支持,从检测环境到配置网络、设置 DNS(域名解析服务)、部署防火墙直至验证连通性。如果你想深入了解 VPS 运维,也可以参考 VPS 使用指南 和 服务器管理入门。
确认 VPS 是否已支持 IPv6
在开始配置之前,先确认你的 VPS 实例是否已具备 IPv6 地址。许多主流云服务商在创建实例时会自动分配一个 IPv6 地址,但并非所有套餐都默认启用。
登录到 VPS,执行 ip -6 addr show 或 ifconfig,查看网络接口上是否出现了以 inet6 开头且非 fe80 开头的全局单播地址。如果看到形如 2001:db8::xxxx 的地址,说明 IPv6 已分配。如果只有链路本地地址(以 fe80 开头),则需要在服务商控制面板中手动启用。另一个检测方法是 ping6 ipv6.google.com,收到响应则说明基础网络可用。关于不同服务器的 IPv6 支持情况,可以查阅 独立服务器与VPS的区别。
Linux 系统中的 IPv6 网络配置
确认 VPS 已分配 IPv6 地址后,需要在操作系统层面完成网络配置。
在 Ubuntu 系统中,网络配置由 Netplan 管理。编辑 /etc/netplan/*.yaml 文件,在网卡配置下添加 IPv6 地址和网关。一个典型配置包含 addresses 字段(填入服务商分配的 IPv6 地址,通常以 subnet 格式给出,例如 /64 表示一个包含 2 的 64 次方个地址的子网)和 gateway6 字段。配置完成后执行 netplan apply 生效。
对于 CentOS 或 Rocky Linux,编辑 /etc/sysconfig/network-scripts/ifcfg-eth0,添加 IPV6INIT=yes、IPV6ADDR(IPv6 地址及前缀长度,如 /128 表示单个主机地址)和 IPV6_DEFAULTGW 等参数,然后重启 network 服务。
Hostease 的 VPS 在创建实例时通常已自动完成 IPv6 网络配置,你只需确认内核参数 net.ipv6.conf.all.disable_ipv6 为 0 即可。如果值为 1,说明 IPv6 被内核禁用,需编辑 /etc/sysctl.conf 将其改回 0 并执行 sysctl -p。更多建站环境配置细节请参阅 建站指南。
为域名添加 AAAA 记录实现 IPv6 解析
网络层配置完成后,还需要让域名系统知道你的域名应指向 IPv6 地址。这就需要用到 AAAA 记录(将域名映射到 IPv6 地址的 DNS 记录类型,区别于将域名映射到 IPv4 地址的 A 记录)。
登录域名管理面板,在解析设置中新增一条 AAAA 记录。主机记录填写 @ 或 www,记录值填写 VPS 的完整 IPv6 地址,TTL 保持默认即可。如果同时保留了原有 A 记录,域名就同时具备 IPv4 和 IPv6 解析能力。
DNS 记录全球生效需要一定时间,通常从几分钟到几小时不等。可使用 dig AAAA yourdomain.com 或 nslookup -type=AAAA yourdomain.com 验证记录是否生效。
搭建双栈网络让 IPv4 与 IPv6 并行运行
绝大多数场景需要采用 dual-stack(双栈)模式,即让 VPS 同时运行 IPv4 和 IPv6 两套协议栈。双栈模式是当前最推荐的过渡方案,因为它不依赖额外的隧道(tunnel,一种在 IPv4 网络上封装传输 IPv6 数据包的技术)或转换机制,兼容性最佳。
在双栈配置下,操作系统内核会根据目标地址类型自动选择协议栈,应用程序通常无需修改即可同时监听 IPv4 和 IPv6 连接。Nginx 和 Apache 的默认配置通常已支持双栈,只需确保 listen [::]:80 和 listen [::]:443 指令存在。
如果你使用 Docker 容器部署,还需确认 Docker 网络支持 IPv6。编辑 /etc/docker/daemon.json,添加 "ipv6": true 和 "fixed-cidr-v6" 参数后重启 Docker。详细的容器网络配置可参考 Docker 部署最佳实践。
配置 ip6tables 防火墙保护 IPv6 安全
开启 IPv6 后,一个容易被忽略的问题是:默认的 iptables 规则只作用于 IPv4 流量,IPv6 流量实际上处于无防护状态。因此配置 ip6tables(Linux 内置的 IPv6 防火墙工具)是部署中不可或缺的一步。
执行 ip6tables -L 查看当前规则,通常默认策略是全部放通。接下来按以下逻辑设置:先将默认入站策略设为拒绝,再允许已建立的连接和回环接口,最后开放 SSH(端口 22)、HTTP(端口 80)和 HTTPS(端口 443)。同时建议允许 ICMPv6 流量,因为 IPv6 的邻居发现和路径 MTU 发现依赖此协议。
配置完成后使用 ip6tables-save 持久化规则。部分发行版需安装 iptables-persistent 包。如果你需要大带宽服务器来承载高流量 IPv6 访问,可以了解下 带宽(服务器与外部网络之间的数据传输容量上限)优化 的相关内容。
验证 IPv6 连通性并排查常见问题
所有配置完成后,需要进行全面的连通性测试。最基础的测试是执行 ping6 2001:4860:4860::8888(Google 公共 DNS),收到响应说明出站 IPv6 连接正常。从外部测试入站连通性可使用在线工具如 ipv6-test.com,输入域名或 IPv6 地址即可检测。
在实际部署中,你可能会遇到以下几类常见问题。路由问题方面,ping6 提示”Network unreachable”通常是默认网关未配置或配置错误,需检查 Netplan 或网络脚本中的网关地址。DNS 解析不生效时,可能是 TTL 未到期或 DNS 缓存未刷新,耐心等待或联系服务商清除缓存即可。防火墙拦截方面,如果 IPv6 地址能 ping 通但端口不通,需检查 ip6tables 规则和云服务商安全组是否放行了 IPv6 策略。应用层面的问题则常见于老旧库不支持 IPv6 字面量地址(需用方括号包裹如 [::1]:8080),可在 /etc/gai.conf 中调整地址族优先级。
总结与后续建议
完成以上步骤后,你的 VPS 就具备了完整的 IPv6 支持能力。建议你定期使用在线工具监测 IPv6 连通性,关注系统安全更新以修补可能的 IPv6 漏洞,并持续优化防火墙规则。随着 IPv6 流量占比逐年提升,尽早完成 IPv6 部署将为你的业务带来更好的兼容性和用户体验。如果你需要更多关于服务器运维的指导,推荐继续阅读 建站指南系列文章,也可以考虑将网站迁移到全面支持 IPv6 的托管平台,以获得更稳定可靠的基础设施保障。