在Linux系统中,IP地址是网络通信的核心标识,无论是本机网络配置、服务部署还是远程连接,都需要准确获取IP信息,Linux提供了多种命令和工具来查看不同维度的IP地址,包括本机内网IP、网络接口状态、公网IP以及网络连接详情等,本文将详细介绍这些方法,帮助用户全面掌握“如何知道IP”的实用技巧。
查看本机网络接口及IP地址
本机IP地址通常指网络接口(如以太网、Wi-Fi)配置的IPv4或IPv6地址,是最基础的IP信息,Linux中常用ifconfig
和ip
命令查看,其中ip
命令是现代Linux系统推荐的工具,功能更全面且默认安装。
使用ifconfig
命令(传统工具)
ifconfig
属于net-tools
包,部分新系统可能默认未安装,需通过sudo apt install net-tools
(Ubuntu/Debian)或sudo yum install net-tools
(CentOS/RHEL)安装。
基本用法:
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::a00:27ff:fe4e:66a1 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:4e:66:a1 txqueuelen 1000 (Ethernet)
RX packets 1234 bytes 123456 (123.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 567 bytes 78901 (77.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
关键信息解读:
inet
:IPv4地址(如192.168.1.100);netmask
:子网掩码(如255.255.255.0);broadcast
:广播地址(如192.168.1.255);ether
:MAC地址(物理地址)。
若只想查看特定接口(如eth0
),可使用ifconfig eth0
;过滤IPv4地址可用ifconfig | grep "inet "
。
使用ip
命令(现代推荐工具)
ip
命令来自iproute2
包,功能更强大,支持IPv4/IPv6,且能查看路由、ARP表等网络信息。
基本用法:
ip addr show
或简化为:
ip a
输出示例:
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 08:00:27:4e:66:a1 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::a00:27ff:fe4e:66a1/64 scope link
valid_lft forever preferred_lft forever
关键信息解读:
inet
:IPv4地址及子网掩码(如192.168.1.100/24,掩码24位相当于255.255.255.0);scope
:地址作用域(如global
表示全局地址,host
表示回环地址);link/ether
:MAC地址。
常用参数:
ip addr show eth0
:查看指定接口eth0
的IP;ip addr show up
:只显示已启动的接口;ip -4 addr show
:仅显示IPv4地址;ip -6 addr show
:仅显示IPv6地址。
获取本机公网IP地址
本机IP可能是内网IP(如192.168.x.x、10.x.x.x),若需访问互联网上的公网IP(如VPS对外暴露的IP),需通过外部服务查询,常用方法包括curl
、wget
等工具调用第三方API。
使用curl
查询公网IP
curl
是常用的网络传输工具,多数Linux系统默认安装,通过访问提供公网IP查询的网站(如ifconfig.me
、ipinfo.io
、cip.cc
等)获取IP。
常用命令:
curl ifconfig.me curl ipinfo.io/ip curl cip.cc
输出示例:
192.123.45
扩展查询:若需同时获取IP地理位置、运营商等信息,可使用:
curl ipinfo.io/42.192.123.45 # 替换为查询到的公网IP
输出会包含city
(城市)、region
(地区)、country
(国家)等详细信息。
使用dig
或nslookup
查询公网IP
通过DNS查询方式获取当前出口IP,适用于无curl
的环境。
命令示例:
dig +short myip.opendns.com @resolver1.opendns.com nslookup myip.opendns.com resolver1.opendns.com
输出示例:
192.123.45
查看网络连接状态及关联IP
若需了解当前系统建立的TCP/UDP连接(如远程SSH连接、HTTP请求),以及连接对应的本地IP和远程IP,可使用netstat
或ss
命令。
使用ss
命令(推荐)
ss
是netstat
的替代工具,速度更快,默认安装于多数现代系统。
查看所有TCP连接:
ss -t
查看所有UDP连接:
ss -u
查看所有网络连接(含TCP/UDP/UNIX域socket):
ss -a
查看监听端口及关联IP:
ss -tulpn
输出示例:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
tcp ESTAB 0 0 192.168.1.100:22 192.168.1.50:12345
关键信息解读:
Local Address:Port
:本地IP和监听端口(如0.0.0.0:22表示所有IP监听22端口);Peer Address:Port
:对端IP和端口(如192.168.1.50:12345表示已建立的SSH连接);State
:连接状态(如LISTEN
表示监听,ESTAB
表示已建立)。
使用netstat
命令(传统工具)
netstat
功能与ss
类似,但速度较慢,部分系统需手动安装(sudo apt install net-tools
)。
查看TCP连接:
netstat -t
查看监听端口:
netstat -tulpn
查看路由表以了解IP路径
路由表记录了数据包的转发路径,通过查看路由表可了解本机IP对应的默认网关、子网范围等网络配置,使用ip route
或netstat -rn
命令查看。
使用ip route
命令
ip route show
或简化为:
ip r
输出示例:
“
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
**关键信息解读**:
- `default via 192.168.1.1 dev eth0`:默认网关是192.168.1.1,通过接口`eth0`转发;
- `192.168.1.0/24 dev eth0`:直连网络是192.168.1.0/24段,本机IP为192.168.1.100。
#### 2. 使用`netstat -rn`命令
```bash
netstat -rn
输出示例:
“
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 eth0
**关键信息解读**:
- `Destination`:目标网络(如0.0.0.0表示默认路由);
- `Gateway`:网关地址(如192.168.1.1);
- `Genmask`:子网掩码(如255.255.255.0);
- `Flags`:`UG`表示网关路由,`U`表示直连路由。
### 五、通过配置文件查看静态IP
若IP是通过静态配置而非DHCP获取,可通过网络配置文件直接查看,不同Linux发行版的配置文件路径不同。
#### 1. Ubuntu/Debian(Netplan)
Ubuntu 18.04+使用Netplan,配置文件位于`/etc/netplan/`下,如`01-network-manager-all.yaml`:
```yaml
network:
version: 2
ethernets:
eth0:
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
其中addresses
字段即为静态IP地址。
CentOS/RHEL 7+(NetworkManager)
配置文件位于/etc/sysconfig/network-scripts/
下,如ifcfg-eth0
:
TYPE=Ethernet BOOTPROTO=static IPADDR=192.168.1.100 NETMASK=255.255.255.0 GATEWAY=192.168.1.1 DNS1=8.8.8.8
IPADDR
即为静态IP地址。
CentOS/RHEL 8+(NetworkManager)
使用nmcli
工具查看:
nmcli connection show "eth0" | grep ipv4.method nmcli connection show "eth0" | grep ipv4.addresses
输出ipv4.method: manual
表示静态配置,ipv4.addresses
字段包含IP地址。
常用命令对比与总结
为方便快速选择工具,以下为常用IP查看命令的对比:
命令 | 主要用途 | 示例 | 备注 |
---|---|---|---|
ip a |
查看本机所有接口IP及状态 | ip addr show eth0 |
推荐,支持IPv4/IPv6 |
ifconfig |
查看本机接口IP(传统工具) | ifconfig eth0 |
需安装net-tools |
curl ifconfig.me |
获取公网IP | curl ipinfo.io/ip |
需联网,依赖第三方服务 |
ss -tulpn |
查看监听端口及关联IP | ss -tulpn | grep 22 |
推荐,速度快,显示进程ID |
ip route |
查看路由表及默认网关 | ip route show default |
分析数据包转发路径 |
nmcli |
查看和管理NetworkManager配置 | nmcli connection show |
适用于桌面系统及RHEL/CentOS |
相关问答FAQs
Q1:为什么ifconfig
命令在系统中找不到?
A:ifconfig
属于net-tools
包,而现代Linux系统(如Ubuntu 20.04+、CentOS 8+)默认不再安装该包,推荐使用ip
命令替代,若需使用ifconfig
,可通过包管理器安装:在Ubuntu/Debian上运行sudo apt install net-tools
,在CentOS/RHEL上运行sudo yum install net-tools
。
Q2:如何区分本机的内网IP和公网IP?
A:内网IP是私有地址段的IP,无法在互联网上直接路由,常见范围包括:
- 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是互联网服务提供商(ISP)分配的IP,可通过curl ifconfig.me
等命令查询,通过ip route show
查看默认网关:若默认网关是私有地址(如192.168.1.1),则本机IP通常为内网IP;若默认网关是公网IP,则本机IP可能为公网IP(如VPS场景)。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/30220.html