在Linux系统中查看IP地址是网络管理的基础操作,无论是排查网络问题、配置服务还是监控连接状态,都需要掌握多种查看IP的方法,根据不同的需求(如查看本机IP、公网IP、网络连接状态等),Linux提供了丰富的命令工具,下面将详细介绍这些方法及其使用场景。
查看本机网络接口与IP地址
本机IP地址通常指网络接口(如以太网、Wi-Fi)配置的IPv4或IPv6地址,这是本地网络通信的基础,Linux中最常用的命令是ip addr
和ifconfig
(较旧系统可能默认安装)。
使用ip addr
命令(推荐)
ip addr
是iproute2
工具包的一部分,功能强大且在现代Linux发行版中默认安装,通过该命令可以查看所有网络接口的详细信息,包括IP地址、MAC地址、接口状态等。
基本语法:
ip addr [选项]
常用选项:
show
:显示所有接口信息(默认选项,可省略);list
:同show
;s
/stats
:显示接口统计信息(如接收/发送数据包数);brief
:以简洁格式显示接口名称和IP地址。
示例:
ip addr show # 显示所有接口详细信息 ip addr show eth0 # 仅显示eth0接口信息 ip addr brief # 简洁显示接口名称和IP
输出解析:
以ip addr show
为例,输出内容大致如下:
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
关键字段说明:
lo
:回环接口,IP为0.0.1
,用于本地进程通信;eth0
:以太网接口,IPv4地址为168.1.100
,子网掩码为/24
(即255.255.255.0),广播地址为168.1.255
;link/ether
:MAC地址,唯一标识网络硬件;UP
:接口已启用;DOWN
:接口已禁用;BROADCAST
:支持广播;MULTICAST
:支持多播。
使用ifconfig
命令(传统工具)
ifconfig
是net-tools
工具包的命令,在早期Linux系统中广泛使用,但部分新发行版(如Ubuntu 20.04+)默认不再安装,需手动安装net-tools
包。
安装方法(Ubuntu/Debian):
sudo apt install net-tools
基本语法:
ifconfig [接口名称] [选项]
示例:
ifconfig # 显示所有接口信息 ifconfig eth0 # 显示eth0接口信息 ifconfig eth0 up # 启用eth0接口 ifconfig eth0 down # 禁用eth0接口
输出解析:
以ifconfig eth0
为例,输出如下:
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.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
关键字段说明:
inet
:IPv4地址及子网掩码;broadcast
:广播地址;ether
:MAC地址;RX packets
/TX packets
:接收/发送的数据包数。
ip addr
与ifconfig
对比
为方便理解,以下是两者核心功能的对比:
对比维度 | ip addr |
ifconfig |
---|---|---|
所属工具包 | iproute2 (默认安装) |
net-tools (需手动安装) |
功能丰富度 | 支持IPv4/IPv6、路由、隧道等复杂操作 | 仅支持基础接口配置,功能较简单 |
输出格式 | 结构化,字段清晰(如scope 、valid_lft ) |
较传统,部分字段冗余(如flags ) |
推荐场景 | 新版Linux系统,日常运维 | 旧系统或兼容性需求 |
查看公网IP地址
本机IP地址通常是局域网IP(如168.x.x
、x.x.x
),若需访问公网IP(即出口路由器分配的IP),需通过外部服务查询。
使用curl
或wget
访问IP查询服务
通过HTTP请求获取第三方服务返回的公网IP,是最常用的方法。
示例:
curl ifconfig.me # 最简洁,直接返回公网IP curl ipinfo.io/ip # 返回IP,附带地理位置信息(需加`/ip`) curl cip.cc # 返回详细IP信息(运营商、地区等)
输出示例:
curl ifconfig.me 203.0.113.123
使用nslookup
或dig
查询
若本地DNS配置了公网IP解析服务(如resolver1.opendns.com
),可通过DNS查询获取公网IP。
示例:
nslookup myip.opendns.com resolver1.opendns.com dig +short myip.opendns.com @resolver1.opendns.com
输出示例:
nslookup myip.opendns.com resolver1.opendns.com
Server: 208.67.222.222
Address: 208.67.222.222#53
Non-authoritative answer:
myip.opendns.com canonical name = o-o.myip.opendns.com.
Name: o-o.myip.opendns.com
Address: 203.0.113.123
查看网络连接的远程IP
当需要监控当前系统与哪些远程IP建立了连接(如排查异常连接、查看访问的网站服务器IP),可使用ss
或netstat
命令。
使用ss
命令(推荐)
ss
是iproute2
工具包的一部分,比netstat
更快、功能更强大,默认安装于现代Linux系统。
基本语法:
ss [选项] [过滤条件]
常用选项:
t
:显示TCP连接;u
:显示UDP连接;l
:显示仅监听端口;n
:以数字形式显示IP和端口(避免域名解析);p
:显示进程ID和名称;a
:显示所有连接(包括监听和未监听)。
示例:
ss -tuln # 显示所有TCP/UDP监听端口(数字形式) ss -t -p # 显示所有TCP连接及关联进程 ss -t src 192.168.1.100:80 # 显示本地IP为192.168.1.100、端口80的TCP连接
输出解析:
以ss -tuln
为例,输出如下:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 511 0.0.0.0:22 0.0.0.0:*
LISTEN 0 4096 127.0.0.1:6379 0.0.0.0:*
LISTEN 0 100 0.0.0.0:80 0.0.0.0:*
关键字段说明:
State
:连接状态(LISTEN
表示监听,ESTABLISHED
表示已建立连接,TIME_WAIT
表示等待关闭);Local Address:Port
:本地IP和端口;Peer Address:Port
:远程IP和端口(若为0.0.0:*
表示未连接)。
使用netstat
命令(传统工具)
netstat
是net-tools
工具包的命令,功能与ss
类似,但速度较慢,旧系统可能默认使用。
示例:
netstat -tuln # 显示所有TCP/UDP监听端口 netstat -t -p # 显示所有TCP连接及关联进程 netstat -an | grep ESTABLISHED # 过滤已建立的连接
输出解析:
与ss
类似,但netstat
的State
字段用LISTEN
、ESTABLISHED
等表示,Local Address
和Foreign Address
分别对应本地和远程地址。
查看DHCP与网络配置信息
若系统通过DHCP自动获取IP,可通过以下命令查看DHCP租约信息、网关、DNS等配置。
查看DHCP租约信息
Ubuntu/Debian系统:DHCP客户端租约信息存储在/var/lib/dhcp/dhclient.eth0.leases
(接口名可能不同)。
cat /var/lib/dhcp/dhclient.eth0.leases | grep "fixed-address|option routers option domain-name-servers"
CentOS/RHEL系统:使用nmcli
(NetworkManager命令行工具)查看DHCP配置:
nmcli connection show "连接名称" | grep ipv4.method # 查看是否为DHCP nmcli connection show "连接名称" | grep ipv4.dns # 查看DNS服务器 nmcli connection show "连接名称" | grep ipv4.gateway # 查看网关
查看默认网关与路由表
默认网关是局域网访问公网的出口,可通过ip route
或route
命令查看路由表。
ip route show default # 查看默认网关 ip route # 查看所有路由条目
输出示例:
default via 192.168.1.1 dev eth0 proto dhcp metric 100
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100 metric 100
说明:默认网关为168.1.1
,通过eth0
接口可达。
Linux查看IP的方法需根据场景选择:
- 本机接口IP:优先用
ip addr
,兼容旧系统可用ifconfig
; - 公网IP:通过
curl
访问第三方服务(如ifconfig.me
); - 网络连接:
ss
(推荐)或netstat
查看远程IP及连接状态; - DHCP/路由:
nmcli
(NetworkManager)、ip route
或查看租约文件。
掌握这些命令,可高效解决网络配置、故障排查等问题。
相关问答FAQs
Q1:为什么在Linux中使用ifconfig
命令提示“command not found”?
A:ifconfig
属于net-tools
工具包,部分新版Linux发行版(如Ubuntu 20.04、CentOS 8)默认不再安装该工具包,可通过以下方法解决:
- Ubuntu/Debian:
sudo apt install net-tools
; - CentOS/RHEL:
sudo yum install net-tools
(或dnf install net-tools
)。
建议优先使用ip addr
替代ifconfig
,因其功能更强大且默认安装。
Q2:如何快速定位某个特定网络接口(如eth0
)的IP地址?
A:可通过以下命令直接显示指定接口的IP信息:
- 使用
ip addr
:ip addr show eth0 | grep "inet"
(过滤IPv4地址); - 使用
ifconfig
:ifconfig eth0 | grep "inet addr"
(传统格式); - 使用
nmcli
(NetworkManager):nmcli device show eth0 | grep IP4.ADDRESS
(显示IPv4地址及子网掩码)。
ip addr show eth0 | grep "inet"
会输出类似inet 192.168.1.100/24 brd 192.168.1.255
,直接提取IP地址即可。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/18215.html