网站搜索

24 个有用的“IP”命令来配置网络接口


简介:在本指南中,我们将讨论 ip 命令的一些实际示例。在本指南结束时,用户将能够通过命令行界面在 Linux 中高效执行网络任务。

系统管理员经常需要在 Linux 服务器上执行网络任务。市场上有多种图形和命令行工具。然而,大多数 Linux 用户更喜欢使用 ip 命令,因为它简单且功能丰富。

ip 命令是一个新的网络命令行实用程序,用于为网络接口分配 IP 地址或在 Linux 系统上配置/更新有用的网络变量。

它是 iproute2 软件包的一部分,提供多种网络管理任务,例如启动或关闭网络接口、分配和删除 IP 地址和路由、管理 ARP 缓存等等。

ip 命令与旧的 ifconfig 命令非常相似,但它的功能更加强大,添加了更多功能和功能。

在所有现代 Linux 发行版中,ifconfig 命令已被弃用并被 ip 命令取代。但是,ifconfig 命令仍然有效并且可用于大多数 Linux 发行版。

注意:在进行任何更改之前请先备份配置文件。

1.在Linux中永久配置静态IP地址

要在 Linux 中永久配置静态 IP 地址,您需要更新或编辑网络配置文件以向系统分配静态 IP 地址。您必须是超级用户,可以从终端或命令提示符处使用 su(切换用户) 命令。

在 RHEL 系统中设置静态 IP 地址

使用您喜欢的文本编辑器打开并编辑(eth0eth1)的网络配置文件。例如,在基于 RHEL 的发行版上将 IP 地址分配给 eth0 接口,如下所示。

vi /etc/sysconfig/network-scripts/ifcfg-eth0     [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]

在 Debian 系统中设置静态 IP 地址

要配置永久静态 IP 地址,您需要修改网络接口配置文件 /etc/network/interfaces 以进行永久更改,如下所示(对于基于 Debian 的发行版)。

sudo nano /etc/network/interfaces     [On Debian, Ubuntu and Mint]

接下来,使用以下命令输入所有详细信息后重新启动网络服务。

sudo systemctl restart networking

2. Linux中临时配置静态IP地址

对于临时网络配置,您可以使用ip 命令将 IP 地址动态分配给特定接口 (eth2)。

ip addr add 172.19.1.10/24 dev eth2
OR
sudo ip addr add 172.19.1.10/24 dev eth2

注意:不幸的是,系统重新启动后所有这些设置都将丢失。

3. 如何显示所有网络接口

ip命令中,链接对象代表网络接口。我们可以使用 show 命令来显示所有网络接口。

现在,让我们使用以下命令显示所有网络接口:

ip link show

上面的输出显示了所有网络接口的详细信息,例如接口名称、标志、状态、链接地址、广播地址等。

4. 如何检查特定网络接口的IP地址

要获取各个网络接口的深度信息(例如 IP 地址和 MAC 地址信息),请使用以下命令,如下所示。

ip link show eth2

到目前为止,我们使用链接对象显示了有关网络接口的详细信息。但是,它不显示与网络接口关联的 IP 地址。为了克服这个限制,我们可以将 addr 对象与 ip 命令一起使用。

让我们通过一个例子来理解这一点。

ip addr show

在这里,我们可以看到,现在输出显示了所有网络接口的 IP 地址以及其他详细信息。

要显示各个网络接口的 IP 地址,只需提供网络接口名称作为命令的参数即可。

ip addr show eth2

5. 如何在彩色输出中显示 IP 地址

ip 命令显示有关网络对象的详细信息。然而,有时我们需要查看有限的信息。在这种情况下,我们可以启用彩色输出。此选项以不同颜色突出显示重要细节。

让我们使用命令的 --color 选项以不同的颜色显示输出:

ip --color addr show eth2

在上面的输出中,我们可以看到接口名称、以太网地址和状态以不同的颜色突出显示。

6. 如何以 JSON 格式显示 IP 地址

在前面的示例中,我们看到ip 命令显示了有意义的信息。然而,使用基本脚本解析原始输出并提取有意义的信息并不是一件容易的事。在这种情况下,我们可以指示ip命令生成JSON格式的输出。

