Linux如何查询本地IP与公网IP地址?

Linux系统中,查询IP地址是网络配置、故障排查和日常管理中的常见操作,根据需求不同,可能需要查询本机IP、网络接口IP、远程主机IP或外网IP等,本文将详细介绍不同场景下的查询方法,涵盖常用命令及其输出解析,帮助用户灵活应对各类IP查询需求。

linux 如何查询ip

查询本机所有活跃IP地址

本机IP地址通常指当前网络接口已分配的IPv4或IPv6地址,可通过以下命令快速获取:

使用ip addr命令(推荐)

ip命令是iproute2工具包的核心命令,功能强大且输出清晰,是现代Linux系统(如Ubuntu、CentOS 7+)的首选。
基本用法

ip addr

输出示例

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::21a:2bff:fe3c:4d5e/64 scope link
       valid_lft forever preferred_lft forever

关键字段解析

  • 1: lo2: eth0:网络接口名称,lo为回环接口,eth0为以太网接口;
  • state UP/UNKNOWN:接口状态,UP表示已启动;
  • inet:IPv4地址及子网掩码(如168.1.100/24);
  • inet6:IPv6地址及前缀长度(如fe80::21a:2bff:fe3c:4d5e/64);
  • brd:广播地址(如168.1.255)。

若仅显示活跃的IPv4地址,可结合grep过滤:

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

使用ifconfig命令(传统工具)

ifconfig是早期Linux系统常用的网络配置工具,需安装net-tools包(部分系统默认未安装)。
安装方法

  • Ubuntu/Debian:sudo apt install net-tools
  • CentOS/RHEL:sudo yum install net-tools

基本用法

ifconfig

