查看服务器IPv6地址最直接的方法是登录服务器,在终端或命令行中执行系统自带的网络查询命令,例如Linux执行ip -6 addr,Windows执行ipconfig,macOS执行ifconfig | grep inet6,即可立即看到当前服务器的IPv6地址信息。
对于运维人员来说,我们往往需要区分临时地址、永久地址、链路本地地址和公网IPv6地址,下面这篇文章将结合实际操作场景,分系统梳理查询方法,并解决“看到地址但无法判断类型”和“服务器不支持ipv6怎么办”这类常见疑问。
面对一台陌生服务器,第一步该做什么
拿到一台服务器,无论它是云服务器还是物理机,先确认系统类型,再选择对应命令,绝大多数Linux服务器都支持ip命令,它来自iproute2套件,是目前最标准的网络查询工具。
- 查看所有IPv6地址:ip -6 addr show
- 仅查看全局IPv6地址:ip -6 addr show scope global
- 仅查看链路本地地址:ip -6 addr show scope link
假如你手头是最小化安装的CentOS或Debian系统,ifconfig可能不存在,但ip命令一定在,因此我推荐你优先使用ip命令,而不是依赖ifconfig。
如果你登录的是Windows Server服务器,打开命令提示符或PowerShell,敲入ipconfig即可看到所有网卡的IPv6地址,IPv6 地址”一行显示的是有效公网地址或私有地址,而“临时 IPv6 地址”则用于对外发起连接。
服务器ipv6地址查询的三种核心命令
ip命令输出解读
当我们执行ip -6 addr时,会看到类似如下输出:
- inet6 2408:8207:xxxx::1/64:这是全局单播地址,通常是公网IPv6地址。
- inet6 fe80::xxxx:xxxx:xxxx:xxxx/64:这是链路本地地址,仅在该服务器所在的二层网络内有效,且不会跨越路由器转发。
- inet6 ::1/128:这是环回地址,相当于IPv4的127.0.0.1。
一个常见的困惑是:为什么一块网卡有两个IPv6地址?因为现代操作系统默认启用隐私扩展(Privacy Extensions),为了隐藏真实MAC地址,系统会定期生成一个临时地址用于对外访问,而那个scope global dynamic标记的地址就是临时地址。
ifconfig命令的局限性
有些老运维习惯用ifconfig
,它的输出中同样包含inet6 addr字段,但要注意,ifconfig默认不显示临时IPv6地址,只显示核心全局地址和链路本地地址,如果你在ifconfig输出中只看到fe80开头的地址,别着急下结论说“服务器没有公网IPv6”,改用ip -6 addr再查一次。
curl命令确认公网出口IPv6
方法查看的是服务器本机配置的地址,如果你想确认这台服务器到底有没有公网IPv6出口,推荐使用外部API回显:
- curl -6 https://api6.ipify.org
- curl -6 https://v6.ident.me
如果返回一个IPv6地址且不是你网卡上的任何一个地址,这说明服务器通过路由器或负载均衡设备做了NAT64或代理,出口地址和本机地址不同,如果curl报错“Network is unreachable”,则说明当前网络路径不支持IPv6路由。
Linux查看ipv6地址的详细操作路径
以Ubuntu 22.04为例
登录服务器后按顺序执行:
- ip -6 addr show eth0:查看主网卡地址。
- ip -6 route show:查看IPv6路由表,确认是否存在默认路由。default via fe80::1 dev eth0是典型的网关写法,IPv6网段通过链路本地地址连出去。
- ping -6 2400:3200::1:ping通一个已知的IPv6公共服务地址,验证网络连通性,简米云和酷番云的IPv6测试地址在各自文档中心可查。
如果路由表为空,即使网卡上有IPv6地址,外部也无法访问这台服务器,这种情况常见于云服务器未开通IPv6带宽或未在安全组放行ICMPv6协议。
CentOS / Rocky Linux 9注意事项
Rocky Linux 9默认使用NetworkManager管理网络,修改IPv6配置时需要注意,直接编辑/etc/sysconfig/network-scripts/ifcfg-eth0可能不会立即生效,推荐使用nmcli命令操作:
- nmcli con show:查看连接名称。
- nmcli con mod “eth0” ipv6.addresses “2408:xxxx::1/64”:手动配置地址。
- nmcli con up “eth0”:激活连接。
至于查看操作,ip -6 addr仍然是最简单直接的方法。
Windows Server查看ipv6地址的实用细节
Windows Server 2016、2019、2026查询IPv6地址的方式基本一致。
ipconfig是最直观的,输出中每块网卡下都有“IPv6 地址”和“临时 IPv6 地址”两栏显示,注意区分:
- 以fe80开头的地址:链路本地,仅限本机所在局域网。
- 以2001、2408、2409、240e等开头的地址:公网IPv6。
- 以fdc或fd开头的地址:内网ULA地址,相当于IPv4私网中的10.0.0.0段。
如果你想查看更详细的信息,包括DNS服务器地址、路由网关,执行:
- netsh interface ipv6 show addresses
- netsh interface ipv6 show route
- netsh interface ipv6 show neighbors:查看邻居发现缓存,对应IPv4的ARP表。
遇到“服务器不支持ipv6怎么办”的情况,先检查网卡属性里“Internet 协议版本 6 (TCP/IPv6)”是否勾选,如果未勾选,打开服务器管理器 → 本地服务器 → 网络配置 → 网卡属性,勾选后重启网络适配器即可。
排查Windows Server v6不通的步骤
- 第一步,ping -6 ::1检查本机IPv6协议栈是否正常,若不通,说明协议栈受损,需要重装网卡驱动。
- 第二步,ping -6 2408:xxxx::1测试网关连通性,网关地址从route print -6输出中获取。
- 第三步,ping -6 2400:3200::1测试公网连通性,若前一步通而这一步不通,问题多出在云安全组或防火墙策略。
如何区分服务器公网IPv6和私有IPv6
这个问题在规划网络架构时特别关键,行业共识认为:IPv6地址类型判断优先级高于地址数量判断。
我们从地址前缀入手:
- 2000::/3地址段是公网IPv6,所有以2或3开头的IPv6地址都归入全球单播地址,用于互联网访问。
- fc00::/7地址段是唯一本地地址(ULA),以fd开头的地址在私有网络内使用,路由器默认不会转发到公网。
- fe80::/10地址段是链路本地地址,仅用于同一链路邻居通信。
服务器获得了一个fd00:abcd::1地址,即使它配置在公网服务器的网卡上,外部网络也无法通过这个地址访问到它,这是一种常见的配置错误,很多云厂商会同时提供公网IPv6和私网IPv6地址,公有地址用于服务暴露,私网地址用于内网互通。
如果你需要判断某条IPv6地址在全球是否可路由,可以使用ip -6 route get命令查询下一跳路由方向,若要确认公网可访问性,则需在另一台网络设备上发起ping操作,或者使用第三方IPv6连通性测试网站。
服务器IPv6地址状态解读
无论执行什么命令,你会看到地址后面带有<|prefixlen|>标记,以及valid_lft和preferred_lft字段,这两个字段与地址的生存周期直接相关。
- valid_lft表示地址的有效寿命,当数值降到0,该地址将从网卡消失。
- preferred_lft表示地址的首选寿命,过期后地址仍存在,但系统不再使用它作为新建连接源地址。
在云服务器环境中,如果你手动配置的IPv6地址过了一段时间后被系统清空,很可能是指派的地址不是租约分配的,而是系统保留了自动配置的临时地址,此时需要检查网络配置管理工具是否接管了接口地址分配。
Q&A:服务器IPv6地址查询常见疑问
为什么ip addr命令看不到IPv6地址,但服务器确实访问了IPv6网站
部分系统默认将IPv6地址的显示收敛了,执行sysctl net.ipv6.conf.all.disable_ipv6确认IPv6未被禁用,若值为0,则代表启用,然后主网卡上可能使用DHCPv6或SLAAC自动获取地址,但该接口的state处于DOWN状态,此时执行ip link set eth0 up激活网卡即可看到地址。
curl和ping检测结果不一致是什么情况
<ping -6 外部IPv6地址走的是ICMPv6协议,curl走的是TCP协议,有些云厂商的安全组默认放行了ICMPv6,但没有放行TCP 80/443端口,这是你curl失败但ping成功的原因,处理路径是:云控制台→安全组→入方向规则→添加IPv6协议的TCP端口放行规则。
服务器只有内网IPv6地址怎么办
内网IPv6一般由路由宣告(RA)机制发放,段内通信没有问题,但无法直达外网,解决办法是在防火墙上配置IPv6 NAT或路由转发,同时确认服务器默认路由的下一跳地址可达,如果路由器启用了RA,但服务器侧未开启接受RA策略,则需要修改内核参数以接收路由器通告,具体为调整net.ipv6.conf.all.accept_ra和net.ipv6.conf.eth0.accept_ra的值为1。
本身:服务器ipv6地址查询归根到底是一个“确认本机地址、确认路由状态、确认公网可达”的三步过程,只要按命令操作、按前缀判断、按类型区分,你就能快速定位自己服务器的IPv6网络全貌。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/722914.html