因此,让我们在命令中使用 -j 选项,以 JSON 格式显示相同的输出:

ip -j link show eth2

这种方法在进行自动化时非常有用,因为 JSON 是一种被广泛接受的格式,并且有许多可用于各种编程语言的 JSON 解析器库/工具。

7. 如何使 JSON 输出更具可读性

在前面的示例中,我们使用 -j 选项以 JSON 格式显示输出。此默认 JSON 格式紧凑且节省空间。然而,由于缺乏缩进,输出不易阅读。

为了克服这个限制,我们可以使用 -p 选项,通过缩进使输出更具可读性。让我们通过下面的例子来理解这一点:

ip -j -p link show eth2

在这里,我们可以看到相同的输出比前面的示例更具可读性。

8. 如何从网络接口中删除 IP 地址

在前面的示例中,我们使用 add 子命令来分配 IP 地址。类似地,我们可以使用del子命令来删除特定的IP地址。

以下命令将从给定接口 (eth2) 中删除分配的 IP 地址。

ip addr del 172.19.1.10/24 dev eth2
OR
sudo ip addr del 172.19.1.10/24 dev eth2

现在,让我们验证一下 IP 地址是否已被删除:

ip -j -p addr show eth2

在上面的输出中,我们可以看到现在的 eth2 网络接口只有一个 IP 地址。

9. 如何启用网络接口

带有接口名称 (eth2) 的“up”标志启用网络接口。例如,以下命令将激活 eth2 网络接口。

ip link set eth2 up
OR
sudo ip link set dev eth2 up

现在,让我们检查一下更新的状态:

ip -j -p link show eth2 | grep operstate

10. 如何禁用网络接口

带有接口名称 (eth2) 的“down”标志会禁用网络接口。例如,以下命令将停用 eth2 网络接口。

ip link set eth2 down
OR
sudo ip link set eth2 down

现在,让我们检查 eth2 网络接口的状态:

ip -j -p link show eth2 | grep operstate

上面的输出显示了网络接口的修改状态。

11. 如何刷新网络接口的IP地址

在前面的示例中,我们了解了如何使用 del 子命令删除 IP 地址。然而,有时我们需要删除特定网络接口的所有 IP 地址。在这种情况下,我们可以使用flush子命令。

首先,使用flush子命令删除eth2网络接口的所有IP地址:

sudo ip addr flush eth2

现在,让我们检查一下 eth2 网络接口的所有 IP 地址是否已被删除:

ip -j -p addr show eth2

在上面的输出中,addr_info 字段显示空 JSON 数组。这表明没有任何 IP 地址与 eth2 网络接口关联。

12. 如何查看路由表

路由表存储将网络数据包转发到正确目的地所需的信息。我们可以使用ip命令的route对象来显示路由规则。

让我们使用以下命令列出路由表的所有规则:

ip route show

在上面的输出中,第一列代表目标,而最后一列代表源 IP 地址。

13. 如何添加新的静态路由

为什么需要添加静态路由或手动路由,因为流量不能经过默认网关?我们需要添加静态路由,以使流量从最佳路径到达目的地。

sudo ip route add 172.19.1.0/24 dev eth2 proto kernel scope link src 172.19.1.2

现在,让我们验证该条目是否已成功添加:

ip route show

15. 如何删除静态路由

del 子命令从路由表中删除特定条目。例如,以下命令删除 eth2 设备路由条目:

sudo ip route del 172.19.1.0/24

现在,让我们验证该条目是否已成功删除:

ip route show

16. 如何添加永久静态路由

