查看服务器IP地址的方式取决于操作系统和网络环境,主流方法是通过命令行工具(Linux/macOS用ip addr或ifconfig,Windows用ipconfig)结合系统网络管理命令(如ip -6 addr)来查询,同时也可借助外部API或在线工具获取公网地址,前提是服务器已正确配置IPv6网络。
为什么需要区分内网与公网IPv6地址
服务器通常拥有不止一个IPv6地址,系统会为每个网络接口分配一个链路本地地址(fe80::/10开头),类似于IPv4时代的169.254.x.x,仅用于同一物理链路上的通信,而真正的全局单播地址(2001:、240e:、2408:等开头)才是服务器对外提供服务、需要被外部访问的地址。
在实际运维中,查询IPv6地址最常遇到的困惑恰恰是分不清这两类地址,通过命令行列出所有地址后,需要根据地址前缀判断哪些可供外网访问,多数云厂商(简米云、酷番云、AWS等)的服务器默认只分配私网IPv4,IPv6地址需要单独开通开通后系统里会出现一个以240e或2408开头的地址,这就是你需要记下来的公网地址。
Linux服务器查看IPv6地址的三种命令
Linux是服务器操作系统的主流选择,查看IPv6地址有以下常用方法。
使用ip命令(现代标准方式)
现代Linux发行版(CentOS 7+、Ubuntu 16.04+、Debian 8+)默认包含ip命令,执行:
ip -6 addr show
输出示例:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 state UNKNOWN qlen 1000
inet6 ::1/128 scope host
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 240e:1f:1:2a3b::c/64 scope global
inet6 fe80::5054:ff:fe12:3456/64 scope link
重点看scope global那一行,这才是公网可路由的IPv6地址。scope link或scope host开头的地址均不可用于对外通信。
使用ifconfig命令(传统方式)
部分老系统或最小化安装环境仍使用net-tools,若提示ifconfig未找到,先安装:
# CentOS/RHEL yum install net-tools # Ubuntu/Debian apt install net-tools
然后执行:
ifconfig
找到inet6开头的行,同样需要区分global和link前缀。
查看路由与连通性验证
仅查看地址还不够,还需确认IPv6路由是否正常,执行:
ip -6 route show
默认路由应指向网关的IPv6地址,若无默认路由,即使配置了公网地址也无法出网,用ping6(或ping -6)测试外网连通性:
ping6 -c 4 2400:3200::1
行业共识认为,IPv6排障中超过半数问题出在路由缺失而非地址配置错误。
Windows Server系统查看IPv6地址
Windows Server同样支持原生IPv6协议栈,查询方法与桌面版Windows一致。
图形界面查询步骤
打开控制面板 → 网络和共享中心 → 更改适配器设置,右键点击正在使用的网卡,选择状态 → 详细信息,IPv6地址便列在列表中。
命令行方式(更高效)
按Win+R打开运行窗口,输入cmd进入命令提示符,执行:
ipconfig /all
输出中IPv6地址一栏就是服务器当前的公网地址,若该栏以fe80开头,说明仅获取到链路本地地址,需检查网络配置或确认运营商/云厂商是否分配了IPv6前缀。
PowerShell获取详细列表
PowerShell提供更结构化的查询方式:
Get-NetIPAddress -AddressFamily IPv6 | Format-Table
该命令会列出所有IPv6地址及其所属接口、地址类型(PrefixOrigin、SuffixOrigin),其中PrefixOrigin为RouterAdvertisement或Manual的地址通常为全局地址。
服务器同时具备多个IPv6地址如何选择
一台服务器出现多个全局IPv6地址是正常现象,常见原因包括:
- 运营商自动分配:通过DHCPv6或SLAAC(无状态地址自动配置)获得的地址,通常以64位前缀结尾,后半段由网卡MAC地址或随机数生成。
- 手动配置的备用地址:运维人员为特定业务添加的静态地址。
- 临时地址(Privacy Extension):Linux系统默认开启隐私扩展,会在公网地址之外另生成一个随机后缀的临时地址,用于主动对外发起连接时保护隐私,这种地址会定期轮换,不应将其配置到网站或服务的监听参数中。
判断哪个地址是主地址:查看路由表中src字段对应的地址即是默认出口地址,对外发起连接的源地址就是它,对于服务器对外服务(如Nginx监听、SSH、防火墙规则),建议在配置中指定具体地址,避免因临时地址轮换导致服务异常。
服务器IPv6地址查询的命令对比
| 操作系统 | 命令 | 输出特点 | 适用场景 |
|---|---|---|---|
| Linux | ip -6 addr |
简洁,一屏内展示所有地址 | 日常运维首选 |
| Linux | ifconfig |
信息完整但冗余较多 | 老系统或已装net-tools的环境 |
| Linux | ip -6 route |
查看默认路由与来源地址 | 排查连通性问题 |
| Windows | ipconfig /all |
兼容性最好 | Windows Server运维 |
| Windows | Get-NetIPAddress |
结构化输出,便于脚本处理 | 批量巡检或PowerShell自动化 |
通过外部服务验证公网IPv6(需谨慎)
在某些场景下,你需要确认服务器从外网视角看到的IPv6地址,可以临时使用公网查询服务:
curl -6 https://api6.ipify.org
这条命令会返回服务器的出口公网IPv6地址,但需注意,在公网上随意请求第三方API存在隐私风险,建议仅在明确需要验证NAT或代理场景时使用,对于常规服务器,系统内的global地址就是公网地址。
查看IPv6地址后还需做哪些验证
查到地址不等于配置彻底完成,后续验证步骤不应省略。
验证服务监听地址
使用ss命令查看服务是否实际监听了IPv6:
ss -tuln | grep 80
如果输出中出现:80或[::]:80,说明服务已监听所有IPv6地址,若只显示0.0.0:80,说明服务仅绑定了IPv4,外部IPv6无法访问该服务。
检查防火墙放行策略
即使地址配置正确,防火墙未放行IPv6流量也会导致无法访问,Linux系统检查ip6tables(或firewalld/nftables),云服务器还需检查安全组是否单独配置了IPv6规则。
近年来,部分云厂商在安全组中默认仅放行IPv4流量,用户开通IPv6后容易因安全组遗漏而出现”地址能ping通但端口不通”的问题。
测试实际访问是否成功
从本地电脑或另一台服务器测试:
curl -6 "http://[服务器IPv6地址]/"
注意IPv6地址在URL中需要用方括号包裹,否则会被误识别为端口分隔符。
IPv6地址查看常见问题解答
怎样通过服务器查看到多个IPv6地址,如何确认哪个是能用的公网地址?
执行ip -6 addr show或ipconfig后,关注地址字符串中的范围标识,Linux下带scope global的地址即为公网地址;Windows下在图形界面的详细信息中,带有“首选”状态的IPv6地址为活跃公网地址,同时注意区分临时地址与永久地址,服务绑定优先选择手动配置的永久地址。
服务器IP地址查询命令显示没有IPv6地址,但网络服务商已经开通了IPv6,怎么排查?
这种情况多发生在云服务器或物理机IPv6开通后未重启网络服务,依次执行以下步骤:重启网络服务(systemctl restart network或netplan apply);检查网卡配置文件是否添加了IPv6相关参数;确认系统IPv6内核模块未禁用(sysctl net.ipv6.conf.all.disable_ipv6返回值应为0),若以上均正常,联系服务商确认是否已分配IPv6前缀及网关信息,或查看服务器是否启用了VPC NAT网关等IPv6转换服务。
查询IPv6网站配置时,域名解析记录和服务器地址不一致是怎么回事?
域名解析的AAAA记录指向的是对外发布的公网地址或负载均衡器的地址,而服务器上查到的地址是本机网卡的真实IP,若两者不一致,原因通常是服务器位于NAT网关、SLB负载均衡或CDN节点之后,此时应检查网关设备的转发规则,而非修改服务器地址,这是服务器托管或云环境中查询IP地址时极易混淆的一个典型场景,需要在整体网络架构层面理解地址的流转路径。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/772039.html


