在 Linux 中使用 IP 工具的 3 个实用技巧

本文介绍如何使用 IP 工具快速轻松地查找您的 IP 地址、显示您的路由表等等。
334 位读者喜欢这篇文章。
How to find files in Linux

刘易斯·考尔斯,CC BY-SA 4.0

自从 Linux 中弃用 ifconfig 命令,转而使用包含神奇工具 ipiproute2 项目以来,已经过去十多年了。许多在线教程资源仍然引用旧的命令行工具,如 ifconfigroutenetstat。本教程的目的是分享一些你可以使用 ip 工具轻松完成的简单网络相关操作。

查找您的 IP 地址

[dneary@host]$ ip addr show
[snip]
44: wlp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
	link/ether 5c:e0:c5:c7:f0:f1 brd ff:ff:ff:ff:ff:ff
	inet 10.16.196.113/23 brd 10.16.197.255 scope global dynamic wlp4s0
   	valid_lft 74830sec preferred_lft 74830sec
	inet6 fe80::5ee0:c5ff:fec7:f0f1/64 scope link
   	valid_lft forever preferred_lft forever

ip addr show 将显示有关您所有网络链接设备的许多信息。在本例中,我的无线以太网卡 (wlp4s0) 的 IPv4 地址(inet 字段)是 10.16.196.113/23/23 表示 IP 地址的 32 位中有 23 位将由该子网中的所有 IP 地址共享。子网中的 IP 地址范围为 10.16.196.0 到 10.16.197.254。子网的广播地址(IP 地址后的 brd 字段)10.16.197.255 保留用于向子网上所有主机广播流量。

例如,我们可以使用 ip addr show dev wlp4s0 仅显示有关单个设备的信息。

显示您的路由表

[dneary@host]$ ip route list
default via 10.16.197.254 dev wlp4s0 proto static metric 600
10.16.196.0/23 dev wlp4s0 proto kernel scope link src 10.16.196.113 metric 601
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown

路由表是本地主机帮助网络流量确定去向的方式。它包含一组路标,将流量发送到特定接口,以及旅程中的特定下一个航路点。

如果您运行任何虚拟机或容器,这些虚拟机或容器将获得自己的 IP 地址和子网,这可能会使路由表变得非常复杂,但在单个主机中,通常只有两个指令。对于本地流量,将其发送到本地以太网,网络交换机将(使用称为 ARP 的协议)确定哪个主机拥有目标 IP 地址,从而确定流量应发送到哪里。对于 Internet 流量,将其发送到本地网关节点,该节点将更好地了解如何到达目的地。

在上述情况下,第一行代表外部流量的外部网关,第二行用于本地流量,第三行保留用于主机上运行的虚拟机的虚拟桥接器,但此链接当前未激活。

监控您的网络配置

[dneary@host]$ ip monitor all
[dneary@host]$ ip -s link list wlp4s0

ip monitor 命令可用于监控路由表、网络接口上的网络寻址或本地主机上 ARP 表中的更改。当两个虚拟机应该能够相互通信但无法通信时,此命令在调试与容器和网络相关的问题时特别有用。

all 一起使用时,ip monitor 将报告所有更改,并以 [LINK](网络接口更改)、[ROUTE](路由表更改)、[ADDR](IP 地址更改)或 [NEIGH](与马无关——与邻居的 ARP 地址相关的更改)之一为前缀。

您还可以监控特定对象(例如,特定路由表或 IP 地址)的更改。

与许多命令一起使用的另一个有用选项是 ip -s,它提供一些统计信息。添加第二个 -s 选项会添加更多统计信息。上面的 ip -s link list wlp4s0 将提供有关接收和传输的数据包的大量信息,包括丢弃的数据包数、检测到的错误等等。

实用技巧:缩短您的命令

一般来说,对于 ip 工具,您只需要包含足够的字母来唯一标识您想要执行的操作。您可以使用 ip mon 代替 ip monitor。您可以使用 ip a l 代替 ip addr list,并且可以使用 ip r 代替 ip routeIp link list 可以缩短为 ip l ls。要阅读有关可用于更改命令行为的许多选项的信息,请访问 ip 手册页

标签
User profile image.
戴夫·尼尔里是红帽开源和标准团队的成员,帮助使对红帽重要的开源项目取得成功。自 1999 年向 GIMP 发送他的第一个补丁以来,戴夫一直在自由和开源软件世界中工作,担任过许多不同的角色。

5 条评论

我发现 'ifconfig' 是我容易记住的命令。

使用 ifconfig 大约 30 年了。我同意你的看法。在最近两个 Red Hat 版本中,在如此短的时间内发生了如此多的变化。

回复 作者 格雷格 P

感谢你,我现在可以找到我的 IP 地址了!

你在发布之前清理过输出吗?对我来说,“ip addr show”命令看起来不像文章中那么干净。ip 命令输出的所有内容对我来说都像一团难以扫描的混乱,这就是为什么我仍然需要使用 ifconfig。我正在使用 Ubuntu 16.04

您可以使用“ip addr”代替“ip addr show”,这将产生相同的结果。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.