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系统文件与Windows分属不同磁盘分区,直接删除/boot、/home等文件夹会破坏引导和分区结构,必须两……

    2025年7月27日
    3100
  • linux文件权限如何查看文件夹权限设置

    Linux中,使用ls -l命令可查看文件和文件夹的权限设置。

    2025年8月15日
    3500
  • 设备运行状态和模式怎么查?

    如何操作和管理SELinux:详细指南SELinux(Security-Enhanced Linux)是Linux内核的安全模块,用于强化系统访问控制,虽然严格意义上无法”进入”SELinux的交互式环境,但您可以通过以下方式管理其状态和策略,操作需管理员权限(sudo或root),查看SELinux状态# 或……

    2025年8月5日
    3900
  • memcpy和strcmp哪个更高效?

    在Linux驱动开发中,直接包含标准C库(如glibc)是不可行的,因为内核空间与用户空间存在根本性差异,以下是详细的技术解析和解决方案:为什么不能直接包含标准C库?内核空间限制Linux内核运行在特权级(Ring 0),而标准C库(如printf、malloc)依赖用户空间的系统调用(如write、brk……

    2025年7月31日
    3800
  • Linux文件同步有哪些方法?步骤和工具详解

    在Linux系统中,文件同步是数据备份、多设备协同和服务迁移等场景的核心需求,通过合理选择同步工具,可以高效实现本地或远程文件的实时、增量双向传输,以下是几种主流的Linux文件同步方法及其应用场景,rsync:增量同步的通用工具rsync(Remote Sync)是Linux下最常用的文件同步工具,支持本地……

    2025年10月2日
    800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信