有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

操作场景

本文将为您提供 Linux 云服务器的 IPv6 连通性问题的基本排障思路。

操作步骤

首先通过如下四个步骤检查云服务器是否已经完成 IPv6 配置:
1. 执行如下命令,查看云服务器的网卡(通常是 eth0)是否已经获取到“fe80”开头的 link-local IPv6 地址。
若已获取表明该镜像已经开启了 IPv6 功能,请执行 步骤2
若未获取,请参见 解决思路-步骤1
说明
“fe80” 开头的 IPv6 地址并非是用于通信的 IPv6 地址。
ifconfig

2. 执行
如下命令
,查看云服务器的网卡(通常是 eth0)是否已经获取到“2402”开头的 IPv6 地址(不是“fe80”开头的地址)。
若已获取,请执行 步骤3
若未获取,请参见 解决思路-步骤2
ifconfig

3. 执行如
下命令
,查看网卡的默认路由。
若已配置默认路由且能 Ping 通公网,请执行 步骤4
若看不到默认路由,或无法 Ping 通公网,请参见 解决思路-步骤3
ip -6 route show

通过ping6 240c::6666或者ping -6 240c::6666来测试公网连通性。

4. 执行如
下命令
,确认是否22端口和80端口都已经监听了 IPv6。 如果22端口和80端口没有监听 IPv6,请参见 解决思路-步骤4
netstat -tupln


解决思路

1. 如果通过 ifconfig,没有看到“fe80”开头的 IPv6 地址,则说明云服务器没有开启 IPv6 功能。
请参
快速入门 - 云服务器配置 IPv6 ,选择您所需的镜像开启 IPv6 的方式重新配置,可以通过执行 sysctl -a | grep ipv6 | grep disable 来确认。
2. 如果通过 ifconfig,没有看到“2402”开头的 IPv6 地址,则
有两种可能
性:
2.1 控制台云服务器的弹性网卡没有分配 IPv6 地址,解决方法是进入控制台为弹性网卡分配 IPv6 地址,详情请参见 弹性网卡申请与释放 IPv6 地址
2.2 云服务器内的 dhcpv6 相关配置没有配置好或者没有执行 dhclient -6。请登录云服务器:
2.2.1 执行如下命令,打开/etc/sysconfig/network-scripts/文件夹下的ifcfg-eth0文件。
vim /etc/sysconfig/network-scripts/ifcfg-eth0
2.2.2 按 “i” 切换至编辑模式,增加如下内容。
dhcpv6c=yes

2.2.3 按 “Esc”,输入 “:wq”,保存文件并返回,重启云服务器。
2.2.4 依次执行如下命令,查看是否已经获取到“2402”开头的 IPv6 地址。
# 若云服务器有多个网卡,请执行 dhclient -6 网卡名称,如 dhclient -6 eth0
dhclient -6 或 dhclient -6 网卡名称
ifconfig
3. 如果已经
获取到 IPv6
地址,但是无法 Ping 通公网,则有两种可能性:
3.1 没有为 IPv6 地址开启公网,解决方法是进入控制台为 IPv6 地址开启公网,详情请参见 管理 IPv6 公网
3.2 没有配置默认路由,通过 ip -6 route show 查看是否已经配置默认路由。如果看不到默认路由,则需要:
3.2.1 执行如下命令,打开/etc/sysconfig/network-scripts/文件夹下的route6-eth0文件。
vim /etc/sysconfig/network-scripts/route6-eth0
3.2.2 按 “i” 切换至编辑模式,增加如下内容。
default dev eth0

3.2.3 按 “Esc”,输入 “:wq”,保存文件并返回。
3.3 执行如下命令重启网络服务,或者重启云服务器。
CentOS 6系列机型,执行如下命令,重启网络服务:
service network restart
CentOS 7系列机型,执行如下命令,重启网络服务:
systemctl restart network.service
CentOS 8及以上系列机型,执行如下命令,重启网卡:
#重新加载配置
nmcli connection reload
#重启网卡
nmcli connection down eth0 && nmcli connection up eth0
#重新连接网卡eth0
nmcli device reapply eth0
4.
果 IPv6 公网
可以 Ping 通,但是无法通过22或者80端口来访问,则通常是 sshd 或 Nginx 的配置问题,请核查您CVM上的相关配置,确保SSH服务绑定的22端口或者Nginx服务绑定的80端口已监听 IPv6地址。确认配置无误后:
4.1 依次执行如下命令,重启 sshd 和 Nginx 服务。
service sshd restart
service nginx restart

4.2 通过执行 netstat -tupln 查看22或者80等端口是否已监听 IPv6,可参见上文 操作步骤-步骤4