linux如何查看ip:多条命令按需选用
linux如何查看ip,主流分为ip命令、ifconfig命令、hostname命令、nmcli命令四类,ip命令适配CentOS7、Ubuntu18.04之后的绝大多数新版发行版,ifconfig需要提前安装net-tools工具包,hostname仅能查看主机对外IP,nmcli适合启用NetworkManager服务的服务器,虚拟机NAT模式下,命令查到的是内网IP,公网IP需要访问外部查询接口获取。
linux如何查看ip:ip命令操作
你直接输入ipa执行,这条命令全称ipaddress,输出内容会列出服务器所有网卡,包含回环网卡lo、物理网卡eth0或者ens33、虚拟网卡,inet后面跟着的就是IPv4内网地址,inet6对应IPv6地址,网卡状态里的UP代表网卡处于启用状态,DOWN代表网卡未启用。你可以加上网卡名称缩小查询范围,示例为ipashowens33,只输出指定网卡信息,减少无关内容干扰。
ipr可以查看路由信息,顺带确认网关与出口IP,适合排查多网卡环境下流量走哪一张网卡。这条命令不会单独列出所有网卡IP,更多用来辅助定位数据包出站地址,不能作为单独查询IP的首选。
linux如何查看ip:ifconfig命令操作
CentOS、Rocky这类系统默认没有预装net-tools,直接输入ifconfig会提示命令不存在,安装命令为yuminstallnet-tools-y,Debian、Ubuntu系列使用aptinstallnet-tools。执行完成后,eth0、ens开头网卡下inet字段就是内网IP,RX、TX数值代表网卡收发流量。
| 命令 | 依赖包 | 适用发行版 | 输出重点 |
|---|---|---|---|
| ipa | iproute2(系统自带) | 新版CentOS、Ubuntu、Debian | 全部网卡、IPv4、IPv6、网卡状态 |
| ifconfig | net-tools | 老版本Linux | 网卡IP、收发流量统计 |
| hostname-I | hostname(系统自带) | 全系列 | 只输出内网IP,无多余文字 |
| nmcli | NetworkManager | 桌面版、带图形网络管理服务器 | 网络连接详情、IP、DNS |
hostname-I是极简查询方式,大写I,输出只返回内网IP,没有网卡名称、状态等冗余文本,适合写shell脚本,脚本里直接捕获这个结果传递给变量。小写i参数作用不同,用来解析主机名,不能用来获取本机网卡IP。
nmclidevshow可以在启用NetworkManager的主机查看IP,你也可以简写nmcliconshow,查看已激活网络连接,再追加具体连接名称查看详细地址。容器环境一般不运行NetworkManager,这条命令在容器内大概率无法使用。
内网IP不等于公网IP。
服务器处于家庭宽带、云主机NAT、虚拟机NAT环境时,上面所有本地命令查到的地址都是内网地址,公网出口IP需要通过curl调用外部接口查询,常用示例curlifconfig.me,curlshturl.cc/XsZ,这类请求会向外部站点返回服务器对外IP,需要服务器可以正常访问外网才能拿到结果。服务器无法连通外网时,该类查询直接超时失败。
该方法的适用边界是,所有本地查询命令只能读取操作系统内核网卡配置,无法穿透四层负载均衡、NAT网关,负载均衡后端节点执行查询,得到的地址是后端节点内网IP,不是负载均衡对外提供的服务IP。
你在生产脚本自动化场景优先选用ipa或者hostname-I,这两个命令依赖包iproute2和hostname属于Linux基础组件,大多数精简容器、最小化服务器镜像都会自带,不用额外安装软件,降低部署依赖带来的失败概率。
