好的阿杰,我给你系统整理一下 服务器支持 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 地址
- 通过 ISP/机房分配
- ISP 会提供 IPv6 前缀,如
2001:db8:abcd::/64
- 配置在网卡上即可
- 通过隧道方式(若无公网 IPv6)
- 常用:
Hurricane Electric (HE) Tunnelbroker
- 建立 6in4 隧道,分配 IPv6 地址
步骤四:防火墙与服务支持
- 防火墙:
# 允许 IPv6 HTTP/HTTPS
ip6tables -A INPUT -p tcp --dport 80 -j ACCEPT
ip6tables -A INPUT -p tcp --dport 443 -j ACCEPT
- 服务绑定 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️⃣ 总结
- 判断支持:
- 查看接口
ip -6 addr
- 查看内核模块
lsmod | grep ipv6
- ping6 测试
- 查看接口
- 启用 IPv6:
- 加载内核模块 / 修改 sysctl
- 配置网卡获取 IPv6(DHCP 或静态 / 隧道)
- 配置防火墙与服务绑定 IPv6
- 验证:
- ping6 / curl -6 / 浏览器访问
发表回复