Linux操作系统下,获取本机IP地址的常用方法有哪些?

在Linux系统中获取本机IP地址是日常运维、网络配置和开发调试中的常见需求,本机IP地址可分为内网IP(局域网IP)和公网IP(外网IP),内网IP是局域网内部分配的地址,公网IP则是互联网上可见的出口IP,以下详细介绍几种常用的Linux获取本机IP的方法,涵盖命令行工具、系统配置文件解析及自动化脚本场景。

linux 如何获取本机ip

使用命令行工具获取IP地址

命令行工具是Linux中最直接、高效的IP获取方式,不同工具适用于不同场景和系统版本。

ip命令(现代Linux系统推荐)

ip命令是iproute2包中的工具,逐渐取代了旧的ifconfig,是现代Linux系统获取网络信息的首选,通过ip addr show(或简写ip a)可以查看所有网络接口的详细信息,包括IP地址、子网掩码、MAC地址等。

基本用法
查看所有接口IP:

ip addr show

输出示例中,inet字段后跟IPv4地址(如168.1.100/24),inet6字段后跟IPv6地址,若需仅提取IPv4地址,可结合grepawk过滤:

ip addr show | grep 'inet ' | awk '{print $2}' | cut -d/ -f1

指定接口查看(如eth0):

ip addr show dev eth0 | grep 'inet ' | awk '{print $2}' | cut -d/ -f1

ifconfig命令(旧版Linux系统)

ifconfig是传统的网络配置工具,在早期Linux版本(如CentOS 6及以下)中广泛使用,但新版本系统(如Ubuntu 20.04+、CentOS 7+)默认未安装,需手动安装net-tools包。

基本用法
查看所有接口IP:

ifconfig

指定接口查看(如eth0):

ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | cut -d: -f2

hostname命令

hostname命令主要用于查看或设置系统主机名,但结合-I选项可快速获取所有IPv4地址(空格分隔)。

linux 如何获取本机ip

基本用法

hostname -I

输出示例:168.1.100 10.0.0.5(多个IP时用空格分隔),适合仅需快速获取IPv4的场景。

nmcli命令(NetworkManager工具)

在桌面版Linux(如Ubuntu、Fedora)或使用NetworkManager管理网络的系统中,nmcli是图形化网络配置的命令行工具,可精确获取网络连接的IP信息。

基本用法
查看活动连接的IP:

nmcli device show | grep IP4.ADDRESS

或指定连接名称(如eth0):

nmcli connection show "eth0" | grep ipv4.addresses

获取公网IP地址

内网IP是局域网内的地址,若需获取互联网上的公网IP(如路由器NAT后的出口IP),需通过外部HTTP服务查询。

使用curl命令

curl是常用的HTTP客户端工具,可访问提供IP查询服务的API,返回公网IP。

常用服务

  • ifconfig.me
    curl ifconfig.me
  • ipinfo.io
    curl ipinfo.io/ip
  • icanhazip.com
    curl icanhazip.com

使用wget命令

若系统中未安装curl,可用wget替代:

linux 如何获取本机ip

wget -qO- ifconfig.me

从系统配置文件中解析IP

通过直接读取网络配置文件,可获取静态配置的IP地址,适合脚本自动化或无需实时更新的场景。