系统重启后,上述所有路由都会丢失。要添加永久静态路由,请编辑文件 /etc/sysconfig/network-scripts/route-eth2(我们正在存储 (eth2) 的静态路由。默认情况下, route-eth2 文件将不存在,需要创建。

在 RHEL 系统中设置永久路由

vi /etc/sysconfig/network-scripts/route-eth2

并添加以下行并保存并退出。

172.19.1.0/24 via 172.19.1.2 dev eth2

在 Debian 系统中设置永久路由

打开文件 /etc/network/interfaces 并在最后添加持久静态路由。 IP 地址在您的环境中可能有所不同。

sudo vi /etc/network/interfaces
auto eth2
iface eth2 inet static
address 172.19.50.2
netmask 255.255.255.0
gateway 172.19.50.100
#########{Static Route}###########
up ip route add 172.19.1.0/24 via 172.19.1.2 dev eth2

接下来,使用以下命令输入所有详细信息后重新启动网络服务。

sudo systemctl restart networking

17. 如何添加默认网关

在网络中,默认网关起着重要的作用。当路由表不包含有关目的地的任何信息时使用它。

可以全局指定默认网关,也可以为特定于接口的配置文件指定默认网关。默认网关的优点是系统中存在多个 NIC。您可以动态添加默认网关,如命令下方所示。

首先,我们添加一个 eth0 网络接口作为默认网关:

sudo ip route add default via 172.17.0.1

现在,让我们使用以下命令验证默认网关设置:

ip route show

请注意,我们已在测试机器上执行了此命令。在生产环境中使用此命令时请小心。

18. 如何删除默认网关

我们可以使用以下命令来删除默认网关:

sudo ip route del default

现在,让我们列出路由表以验证默认网关是否已被删除:

ip route show

19. 如何显示 ARP 缓存

ARP 代表地址解析协议,用于查找与特定 IP 地址关联的MAC 地址。

我们可以将 neigh 对象与 ip 命令一起使用来显示 ARP 缓存:

ip neigh show

在上面的命令中,neigh 代表相邻的对象。

20. 如何添加ARP表项

要创建新的 ARP 条目,我们可以使用带有 neigh 对象的 add 子命令。

sudo ip neigh add 172.19.1.0 lladdr 02:42:e3:40:a6:b1 dev eth2

现在,让我们列出 ARP 缓存条目:

ip neigh show

在上面的输出中,我们可以看到 eth2 网络接口的新条目。

21. 如何删除 ARP 条目

与其他网络对象一样,我们可以使用 del 子命令来删除 ARP 条目。例如,以下命令删除 eth2 网络接口的 ARP 条目:

sudo ip neigh del 172.19.1.0 dev eth2

现在,我们通过列出 ARP 缓存来验证该条目是否已被删除:

ip neigh show 

22. 如何刷新 ARP 条目

我们可以使用flush子命令来删除多个ARP条目。要理解这一点,首先添加一些状态为 STALEARP 条目:

sudo ip neigh add 172.19.1.0 lladdr 02:42:e3:40:a6:b1 dev eth2 nud stale
sudo ip neigh add 172.19.2.0 lladdr 02:42:e3:40:a6:b2 dev eth2 nud stale
sudo ip neigh add 172.19.3.0 lladdr 02:42:e3:40:a6:b3 dev eth2 nud stale

接下来,验证新条目是否已成功添加:

ip neigh show

然后,使用以下命令刷新所有条目:

sudo ip neigh flush all

最后,验证所有条目是否已被删除:

ip neigh show

23. 如何设置网络接口的MTU

MTU代表最大传输单元,表示单次事务中可以传输的最大数据包大小。我们可以根据我们的性能要求操纵 MTU 大小。

首先,让我们找到eth2网络接口的MTU

ip -j -p link show eth2 | grep mtu

接下来,将 eth2 网络接口的 MTU 大小更新为 3000

sudo ip link set mtu 3000 dev eth2

最后验证MTU是否更新成功:

ip -j -p link show eth2 | grep mtu

24. 如何更改网络Mac地址

ip命令允许我们更改网络接口的MAC地址。为此,我们可以将 set 子命令与链接对象一起使用:

首先,列出 eth2 网络接口的当前 MAC 地址:

ip -j -p link show eth2 | grep address

接下来,使用以下命令更改网络接口的 MAC 地址:

sudo ip link set dev eth2 address 02:42:ac:13:01:03

最后,验证MAC地址是否已更改:

ip -j -p link show eth2 | grep address

请参阅手册页从终端/命令提示符执行 man ip 以了解有关 IP 命令的更多信息。

man ip
结论

在本文中,我们讨论了 ip 命令的一些常见示例。人们可以在日常生活中使用这些示例来执行网络管理。

您知道 Linux 中 ip 命令的任何其他最佳示例吗?请在下面的评论中告诉我们您的观点。