在Linux系统中,查询IP地址是网络配置、故障排查和日常管理中的常见操作,根据需求不同,可能需要查询本机IP、网络接口IP、远程主机IP或外网IP等,本文将详细介绍不同场景下的查询方法,涵盖常用命令及其输出解析,帮助用户灵活应对各类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: lo
和2: 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
输出示例:
168.1.100 10.0.0.5
查询指定网络接口的IP地址
若需查看特定接口(如eth0
、wlan0
)的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
输出示例:
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地址,可结合grep
或jq
提取:
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.leases
(eth0
为接口名):
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