Debian/Ubuntu系统(/etc/network/interfaces

静态IP配置通常存储在/etc/network/interfaces文件中,通过解析iface段的address字段获取:

grep "address" /etc/network/interfaces | awk '{print $2}'

CentOS/RHEL系统(/etc/sysconfig/network-scripts/ifcfg-*

CentOS/RHEL的接口配置文件位于/etc/sysconfig/network-scripts/,文件名格式为ifcfg-eth0,IP通过IPADDR字段定义:

grep "IPADDR" /etc/sysconfig/network-scripts/ifcfg-eth0 | awk -F= '{print $2}'

Ubuntu 18.04+(Netplan配置)

Ubuntu 18.04及后续版本使用Netplan,配置文件为YAML格式(如/etc/netplan/01-netcfg.yaml),通过解析addresses列表获取IP:

grep "addresses:" /etc/netplan/01-netcfg.yaml | awk '{print $2}' | tr -d '[],'

不同场景下的方法对比

方法 命令示例 适用场景 优点 缺点
ip addr ip addr show | grep 'inet ' 现Linux系统,需精确接口信息 信息全面,支持IPv4/IPv6 需结合过滤命令提取IP
ifconfig ifconfig eth0 | grep 'inet addr' 旧版Linux系统 兼容性好 新版系统默认未安装
hostname -I hostname -I 快速获取所有IPv4 简单高效 仅支持IPv4,无法指定接口
nmcli nmcli device show | grep IP4.ADDRESS NetworkManager管理的系统 支持动态连接,信息详细 依赖NetworkManager
外部API(curl) curl ifconfig.me 获取公网IP 无需本地配置,直接获取出口IP 需联网,依赖外部服务可用性
配置文件解析 grep "address" /etc/network/interfaces 脚本自动化,静态IP配置 无需执行命令,直接读取文件 仅适用于静态配置,不适用DHCP

相关问答FAQs

问题1:为什么使用ip addr show有时会显示多个IP地址?
解答:ip addr show显示所有网络接口的IP,包括物理接口(如eth0)、虚拟接口(如docker0)、回环接口(lo)等,若同一接口配置了多个IP(如别名IP、VIP),也会显示多个结果,可通过指定接口(如ip addr show dev eth0)或过滤scope global(全局作用域)获取目标IP,

ip addr show | grep 'scope global' | grep 'inet ' | awk '{print $2}' | cut -d/ -f1

问题2:如何判断获取的IP地址是内网IP还是公网IP?
解答:可通过IP地址范围判断:内网IPv4地址通常属于以下私有网段:

  • 0.0.0/8(10.0.0.0 ~ 10.255.255.255)
  • 16.0.0/12(172.16.0.0 ~ 172.31.255.255)
  • 168.0.0/16(192.168.0.0 ~ 192.168.255.255)

若IP不在上述范围内,则为公网IP,可通过ip route get查看IP的路由网关,若网关为局域网网关(如192.168.1.1),则为内网IP;若网关为公网网关(如运营商分配的网关),则为公网IP。

ip route get 8.8.8.8 | grep -oP 'src KS+'

该命令会显示访问公网IP(8.8.8.8)时使用的源IP(即公网IP)。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/17343.html

(0)
酷番叔酷番叔
上一篇 2025年8月26日 09:11
下一篇 2025年8月26日 09:23

相关推荐

  • 手机连接Linux系统有哪些具体操作步骤与方法?

    手机与Linux系统的连接在日常使用中需求广泛,无论是文件传输、远程控制还是系统管理,掌握多种连接方式能极大提升效率,以下是几种主流连接方法的详细步骤及适用场景,帮助用户根据需求选择合适的方式,USB有线连接:最直接的文件传输方式USB连接是最基础且稳定的方式,适合需要频繁传输大文件或无需网络的环境,操作步骤如……

    2025年9月20日
    19900
  • 如何在Linux系统中完成磁盘的新建与分区?

    在Linux系统中新建磁盘并使其可用,通常涉及检测新硬件、分区、格式化、挂载及配置开机自动挂载等步骤,无论是物理服务器添加新硬盘,还是虚拟机扩容磁盘,核心流程基本一致,以下以常见场景为例进行详细说明,第一步:检测新磁盘系统识别新硬件后,需先确认磁盘是否被正确识别,通过lsblk命令查看所有块设备信息,新磁盘通常……

    2025年9月25日
    19000
  • 如何检查目录是否为空?,目录为空怎么办?,如何判断空目录?,你的目录是空的吗?

    核心命令与区别rmdir 命令作用:仅删除空目录(目录内无任何文件或子目录),命令格式: rmdir [选项] 目录名示例: rmdir old_folder # 删除空目录old_folderrmdir -p dir1/dir2 # 递归删除dir1/dir2,若dir1也变空则一并删除rm 命令作用:删除非……

    2025年7月31日
    18200
  • iPhone如何连接Linux?操作步骤与连接方法详解

    iPhone与Linux设备的连接需求在跨平台工作场景中较为常见,无论是文件传输、远程控制还是网络共享,用户常因系统差异遇到障碍,本文将详细说明通过多种方式实现iPhone与Linux的稳定连接,涵盖文件传输、远程控制及网络共享三大场景,并提供具体操作步骤与工具推荐,文件传输:跨平台数据交换的核心需求文件传输是……

    2025年9月25日
    18300
  • 每天八杯水真的必要吗

    在Linux服务器环境中,IP地址分配是网络配置的核心任务,直接影响服务器与外部通信的能力,以下是详细的操作指南,涵盖主流方法及注意事项:IP分配方式静态IP分配(推荐用于服务器)原理:手动配置固定IP,确保地址永久不变,适用场景:Web服务器、数据库、网关等需稳定地址的设备,配置步骤(以Ubuntu/Cent……

    2025年7月2日
    17600

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信