IPv6 默认已开启
根据 DMIT 官方文档说明,所有实例默认分配一个 /64 IPv6 前缀,无需额外申请。你可以在控制面板的实例详情中查看分配的 IPv6 地址。
极少数历史实例可能未分配 IPv6,此时可通过提交工单申请补配。
查看 IPv6 地址
获取实例 IPv6 地址的方法:
- 登录 DMIT 控制面板
- 进入实例详情页
- 在网络信息区域查看 IPv6 地址(通常与 IPv4 地址并列显示)
也可以在 SSH 登录后通过命令行查看:
ip -6 addr show
或使用更简洁的命令:
ip -6 addr show scope global
输出中会显示类似 2001:xxxx:xxxx::xxxx/64 的全球单播地址。
SSH 双栈配置
DMIT 实例的 SSH 默认同时监听 IPv4 与 IPv6。如果需要通过 IPv6 连接 SSH,使用:
ssh -6 root@<ipv6-address>
如果需要仅使用 IPv4 连接(避免 IPv6 DNS 解析问题),使用:
ssh -4 root@<ipv4-address>
限制 SSH 仅监听 IPv4
如果出于安全考虑需要限制 SSH 仅监听 IPv4,编辑 /etc/ssh/sshd_config:
AddressFamily inet
ListenAddress 0.0.0.0
修改后重启 SSH 服务:systemctl restart sshd
防火墙配置
使用 IPv6 时需要同时配置 IPv4 和 IPv6 防火墙规则。以 iptables 为例:
# IPv4 规则
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j DROP
# IPv6 规则(需要单独配置)
ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
ip6tables -A INPUT -j DROP
注意:IPv6 的 ICMP 协议(ICMPv6)对邻居发现和路径 MTU 发现至关重要,不要完全屏蔽 ICMPv6:
ip6tables -A INPUT -p icmpv6 -j ACCEPT
Web 服务器监听 IPv6
Nginx
在 Nginx 配置中添加 IPv6 监听:
server {
listen 80;
listen [::]:80;
server_name example.com;
}
Apache
在 Apache 配置中添加:
Listen 80
Listen [::]:80
DNS AAAA 记录
要使用 IPv6 对外提供服务,需要在 DNS 中添加 AAAA 记录指向你的 IPv6 地址。AAAA 记录与 A 记录并列,客户端会自动选择可用的协议栈。
如果你的 DNS 服务商支持,建议同时配置 A(IPv4)和 AAAA(IPv6)记录,让客户端根据自身网络环境选择最优路径。
按需禁用 IPv6
如果仅需 IPv4 出口,可通过 sysctl 禁用 IPv6:
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1
要永久生效,编辑 /etc/sysctl.conf 添加上述配置并执行 sysctl -p。
禁用 IPv6 后请同时检查 DNS 解析是否仍能正常工作——某些系统可能优先使用 IPv6 DNS。
常见问题
IPv6 连接不上?
- 检查防火墙是否放行了 ICMPv6(邻居发现必需)
- 检查服务是否监听
[::]而非仅0.0.0.0 - 检查本地网络是否支持 IPv6(部分 ISP 仍未部署)
IPv6 速度比 IPv4 慢?
IPv6 与 IPv4 走不同的路由路径,表现可能不同。如果 IPv6 体验不佳,可以在应用层强制使用 IPv4,或在 DNS 中不配置 AAAA 记录。
本文数据核对日期:2026-08-18。IPv6 相关功能以 DMIT 官方文档为准。