在Linux云服务器上查看IPv6地址,最直接有效的命令是ip -6 addr,它能完整展示本机所有网卡上的IPv6地址及状态。除了查看信息,你还需要确认云厂商后台的网络配置,才能真正拿到并验证IPv6连通性。
下面从查看命令、后台配置、故障排查到连通性验证,结合日常操作场景逐层拆解。
用命令查看Linux系统的IPv6信息
想确认这台云服务器内网和外网是否已分配IPv6地址,先登录终端跑几条命令即可见分晓。
常用基础指令集
命令虽多,但记住优先级就行,多数云厂商的Linux镜像默认支持IPv6协议栈,若没生效再往下排查。
ip -6 addr show:查看所有网卡当前的IPv6地址,重点看scope global那项,通常就是公网IPv6ip -6 route show:查看IPv6路由表,确认有没有缺省路由ping6 -c 4 ipv6.google.com:测试能否访问外网IPv6资源cat /proc/net/if_inet6:检查内核协议栈是否加载了IPv6ifconfig:老牌命令,部分系统需额外安装net-tools才能看到IPv6信息
实际输出示例:
inet6 2408:400a:100:xxxx:xxxx:xxxx:xxxx:xxxx/64 scope global dynamic,这里scope global代表这个地址可公网路由,若是scope link则只是内网邻居发现用的。
IPv6地址形态解读
IPv6地址长这样:2408:400a:100:88::1/64,看到双冒号说明中间有一段连续为0的组省略了。
- 前缀长度:
/64最常见,表示子网大小 - 动态地址:云主机一般通过SLAAC(无状态自动配置)或DHCPv6自动获取
- 临时地址:Linux默认会生成一个带
privacy标记的临时IPv6,用于对外访问保护隐私,别误认为异常
判断系统是否支持IPv6,检查内核启动参数:
sysctl net.ipv6.conf.all.disable_ipv6
返回0说明支持,返回1说明被禁用,若禁用,执行sysctl -w net.ipv6.conf.all.disable_ipv6=0临时开启,持久化修改需编辑/etc/sysctl.conf。
云服务器怎么开启IPv6服务
看到本机没有IPv6别急着配,绝大多数云服务器没IPv6,是后台没开通,而非系统问题,各云厂商控制台逻辑类似。
控制台开通与带宽计费
百度和简米云虚机不同,但逻辑链路一致:
- 登录云服务器管理控制台,找到目标实例
- 在“网络信息”或“弹性网卡”标签页,找到IPv6开关
- 点击分配IPv6地址,选择带宽计费方式(按流量或按固定带宽)
- 部分实例规格不支持IPv6,系统会提示更换规格
开通时注意:免费分配IPv6地址,但公网带宽需单独购买或复用IPv4带宽,若实例位于专有网络VPC内,子网需提前开启IPv6网段,否则无法分配。
配置网络接口
控制台开通后,多数Linux系统需刷新网络配置才能拿到地址,以CentOS/RHEL为例:
- NetworkManager接管:执行
nmcli con mod eth0 ipv6.method auto && nmcli con up eth0 - 纯Network服务:编辑
/etc/sysconfig/network-scripts/ifcfg-eth0,增加IPV6INIT=yes和IPV6_AUTOCONF=yes,再执行systemctl restart network - Ubuntu/Debian(Netplan):在
/etc/netplan/01-netcfg.yaml中加入dhcp6: true,然后netplan apply
执行完再次查看ip -6 addr,出现新地址即代表分配成功。
放行安全组策略
这是新手常踩的坑:IPv6地址已分配,外部却ping不通,检查安全组入方向规则,必须单独添加IPv6规则,IPv4的放行规则不会自动生效到IPv6。
- 放行ICMPv6:协议选
IPv6-ICMP,源地址填:/0 - 放行SSH:端口
22,源地址填你本机的IPv6前缀 - 放行HTTP/HTTPS:
80/443同理
常见故障排查:linux服务器没有ipv6地址怎么办
开通操作都做对了依旧没地址,按下面链路逐一筛查。
逐一排查服务异常
步骤1:确认内核加载,执行lsmod | grep ipv6,若空则运行modprobe ipv6,引导参数/etc/default/grub里的ipv6.disable=1需注释掉,重新生成grub.cfg后重启。
步骤2:检查DHCP客户端状态,执行ps -ef | grep dhclient,没有进程则手动启动,部分云镜像DNS配置会干扰DHCPv6请求,检查/etc/resolv.conf是否被覆盖。
步骤3:确认网卡驱动残留,某些一键DD包在制作时篡改了网卡配置文件,直接对比同配置的已知正常实例,差异大则重装网络组件。
步骤4:验证云厂商后台提供的是否“仅内网IPv6”,部分场景下分配的是VPC内网IPv6(ULA地址),需额外开通公网带宽。
手动配置静态虚拟IPv6
若自动分配屡屡超时,网络管理员多数情况下会选择指定静态地址,从控制台复制子网前缀,手动绑定:
ip -6 addr add 2408:400a:100:88::2/64 dev eth0 ip -6 route add default via 2408:400a:100:88::1
持久化写入配置文件,重新加载网络服务后验证。永久有效必须写进配置文件,直接命令行添加的重启即丢。
如何验证IPv6网络连通性
拿到地址只是第一步,能通外网才算真正接入IPv6。
外部访问和本机测试双管齐下
在服务器上执行:
ping6 -c 3 2400:3200::1 curl -6 https://www.baidu.com
第一条测试到达阿里IPv6节点,第二条测试应用层连通,若ping通但curl失败,大概率是DNS未返回AAAA记录,换个纯IPv6测试站,比如curl -6 https://test-ipv6.com。
在本地电脑远程测试
服务器端确认无误后,本地电脑访问https://ipv6-test.com,能看到IPv6网络结果,若本地无IPv6网络,用在线站长工具抓取解析结果填入服务器网关。
对比可用的网络诊断工具
| 工具 | 用途 | 常见问题 |
|---|---|---|
traceroute6 |
查看路由路径 | 中间节点不响应属正常情况 |
ss -6 -lntp |
查看IPv6监听端口 | 服务未监听需改配置 |
tcpdump -i eth0 ip6 |
抓IPv6包诊断 | 权限需root |
curl -6 |
测试HTTP可达性 | 代理设置会干扰结果 |
Nginx/Apache若只监听IPv4(0.0.0),外部IPv6无法访问网站,改为监听[::]实现双栈共存,修改后重启Web服务。
常见问题解答
linux查看ipv6地址命令除了ip -6 addr还有别的吗?
有。ifconfig命令在查看IPv6时常因系统版本差异显示不全,推荐优先用ip -6 addr,另外hostname -I仅显示本机IPv4或部分IPv6,/proc/net/if_inet6展示所有地址但不含前缀长度,日常使用ip -6 addr show加上grep inet6就足够获取完整信息。
云服务器开启了IPv6但SSH登录超时,是网络问题吗?
首先检查安全组是否单独放行了IPv6的22端口入方向规则,其次确认sshd服务端监听地址是否包含IPv6通配符,编辑/etc/ssh/sshd_config,设置ListenAddress ::,然后重启服务,若仍无法连接,在控制台通过VNC登录,查看服务器防火墙是否拦截了IPv6流量。
非根用户执行ip -6 addr没有输出怎么办?
非root权限查询地址不要求高级权限,但某些系统受sudo限制策略影响,先执行ip -6 addr show dev eth0指定网卡测试,若仍无输出,说明该用户被配置了命令白名单或SELinux策略限制,直接切换到root身份执行即可获得完整信息。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/794870.html