输出示例

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::21a:2bff:fe3c:4d5e  prefixlen 64  scopeid 0x20<link>
        ether 00:1a:2b:3c:4d:5e  txqueuelen 1000  (Ethernet)
        RX packets 12345  bytes 1234567 (1.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 6789  bytes 987654 (964.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

关键字段解析

  • inet:IPv4地址;
  • netmask:子网掩码;
  • broadcast:广播地址。

使用hostname -I命令(简洁输出)

若仅需快速获取本机所有活跃的IPv4地址(以空格分隔),可用hostname -I

hostname -I

输出示例

linux 如何查询ip

168.1.100 10.0.0.5

查询指定网络接口的IP地址

若需查看特定接口(如eth0wlan0)的IP,可在命令后添加接口名:

使用ip addr show <接口名>

ip addr show eth0

输出示例

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:1a:2b:3c:4d:5e brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever

使用ifconfig <接口名>

ifconfig eth0

查看所有接口列表

若不确定接口名称,可通过以下命令列出所有网络接口:

ip link show

ls /sys/class/net/

通过域名查询远程主机IP(DNS解析)

当需要通过域名获取对应的IP地址时,可使用DNS查询工具:

使用nslookup命令

nslookup是常用的DNS查询工具,支持交互式和非交互式查询。
基本用法

nslookup www.example.com

输出示例

Server:         192.168.1.1
Address:        192.168.1.1#53
Non-authoritative answer:
Name:   www.example.com
Address: 93.184.216.34
Name:   www.example.com
Address: 2606:2800:220:1:248:1893:25c8:1946

使用dig命令(详细DNS信息)

dig提供更详细的DNS解析信息,包括查询时间、TTL、权威服务器等。
基本用法

dig www.example.com

输出示例(简化):

; <<>> DiG 9.11.3-1ubuntu1.17-Ubuntu <<>> www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; QUESTION SECTION:
;www.example.com.            IN      A
;; ANSWER SECTION:
www.example.com.     300     IN      A       93.184.216.34
www.example.com.     300     IN      AAAA    2606:2800:220:1:248:1893:25c8:1946

使用host命令(简单DNS查询)

host命令是dig的简化版,输出更直观:

host www.example.com

输出示例

linux 如何查询ip

Using domain server:
Name: 192.168.1.1
Address: 192.168.1.1#53
Aliases:
www.example.com has address 93.184.216.34
www.example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946

查询本机外网IP地址

若需获取本机在公网中的IP地址(而非局域网IP),可通过调用公网IP查询服务实现:

使用curl命令(推荐)

curl是常用的网络传输工具,多数Linux系统默认安装。
基本用法

curl ipinfo.io

输出示例(JSON格式):

{
  "ip": "203.0.113.1",
  "hostname": "userisp.example.com",
  "city": "Beijing",
  "region": "Beijing",
  "country": "CN",
  "loc": "39.9042,116.4074",
  "org": "AS12345 Example ISP",
  "postal": "100000",
  "timezone": "Asia/Shanghai"
}

若仅需IP地址,可结合grepjq提取:

curl ipinfo.io/ip  # 仅返回IP

使用其他公网服务

ipinfo.io外,还可使用以下服务:

curl ifconfig.me          # 返回纯IP
curl cip.cc               # 返回详细IP信息(文本格式)
curl ident.me             # 简洁返回IP

动态IP(DHCP)相关信息查询

若本机IP通过DHCP自动获取,可查看DHCP客户端状态或租约信息:

查看DHCP租约文件

Ubuntu/Debian系统租约文件通常位于/var/lib/dhcp/dhclient.eth0.leaseseth0为接口名):

cat /var/lib/dhcp/dhclient.eth0.leases | grep "fixed-address<arg_value>lease"

输出示例

  lease {
    interface "eth0";
    fixed-address 192.168.1.100;
    option subnet-mask 255.255.255.0;
    option routers 192.168.1.1;
    option domain-name-servers 8.8.8.8;
    renew 2 2023-10-01 12:00:00;
    rebind 4 2023-10-01 18:00:00;
    expire 6 2023-10-02 00:00:00;
  }

使用dhclient命令(手动管理DHCP)

  • 释放当前DHCP租约:sudo dhclient -r eth0
  • 重新获取IP:sudo dhclient eth0

常用IP查询命令对比表

命令 用途 示例 适用场景
ip addr 显示所有接口详细信息 ip addr 现代Linux系统,查看IP/接口状态
ifconfig 传统网络接口配置 ifconfig eth0 需兼容旧系统,安装net-tools
hostname -I 快速显示本机活跃IPv4 hostname -I 简洁获取本机IP,不关心接口细节
nslookup DNS查询 nslookup example.com 通过域名解析IP,基础DNS查询
dig 高级DNS查询 dig example.com 获取详细DNS解析信息(TTL/权威服务器)
curl ipinfo.io/ip 查询本机外网IP curl ipinfo.io/ip 获取公网IP地址

相关问答FAQs

问题1:为什么在Linux系统中输入ifconfig命令提示“command not found”?
解答:ifconfig命令属于net-tools工具包,而许多现代Linux发行版(如Ubuntu 18.04+、CentOS 7+)默认不再预装该工具包,推荐使用ip命令(iproute2工具包)替代,若需使用ifconfig,可通过包管理器安装:在Ubuntu/Debian系统中执行sudo apt install net-tools;在CentOS/RHEL系统中执行sudo yum install net-tools

问题2:如何判断本机IP是内网IP还是外网IP?内网IP有哪些常见范围?
解答:内网IP(私有IP)用于局域网内部通信,不会在公网路由,常见范围包括:A类0.0.0/8(10.0.0.0-10.255.255.255)、B类16.0.0/12(172.16.0.0-172.31.255.255)、C类168.0.0/16(192.168.0.0-192.168.255.255),判断方法:①通过ip addr查看IP是否属于上述范围;②使用curl ipinfo.io等命令查询本机外网IP,若与ip addr中的IP不同,则说明当前IP是内网IP,通过NAT转换访问外网。

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

(0)
酷番叔酷番叔
上一篇 2025年9月30日 06:58
下一篇 2025年9月30日 07:12

相关推荐

  • Linux切换终端的具体方法是什么?操作步骤有哪些?

    Linux终端是用户与系统交互的核心界面,无论是通过命令行管理服务器、开发程序还是排查故障,熟练切换终端都能大幅提升效率,Linux终端类型多样,包括虚拟终端(TTY)、图形界面终端(如GNOME Terminal、Konsole)、伪终端(PTY)及远程终端(SSH等),不同场景下的切换方法各有差异,本文将详……

    2025年9月24日
    8000
  • Linux如何手动卸载Eclipse?

    卸载核心步骤删除Eclipse安装目录打开终端,定位到Eclipse的安装路径(默认通常在/opt/eclipse或用户主目录):# 如果安装在系统目录(需管理员权限)sudo rm -rf /opt/eclipse# 如果安装在用户目录(/eclipse)rm -rf ~/eclipse验证路径:若不确定安装……

    2025年7月12日
    9200
  • Linux7系统如何修改网卡名称?具体操作步骤是什么?

    在Linux 7系统中,默认采用Predictable Network Names(可预测网络名)机制,网卡名称通常以ens、eno、enp等前缀开头(如ens33、eno1),这种命名方式虽然能根据硬件信息(如主板插槽、网卡插槽)稳定识别网卡,但部分用户或旧版脚本习惯使用传统的eth0、eth1等名称,本文将……

    2025年10月8日
    6600
  • Linux如何挂载目录?快速教程

    挂载前的准备确认设备标识符使用 lsblk 或 fdisk -l 查看设备信息(如 /dev/sdb1):lsblk -f # 显示设备文件系统类型(如ext4、NTFS)创建挂载点挂载点是一个空目录(通常位于 /mnt 或 /media):sudo mkdir /mnt/mydata # 示例创建挂载点临时挂……

    2025年6月19日
    11100
  • 如何在Linux上运行程序?详细步骤与方法解析

    Linux作为开源操作系统,提供了灵活多样的程序运行方式,涵盖从简单的可执行文件到复杂的服务和容器化应用,以下是几种常见的运行场景及具体操作步骤,帮助用户高效在Linux上运行各类程序,对于直接下载的二进制可执行文件(如某些开源工具的预编译版本),首先需要确保文件具有执行权限,通过终端进入文件所在目录,使用ch……

    2025年8月28日
    7900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信