Linux服务器IPv6无法连接可能由多种原因导致,包括网络配置错误、防火墙设置、路由问题、内核支持等。以下是系统性排查方向及解决方案:

1. IPv6网络配置问题
• 检查IPv6地址分配:
ip -6 addr show | grep "inet6" # 确认存在非fe80开头的公网/内网IPv6地址
• 验证子网前缀与网关:/etc/network/interfaces或Netplan配置需包含正确的IPv6地址/前缀长度和网关。
• DHCPv6/SLAAC支持:确认网络环境是否启用DHCPv6或SLAAC(无状态自动配置)。
2. 路由表异常
• 检查IPv6默认路由:
ip -6 route show | grep "default"
• 缺失时手动添加:ip -6 route add default via fe80::1 dev eth0(示例)
3. 防火墙拦截
• 检查iptables或nftables规则:
ip6tables -L -v -n # 查看IPv6规则链
• 开放必要端口:ip6tables -A INPUT -p tcp --dport 22 -j ACCEPT
4. 内核模块未启用
• 确认IPv6内核支持:
lsmod | grep ipv6 # 输出应包含"ipv6" sysctl net.ipv6.conf.all.disable_ipv6 # 返回值需为0
• 启用命令:sysctl -w net.ipv6.conf.all.disable_ipv6=0
| 工具 | 命令示例 | 用途 |
|---|---|---|
| ping6 | ping6 2001:db8::1 | 测试IPv6连通性 |
| traceroute6 | traceroute6 google.com | 追踪IPv6路由路径 |
| ss | ss -6ltn | 查看IPv6监听端口 |
| dig | dig AAAA example.com | 解析域名IPv6记录 |
| 特性 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32位(4字节) | 128位(16字节) |
| 地址表示 | 192.168.1.1 | 2001:0db8:85a3::8a2e:0370:7334 |
| 自动配置 | DHCP | SLAAC/DHCPv6 |
| NAT依赖 | 普遍需要 | 通常不需要 |
| 报文头 | 20-60字节 | 固定40字节 |
四、进阶排查步骤
1. 物理层验证:确认交换机/路由器支持IPv6并开启相关协议(如NDP)。
2. 运营商限制:部分IDC机房或云服务商需手动开通IPv6支持。
3. MTU不匹配:使用ping6 -s 1472 -M do 目标IP检测PMTU是否正常。
4. RA(Router Advertisement)阻断:检查网络设备是否发送RA报文,这是SLAAC的必要条件。

查看详情

查看详情