Linux 管理和故障排除最基本的部分是检查系统的 IP 配置以确保系统具有有效的 IP 并且可以在本地网络上访问。
Linux 中的 ip 命令是一个强大的工具,它不仅可以显示系统当前的 IP 地址,还可以让您查看和管理网络接口、IP 地址、路由和 ARP 表的当前配置。
让我们看一下 Linux 中 ip 命令的一些常见用例。
在 Linux 上查找 IP 地址
要查找 Linux 系统的 IP 地址,请使用 ip 命令,后跟 address、addr 或选项:
这将显示所有网络接口的配置,包括它们的 IP 地址。
在下面的示例中,您可以看到系统具有三个网络接口:lo(环回地址)、ens33。输出包括以下信息:
- 第 1 层信息,例如接口功能和物理层连接状态、MTU、接口的操作状态(例如,UP 或 DOWN)以及传输队列长度 (qlen)。
- 第 2 层信息,例如接口的 MAC 地址。
- 第 3 层信息包括 IP 地址及其类型(动态 IP 寻址或静态 IP 寻址)。
要显示有关网络接口的简要信息,请使用带有 –brief 选项的 ip 命令,如下所示:
要仅显示 IPv4 地址信息,请使用以下命令:
要查找特定网络接口的 IP 地址信息,请使用以下语法:
例如,要查看网络接口ens33的 IP 地址,命令为:
查看和更改 MAC 地址
使用 ip 命令,您还可以查看和更改系统的 MAC 地址。
要查看您的 Linux 系统的 MAC 地址,请使用以下命令:
要查看特定接口的 MAC 地址,请使用:
要更改 MAC 地址,首先关闭接口:
然后使用以下命令更改接口的 MAC 地址:
之后,调出界面:
查看网络接口统计信息
使用 ip 命令还可以查看网络接口的统计信息。使用以下 ip 命令查看系统上所有网络接口的统计信息:
输出包括传输和接收的字节/数据包、错误、丢弃的数据包、多播等统计信息。要显示特定接口的统计信息,请使用以下语法:
使用 ip 修改链接属性
要打开接口,请使用以下 ip 命令:
要关闭接口,请运行:
您还可以使用以下命令更改接口的 MTU(最大传输单元):
例如,要将网络接口 ens33 的 MTU 设置为 8000,命令为:
在 Linux 上添加/删除 IP 地址
要将 IP 地址添加到网络接口,请使用以下语法:
要将 IP 地址 192.168.42.140/24 添加到网络接口 ens33,命令为:
使用以下命令语法从接口中删除 IP 地址:
比如要从接口ens33中删除 IP 地址 192.168.152.130/24,命令为:
在 Linux 上查看路由表
ip route命令用于查看和修改Linux系统中的路由。要显示系统的路由表,请使用不带任何选项的 ip route 命令:
输出中的每一行代表一个配置的路由。路由由目标网络地址、下一跳(即路由器的 IP 地址)、发送数据包的接口和度量(当有多个路由时用于确定首选路由的值可到达目的地)。在这种情况下,具有较低度量的路由是首选。
在上面的示例中,前两个条目表示默认路由,当没有其他路由可用于目标地址时使用默认路由。192.168.174.2 是路由器的 IP 地址。dev ens33 指示将用于将数据包发送到路由器的接口。proto dhcp字段表示默认路由是从 DHCP 获悉的。
第二个条目表示 APIPA 地址(自动专用 IP 寻址)169.254.0.0/16。当主机无法从DHCP 服务器获取 IP 地址时,它会从该网络中为自己分配一个随机 IP 地址。它允许它们与子网中也未能获得 IP 地址的其他主机通信。
src字段表示通过该路由发送数据包时用作源地址的接口的IP 地址。
使用ip修改路由表
要手动添加路由,请使用 ip route 命令,后跟目标网络地址和网关 IP:
例如,要添加一条路由,将发往 192.168.30.0 网络的所有流量发送到 192.168.174.2 的网关,您可以使用以下命令:
使用以下命令添加默认路由:
例如,要添加通过 ens33 将流量定向到路由器 192.168.30.1 的默认路由,命令为:
要删除路由表条目,请使用以下语法:
您还可以使用以下语法查看地址将采用的路由:
在 Linux 上管理邻居表
在 Linux 中可以使用ip neigh命令来查看和修改邻居表,也就是 ARP 表。要查看当前邻居表条目,请使用以下命令:
要在邻居表中添加新条目,请使用以下语法:
要从邻居表中删除条目,请使用以下语法:
为 ip 命令的输出添加颜色
为了使输出更容易和更快地理解,您可以使用-c选项为 ip 命令输出添加颜色:
在 Linux 上管理网络和 IP 地址
Linux 中的 ip 命令是用于管理和排除网络连接故障的有用工具。从查看网络接口和修改链接属性到查找 IP 地址和管理路由,ip 命令可让您通过命令行执行多项系统管理任务。