Linux ip 命令实战示例

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,你将学习如何在 Linux 中使用强大的 ip 命令来管理网络接口并排查网络问题。实验涵盖了 ip 命令的基本语法和选项,以及管理网络接口和使用该命令诊断网络问题的实际示例。你将探索显示网络接口信息、配置 IP 地址以及操作路由表的命令。本实验旨在帮助你深入理解 ip 命令及其在网络管理和故障排除中的实际应用。

Linux 命令速查表


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") linux/RemoteAccessandNetworkingGroup -.-> linux/ping("Network Testing") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") subgraph Lab Skills linux/ifconfig -.-> lab-422741{{"Linux ip 命令实战示例"}} linux/netstat -.-> lab-422741{{"Linux ip 命令实战示例"}} linux/ping -.-> lab-422741{{"Linux ip 命令实战示例"}} linux/ip -.-> lab-422741{{"Linux ip 命令实战示例"}} end

理解 ip 命令的语法和选项

在这一步中,你将学习 Linux 中 ip 命令的基本语法和选项。ip 命令是一个强大的工具,用于管理网络接口和配置。

首先,让我们探索 ip 命令的一般语法:

ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]

在这里,OBJECT 表示你想要管理的网络实体,例如 link 表示网络接口,addr 表示 IP 地址,route 表示路由表等。COMMAND 是你想要对对象执行的具体操作,而 ARGUMENTS 是命令所需的任何附加参数。

一些常见的 ip 命令选项包括:

  • -c:启用彩色输出
  • -f:指定地址族(例如 inetinet6link
  • -h:显示帮助菜单
  • -s:提供详细的、冗长的输出
  • -o:以单行格式输出信息

让我们尝试几个示例来熟悉 ip 命令:

## 显示所有网络接口的信息
sudo ip link show

示例输出:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

此命令显示系统上所有网络接口的状态和配置。

## 显示特定接口的 IP 地址信息
sudo ip addr show eth0

示例输出:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link
       valid_lft forever preferred_lft forever

此命令显示 eth0 接口的 IP 地址和其他配置详细信息。

使用 ip 命令管理网络接口

在这一步中,你将学习如何使用 ip 命令管理网络接口。

首先,让我们使用 ip link add 命令创建一个新的网络接口:

sudo ip link add name myint type dummy

这将创建一个名为 myint 的虚拟接口。你可以使用 ip link show 命令验证接口是否创建成功:

sudo ip link show

示例输出:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
3: myint: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
    link/ether 3a:f9:b6:5a:4a:48 brd ff:ff:ff:ff:ff:ff

接下来,让我们使用 ip link set 命令将 myint 接口启动:

sudo ip link set dev myint up

你可以验证接口现在是否处于 UP 状态:

sudo ip link show myint

示例输出:
3: myint: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noop state UP mode DEFAULT group default qlen 1000
    link/ether 3a:f9:b6:5a:4a:48 brd ff:ff:ff:ff:ff:ff

最后,让我们使用 ip link delete 命令删除 myint 接口:

sudo ip link delete dev myint

验证接口是否已被删除:

sudo ip link show

示例输出:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff

输出中不再显示 myint 接口。

使用 ip 命令排查网络问题

在这一步中,你将学习如何使用 ip 命令排查网络问题。

首先,让我们使用 ip route 命令检查路由表:

sudo ip route show

示例输出:
default via 172.17.0.1 dev eth0
172.17.0.0/16 dev eth0 proto kernel scope link src 172.17.0.2

这显示了默认路由和本地网络接口的路由。

接下来,让我们通过禁用 eth0 接口来模拟一个网络问题:

sudo ip link set dev eth0 down

现在,尝试 ping 一个远程主机:

ping 8.8.8.8

你应该会看到 ping 失败,因为网络接口已关闭。

为了进一步排查问题,你可以使用 ip addr 命令检查 IP 地址配置:

sudo ip addr show eth0

示例输出:
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link
       valid_lft forever preferred_lft forever

输出显示 eth0 接口处于 DOWN 状态。

要重新启动接口,请使用 ip link set 命令:

sudo ip link set dev eth0 up

验证接口现在是否处于 UP 状态:

sudo ip addr show eth0

示例输出:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link
       valid_lft forever preferred_lft forever

现在,再次尝试 ping 远程主机,ping 应该会成功。

总结

在本实验中,你学习了 Linux 中 ip 命令的基本语法和选项,这是一个用于管理网络接口和配置的强大工具。你探索了 ip 命令的一般语法,包括 OBJECTCOMMANDARGUMENTS 的使用。你还了解了常见的 ip 命令选项,例如 -c 用于彩色输出,-f 用于指定地址族,以及 -s 用于详细的冗长输出。你还练习了使用 ip 命令显示网络接口和 IP 地址的信息,这对于排查网络问题非常有帮助。

Linux 命令速查表