如何在 Linux 中检查网络 MTU 是否已设置

LinuxLinuxBeginner
立即练习

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

简介

在这个实验中,你将学习如何使用多种方法检查 Linux 中网络接口的最大传输单元 (Maximum Transmission Unit, MTU)。了解 MTU 对于网络性能和故障排除至关重要。

你将探索三种不同的方法:使用现代的 ip link show 命令、传统的 ifconfig 实用工具,以及直接在 /sys/class/net 文件系统中检查网络接口信息。在本实验结束时,你将能够熟练识别网络接口的 MTU 设置。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux(("Linux")) -.-> linux/PackagesandSoftwaresGroup(["Packages and Softwares"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/RemoteAccessandNetworkingGroup -.-> linux/ifconfig("Network Configuring") linux/RemoteAccessandNetworkingGroup -.-> linux/ip("IP Managing") linux/PackagesandSoftwaresGroup -.-> linux/apt("Package Handling") subgraph Lab Skills linux/ls -.-> lab-558738{{"如何在 Linux 中检查网络 MTU 是否已设置"}} linux/cat -.-> lab-558738{{"如何在 Linux 中检查网络 MTU 是否已设置"}} linux/ifconfig -.-> lab-558738{{"如何在 Linux 中检查网络 MTU 是否已设置"}} linux/ip -.-> lab-558738{{"如何在 Linux 中检查网络 MTU 是否已设置"}} linux/apt -.-> lab-558738{{"如何在 Linux 中检查网络 MTU 是否已设置"}} end

在这一步中,你将学习如何使用 ip link show 命令检查网络接口的最大传输单元 (Maximum Transmission Unit, MTU)。MTU 是网络接口在不进行分段的情况下能够处理的最大数据包大小。了解 MTU 对于网络故障排除和性能调优非常重要。

ip 命令是 Linux 中用于管理网络接口、路由和隧道的强大工具。link 子命令用于显示和修改网络接口。

如果终端尚未打开,请打开它。你可以通过点击桌面左侧的 Xfce Terminal 图标来完成此操作。

现在,输入以下命令并按回车键:

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

找到对应于你主要网络接口的行。在这个环境中,通常是 eth0。你会在那里找到 mtu 值。在上面的示例中,eth0 的 MTU 是 1500

lo 接口是回环接口,用于系统内部的通信。它的 MTU 通常要大得多。

花点时间检查输出并确定你的 eth0 接口的 MTU。

点击 继续 进入下一步。

使用 ifconfig 验证 MTU

在这一步中,你将使用 ifconfig 命令来验证网络接口的 MTU。虽然 ip 是现代用于网络配置的命令,但 ifconfig 是一个较旧但仍常用的实用工具,它能提供关于网络接口的类似信息。

首先,让我们安装包含 ifconfig 命令的 net-tools。我们将再次使用 apt,就像安装 htop 时那样。

如果终端尚未打开,请打开它。

输入以下命令来安装 net-tools 并按回车键:

sudo apt update
sudo apt install net-tools -y

-y 标志会自动对安装过程中的任何提示回答“yes”,使安装过程更顺畅。

安装完成后,你就可以使用 ifconfig 命令了。输入以下命令并按回车键:

ifconfig

此命令将显示所有活动网络接口的配置信息。你将看到类似于以下的输出:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:acff:fe11:2  prefixlen 64  scopeid 0x20<link>
        ether 02:42:ac:11:00:02  txqueuelen 1000  (Ethernet)
        RX packets 123  bytes 12345 (12.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 123  bytes 12345 (12.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 123  bytes 12345 (12.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 123  bytes 12345 (12.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

同样,找到对应于 eth0 的部分。你会在那里找到 mtu 值,这将确认你使用 ip link show 命令看到的值。

同时使用 ipifconfig 会很有帮助,因为不同的系统或文档可能会更倾向于使用其中一个。

点击 继续 进入下一步。

/sys/class/net 中检查 MTU

在这一步中,你将探索 /sys 文件系统以查找 MTU 值。/sys 文件系统是一个虚拟文件系统,它提供了访问内核数据结构的接口。你可以通过它检查,有时还能修改内核参数和设备信息。

包括 MTU 在内的网络接口信息通过 /sys/class/net 目录公开。系统上的每个网络接口在此处都有一个子目录。

如果终端尚未打开,请打开它。

首先,让我们列出 /sys/class/net 目录的内容,以查看可用的网络接口。输入以下命令并按回车键:

ls /sys/class/net/

你应该会看到一个网络接口列表,类似于 ip link showifconfig 的输出。在这个环境中,你可能会看到 eth0lo

eth0  lo

现在,让我们查看主接口 eth0 的目录内容。输入以下命令并按回车键:

ls /sys/class/net/eth0/

这将显示一个包含 eth0 接口信息的文件和目录列表。

addr_assign_type  broadcast    device       ifindex      mtu        phys_port_id  speed
address           carrier      dormant      iflink       napi_defer_hard_irqs  phys_port_name  statistics
addr_len          carrier_changes  duplex       link_mode    netdev_group  power         subsystem
bonding_slave     carrier_up_count  flags        lower_       operstate     proto_down_reason  tx_queue_len
bridge_slave      dev_id       gro_flush_timeout  name_assign_type  perms         qdisc         type

注意名为 mtu 的文件。我们可以读取这个文件的内容来获取 MTU 值。使用 cat 命令显示 mtu 文件的内容。输入以下命令并按回车键:

cat /sys/class/net/eth0/mtu

你应该会在终端上看到打印出的 MTU 值,应该是 1500

1500

通过读取 /sys 文件来检查 MTU 的这种方法,提供了一种直接访问网络接口内核级信息的方式。

你现在已经成功使用三种不同的方法检查了 MTU:ip link showifconfig 以及检查 /sys 文件系统。这表明在 Linux 中,完成同一任务通常有多种方法。

点击 继续 完成此实验。

总结

在本实验中,你学习了如何使用三种不同的方法在 Linux 中检查网络接口的最大传输单元(Maximum Transmission Unit, MTU)。你首先使用现代的 ip link show 命令来显示所有网络接口的详细信息,包括它们的 MTU 值。然后,你使用较旧但仍然常用的 ifconfig 命令验证了这些信息。最后,你探索了如何直接从 /sys/class/net 文件系统中检查 MTU 值,该文件系统提供了一种以编程方式访问网络接口属性的方法。这些方法提供了不同的方式来确认 MTU 设置,这对于网络故障排除和性能优化至关重要。