Linux系统如何知道本机的IP地址信息?

在Linux系统中,IP地址是网络通信的核心标识,无论是本机网络配置、服务部署还是远程连接,都需要准确获取IP信息,Linux提供了多种命令和工具来查看不同维度的IP地址,包括本机内网IP、网络接口状态、公网IP以及网络连接详情等,本文将详细介绍这些方法,帮助用户全面掌握“如何知道IP”的实用技巧。

linux 如何知道ip

查看本机网络接口及IP地址

本机IP地址通常指网络接口(如以太网、Wi-Fi)配置的IPv4或IPv6地址,是最基础的IP信息,Linux中常用ifconfigip命令查看,其中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),需通过外部服务查询,常用方法包括curlwget等工具调用第三方API。

使用curl查询公网IP

curl是常用的网络传输工具,多数Linux系统默认安装,通过访问提供公网IP查询的网站(如ifconfig.meipinfo.iocip.cc等)获取IP。
常用命令

curl ifconfig.me
curl ipinfo.io/ip
curl cip.cc

输出示例

linux 如何知道ip

192.123.45

扩展查询:若需同时获取IP地理位置、运营商等信息,可使用:

curl ipinfo.io/42.192.123.45  # 替换为查询到的公网IP

输出会包含city(城市)、region(地区)、country(国家)等详细信息。

使用dignslookup查询公网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,可使用netstatss命令。

使用ss命令(推荐)

ssnetstat的替代工具,速度更快,默认安装于多数现代系统。
查看所有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

查看监听端口

linux 如何知道ip

netstat -tulpn

查看路由表以了解IP路径

路由表记录了数据包的转发路径,通过查看路由表可了解本机IP对应的默认网关、子网范围等网络配置,使用ip routenetstat -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

(0)
酷番叔酷番叔
上一篇 2025年9月25日 11:26
下一篇 2025年9月25日 11:39

相关推荐

  • linux如何查看库函数

    Linux中,可以使用man命令查看库函数的手册页,man printf

    2025年8月19日
    12900
  • 不学Linux,你会错过什么?

    系统学习路径(分阶段实践指南)阶段1:基础认知与操作(1-2周)理解Linux本质学习开源理念、内核与发行版区别(如Ubuntu/CentOS/Debian的定位)明确命令行(CLI)与图形界面(GUI)的应用场景环境搭建零风险方案:使用VirtualBox/VMware创建虚拟机(推荐Ubuntu LTS版……

    2025年7月29日
    13900
  • linux如何用catch

    Linux 中,可使用 trap 命令结合函数来捕获信号,

    2025年8月18日
    11700
  • Linux下如何打开db文件?

    在Linux系统中,打开.db文件时,首先需要明确“db文件”并非单一格式,而是多种数据库文件的统称,常见类型包括SQLite数据库、Berkeley DB (BDB)、LevelDB、RocksDB等,不同类型需使用对应工具处理,本文将分类介绍各类.db文件的打开方法、所需工具及操作步骤,帮助用户高效访问文件……

    2025年9月22日
    1.6K00
  • Linux如何配置IPv6地址转换?

    在 Linux 系统中配置 IPv6 地址转换涉及多种场景,包括静态地址配置、动态地址获取(如 SLAAC、DHCPv6)、以及 IPv6 与 IPv4 之间的转换(如 NAT64),以下从基础配置到高级转换场景进行详细说明,涵盖常用命令和配置文件修改方法,IPv6 地址基础配置IPv6 地址配置可分为静态配置……

    2025年10月8日
    7800

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信