万维莱卡云IIP通栏广告位华纳云
Linux教程2026-02-22文案编辑:hoohvooh266 阅读

Linux如何获取IP地址?Linux查看IP的命令是什么

本文摘要在 Linux 系统运维和网络配置中,快速准确地获取本机 IP 地址是一项基础且高频的操作,核心结论是:在现代 Linux 发行版中,首选 ip 命令套件进行网络配置和查询,它是 net-tools(如 ifconfig)的官方替代品,功能更强大且数据更精准;若仅需提取 IP 字符串用于脚本自动化,hostna……
丽萨主机
AD:
【广告招商】文章正文文字广告位开放合作

在 Linux 系统运维和网络配置中,快速准确地获取本机 IP 地址是一项基础且高频的操作。核心上文归纳是:在现代 Linux 发行版中,首选 ip 命令套件进行网络配置和查询,它是 net-tools(如 ifconfig)的官方替代品,功能更强大且数据更精准;若仅需提取 IP 字符串用于脚本自动化,hostname -I 是最高效的选择;若需获取公网 IP,则需借助 curl 访问外部服务。 掌握这些方法不仅能提升运维效率,更能应对复杂的网络环境排查需求。

Linux如何获取IP地址?Linux查看IP的命令是什么

使用 ip 命令获取 IP 地址(现代标准)

ip 命令属于 iproute2 软件包,是目前 Linux 内核网络栈管理的首选工具,相比于老旧的 ifconfig,它能更直观地展示网络接口状态和路由表信息。

查看所有网络接口的 IP 信息 执行以下命令可以列出系统中所有网络接口的详细信息: ip addr 或者简写为: ip a

输出结果中,每一块代表一个网络接口,重点关注 inet 字段,它标识了 IPv4 地址。inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0 表示 eth0 网卡的 IP 地址是 168.1.100。

仅查看特定网卡信息 在服务器配置了多张网卡(如内网和外网)时,查看全部信息显得冗余,可以通过指定网卡名称来精准定位: ip addr show eth0 此命令仅输出 eth0 的相关信息,便于快速定位目标 IP。

仅显示 IPv4 地址 为了过滤掉 IPv6 地址和冗余的链路层信息,可以使用 -4 参数结合 -o(一行输出)参数: ip -4 -o addr 这种方式输出的格式非常规整,适合系统管理员快速浏览当前主机的所有 IPv4 绑定情况。

使用 hostname 命令快速提取(脚本利器)

对于编写 Shell 脚本或需要将 IP 地址作为变量传递给其他程序的场景,hostname 命令提供了最简洁的输出方式。

获取所有 IP 地址 执行命令: hostname -I 该命令会直接输出本机所有配置的 IP 地址,以空格分隔,不包含任何额外的描述性文字,例如输出 168.1.100 10.0.0.5,这是自动化脚本中获取 IP 最推荐的方法,因为它避免了使用 grep 或 awk 进行复杂的文本处理。

Linux如何获取IP地址?Linux查看IP的命令是什么

获取指定网卡的 IP(结合 ip 命令) 虽然 hostname 很方便,但它无法指定网卡,若需要获取特定网卡的 IP 并用于脚本,建议组合使用 ip 命令与文本处理工具: ip addr show eth0 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1 这条命令链的含义是:显示 eth0 信息 -> 筛选包含 'inet ' 的行 -> 提取第二列(IP/掩码) -> 以斜杠为分隔符提取第一列(纯 IP),这种组合拳体现了 Linux 命令行管道处理的强大之处。

使用 ifconfig 命令(传统方法)

尽管 ifconfig 已被标记为“过时”且在许多最小化安装的 Linux 发行版(如 CentOS 7+、Debian 9+)中默认不再预装,但凭借其极简的输出格式,依然是许多老派运维人员的首选。

安装与使用 如果系统提示找不到该命令,通常需要先安装 net-tools 包(例如在 Ubuntu 上使用 sudo apt install net-tools)。 执行命令: ifconfig 输出结果中,eth0 或 ens33 段落下的 inet addr 即为 IP 地址,注意,ifconfig 默认不会显示处于“down”状态的网卡,而 ip a 可以显示,这是 ip 命令在全面性上的另一个优势。

获取公网 IP 地址

上述方法获取的都是局域网(LAN)内部的私有 IP 地址,在需要进行远程连接、DDNS 动态解析或网络安全审计时,必须获取服务器的公网 IP。

使用命令行查询工具 Linux 本身不存储公网 IP 信息,必须向外部服务器发起请求,最常用的方法是利用 curl 或 wget: curl ifconfig.me 或者 curl cip.cc ifconfig.me 会直接返回一个纯文本 IP,极其简洁;而 cip.cc 等国内服务通常会返回 IP、地理位置、运营商等详细信息,更适合进行网络归属地排查。

专业见解:DNS 查询法 在不方便访问 HTTP 端口(如防火墙严格限制)的环境下,可以通过查询 DNS 记录来获取公网 IP: dig +short myip.opendns.com @resolver1.opendns.com 这种方法利用 OpenDNS 的特殊解析记录,仅通过 DNS 协议(UDP/TCP 53端口)即可获取 IP,绕过了 HTTP 限制,是网络排错中的高级技巧。

常见问题与专业解决方案

在实际操作中,运维人员常会遇到“网卡命名混乱”或“IP 显示不全”的问题。

Linux如何获取IP地址?Linux查看IP的命令是什么

网卡命名规则的变化 传统的网卡命名为 eth0、eth1,但现代 Linux 系统(特别是 systemd 引入后)采用了“可预测的网络接口命名”规则,如 enp3s0、ens33,这种命名基于 BIOS 提供的插槽位置信息,虽然看起来复杂,但能确保网卡设备名在硬件变更后保持不变,在使用 ip 或 ifconfig 前,建议先执行 ip link 确认当前网卡的准确名称。

无法获取 IP 的排查 如果命令执行后只有 0.0.1(回环地址),说明物理网卡未分配 IP,此时应检查网络服务状态(systemctl status network 或 systemctl status NetworkManager)以及网线连接状态,对于 DHCP 环境,尝试强制重新获取 IP:dhclient eth0。


相关问答

Q1:在 Linux 脚本中,如何将获取到的 IP 地址赋值给一个变量? A: 推荐使用 hostname -I 结合 read 命令或直接截取。 MY_IP=$(hostname -I | awk '{print $1}') 这行命令将获取到的第一个 IP 地址赋值给变量 MY_IP,使用 awk '{print $1}' 是为了防止机器有多个 IP 时,变量中包含空格或多个 IP,确保变量的纯净性。

Q2:为什么 ifconfig 显示的 IP 是 inet addr:...,而 ip a 显示的是 inet ...? A: 这是两个工具输出格式的区别。ifconfig 源于 BSD 工具集,习惯使用 inet addr 来标识地址;而 ip 命令源于 Linux 的 IP 路由协议栈工具,其输出格式更接近内核内部的数据结构表示,直接使用 inet 后跟地址和掩码(如 /24),从数据精确度来看,ip a 的输出更利于解析 CIDR(无类别域间路由)格式的掩码信息。


能帮助您全面掌握 Linux 获取 IP 地址的各种技巧,如果您在实际运维中遇到了特殊的网络环境配置问题,或者有更高效的命令组合方式,欢迎在评论区分享您的经验和见解,我们一起交流探讨。

广告招商文章内容详情页下 · 优质席位开放中合作咨询
咨询2 位在线

广告投放、资源交换、友情链接