好的阿杰,我给你系统整理一下 服务器支持 IPv6 的判断与配置方法,从理解、检测到部署都涵盖。


1️⃣ 服务器是否支持 IPv6

方法一:查看网络接口

在 Linux 上,可以使用以下命令查看 IPv6 配置:

ip -6 addr

  • 如果看到类似 inet6 的地址(例如 2001:db8::1/64),说明接口已经支持 IPv6
  • 如果只有 ::1(loopback),说明 IPv6 仅限本地环回,不支持公网访问

示例输出:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
    inet6 2001:db8:abcd::1/64 scope global
    inet6 fe80::abcd:1234:5678:9abc/64 scope link


方法二:检查内核支持

cat /proc/net/if_inet6

  • 文件存在且有内容,说明内核支持 IPv6
  • 文件为空或不存在,说明内核未启用 IPv6
lsmod | grep ipv6

  • 查看 IPv6 模块是否加载

方法三:ping 测试

ping6 google.com

  • 能 ping 通 IPv6 地址说明网络可用
  • 失败说明服务器可能未配置公网 IPv6

2️⃣ 如何让服务器支持 IPv6

步骤一:检查内核模块

IPv6 通常由内核模块提供支持。确保内核已启用 IPv6:

modprobe ipv6   # 加载 IPv6 模块

永久启用 IPv6(以 Ubuntu/Debian 为例):

sudo nano /etc/sysctl.conf
# 添加或修改以下行
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
sudo sysctl -p


步骤二:配置网络接口

以 Ubuntu /etc/netplan/01-netcfg.yaml 为例:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: yes
      dhcp6: yes  # 开启 IPv6

然后应用配置:

sudo netplan apply

其他系统:

  • CentOS 7/8 使用 nmcli 或 /etc/sysconfig/network-scripts/ifcfg-eth0 添加:
IPV6INIT=yes
IPV6_AUTOCONF=yes

然后重启网络:

systemctl restart network


步骤三:获取公网 IPv6 地址

  1. 通过 ISP/机房分配
  • ISP 会提供 IPv6 前缀,如 2001:db8:abcd::/64
  • 配置在网卡上即可
  1. 通过隧道方式(若无公网 IPv6)
  • 常用:Hurricane Electric (HE) Tunnelbroker
  • 建立 6in4 隧道,分配 IPv6 地址

步骤四:防火墙与服务支持

  1. 防火墙
# 允许 IPv6 HTTP/HTTPS
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT

  1. 服务绑定 IPv6
  • Nginx / Apache / MySQL / SSH 等
  • 示例 Nginx:
server {
    listen [::]:80;
    server_name example.com;
}


步骤五:验证 IPv6 支持

ping6 google.com
curl -6 https://ifconfig.co

  • 能 ping 通并获取 IPv6 公网地址说明配置成功

3️⃣ 总结

  1. 判断支持
    • 查看接口 ip -6 addr
    • 查看内核模块 lsmod | grep ipv6
    • ping6 测试
  2. 启用 IPv6
    • 加载内核模块 / 修改 sysctl
    • 配置网卡获取 IPv6(DHCP 或静态 / 隧道)
    • 配置防火墙与服务绑定 IPv6
  3. 验证
    • ping6 / curl -6 / 浏览器访问