在腾讯云轻量应用服务器(Lighthouse)上为 Web 服务绑定 IPv6 地址,需完成 三步关键配置:确认 IPv6 已开通 → 配置系统网络(启用并绑定 IPv6 地址)→ 配置 Web 服务器监听 IPv6。以下是详细、可操作的步骤(以 Ubuntu 22.04/CentOS 7+ 和 Nginx/Apache 为例):
✅ 第一步:确认轻量服务器已开通 IPv6(腾讯云控制台)
- 登录 腾讯云控制台
- 进入「轻量应用服务器」→ 选择目标实例 → 「更多」→ 「网络与安全组」→ 「IPv6 设置」
- ✅ 确保状态为 已开启 IPv6(若未开启,点击「开启 IPv6」并等待约 1 分钟生效)
- 记下分配的 IPv6 地址(格式如
2402:f800:xxxx:xxxx::xxxx/64,其中/64是前缀长度)
⚠️ 注意:轻量服务器默认仅分配一个 IPv6 地址(/128),但可通过
ip -6 addr show查看实际配置的地址(通常是...::1/128或...::2/128,取决于系统自动配置)。
✅ 第二步:配置操作系统(Linux)启用并绑定 IPv6
🔹 Ubuntu / Debian(推荐使用 systemd-networkd 或 netplan)
腾讯云轻量默认使用 cloud-init + netplan(Ubuntu 20.04+):
# 1. 查看当前 IPv6 地址(确认已获取)
ip -6 addr show dev eth0 | grep "inet6.*global"
# 2. 编辑 netplan 配置(通常为 /etc/netplan/01-netcfg.yaml 或类似)
sudo nano /etc/netplan/01-netcfg.yaml
✅ 修改后示例(确保包含 IPv6 地址和网关):
network:
version: 2
ethernets:
eth0:
dhcp4: true
dhcp6: true # ✅ 关键:启用 DHCPv6 自动获取地址(腾讯云支持)
# 或手动指定(不推荐,除非有特殊需求):
# addresses:
# - "2402:f800:xxxx:xxxx::xxxx/64"
# routes:
# - to: "::/0"
# via: "2402:f800:xxxx:xxxx::1" # 腾讯云 IPv6 网关(具体见控制台)
# 3. 应用配置
sudo netplan apply
# 4. 验证(应看到 global scope 的 IPv6 地址)
ip -6 addr show dev eth0 | grep "inet6.*global"
🔹 CentOS 7/8(使用 NetworkManager 或 ifconfig)
# 查看是否已有 IPv6 地址
ip -6 addr show dev eth0
# 若无,检查是否启用 IPv6(默认已启用)
sysctl net.ipv6.conf.all.disable_ipv6 # 应为 0
# 编辑网卡配置(如 /etc/sysconfig/network-scripts/ifcfg-eth0)
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
✅ 添加以下行(启用 DHCPv6):
IPV6INIT=yes
DHCPV6C=yes
# 或静态配置(不推荐):
# IPV6ADDR=2402:f800:xxxx:xxxx::xxxx/64
# IPV6_DEFAULTGW=2402:f800:xxxx:xxxx::1
sudo systemctl restart NetworkManager # 或 reboot
✅ 验证成功标志:
ping6 -c 3 ipv6.google.com或curl -6 https://6.ipw.cn应返回 IPv6 地址。
✅ 第三步:配置 Web 服务器监听 IPv6
🌐 方式一:Nginx(推荐)
编辑站点配置(如 /etc/nginx/sites-available/default 或 /etc/nginx/conf.d/your-site.conf):
server {
listen 80;
listen [::]:80; # ✅ 关键:监听 IPv6 的所有地址(:: 表示 ::0)
listen 443 ssl;
listen [::]:443 ssl; # ✅ 同样添加 IPv6 SSL 监听
server_name your-domain.com;
# SSL 配置(如有)
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
root /var/www/html;
index index.html;
}
}
✅ 重载 Nginx:
sudo nginx -t && sudo systemctl reload nginx
🌐 方式二:Apache
编辑虚拟主机配置(如 /etc/apache2/sites-available/000-default.conf):
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
</VirtualHost>
# ✅ 添加 IPv6 监听(关键!)
<VirtualHost [::]:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
</VirtualHost>
# HTTPS 同理(需启用 ssl 模块)
<IfModule mod_ssl.c>
<VirtualHost *:443>
# ... SSL config
</VirtualHost>
<VirtualHost [::]:443> # ✅ IPv6 SSL
# ... same SSL config
</VirtualHost>
</IfModule>
✅ 启用模块并重载:
sudo a2enmod ssl
sudo systemctl reload apache2
✅ 第四步:安全组放行 IPv6 流量(⚠️极易遗漏!)
- 控制台 → 轻量服务器 → 实例详情页 → 「安全组」→ 点击关联的安全组
- 编辑「入站规则」→ 新增规则:
- 协议类型:
TCP - 端口范围:
80,443(或80/80,443/443) - 源 IP:
::/0(允许所有 IPv6 地址)
(生产环境建议限制为特定 CIDR,如2402:f800::/32)
- 协议类型:
- 保存规则 ✅
🔍 验证:在本地终端执行
curl -6 http://[2402:f800:xxxx:xxxx::xxxx] # 替换为你的 IPv6 地址(加方括号!)应返回 Web 页面内容。
✅ 可选:绑定域名到 IPv6(DNS 解析)
- 在域名 DNS 管理处添加一条
AAAA记录:- 主机名:
@或www - 记录值:
2402:f800:xxxx:xxxx::xxxx(你的服务器 IPv6 地址)
- 主机名:
- 生效时间:TTL 决定(通常几分钟到几小时)
验证 DNS:
dig AAAA your-domain.com +short
# 或
nslookup -q=aaaa your-domain.com
❗ 常见问题排查
| 现象 | 可能原因 | 解决 |
|---|---|---|
curl -6 超时 |
安全组未放行 IPv6 / 系统未获取 IPv6 地址 | 检查控制台 IPv6 开启状态 + ip -6 a + 安全组 ::/0 规则 |
Nginx 启动失败报 bind() to [::]:80 failed |
IPv6 未启用或端口被占用 | sysctl net.ipv6.conf.all.disable_ipv6=0;ss -tuln | grep :80 |
| Web 可通过 IPv4 访问,IPv6 不通 | Web 服务未监听 [::]:80 |
检查 Nginx/Apache 配置中是否有 listen [::]:80 |
ping6 失败但 curl -6 成功 |
ICMPv6 被防火墙/运营商屏蔽(正常),HTTP 层通即可 |
✅ 总结流程图:
控制台开启 IPv6 → 系统启用 DHCPv6 获取地址 → Web 服务器添加 [::]:80 监听 → 安全组放行 ::/0:80,443 → DNS 添加 AAAA 记录
如需进一步协助(例如查看你的 ip -6 a 输出、Nginx 配置片段),欢迎贴出具体信息,我可帮你逐行诊断。
需要我为你生成一份 一键检测脚本(检查 IPv6 状态、Web 监听、防火墙等)吗? 😊
PHPWP博客