如何检查 Linux 中网络协议是否启用

LinuxLinuxBeginner
立即练习

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

简介

在这个实验中,你将学习如何检查 Linux 中是否启用并正在使用某个网络协议。我们将探索三种不同的方法来实现这一目标。

首先,你将使用 netstat -s 命令查看各种网络协议(如 TCP、UDP 和 ICMP)的详细统计信息,从而深入了解它们的活动情况。接下来,你将研究 /proc/net 目录,该目录会公开内核网络信息,以验证协议的存在和状态。最后,你将使用 ss -s 命令(netstat 的现代替代命令)来检查协议的使用情况和统计信息。在本实验结束时,你将掌握在 Linux 系统上诊断网络协议活动的实用技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicFileOperationsGroup -.-> linux/ls("Content Listing") linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") subgraph Lab Skills linux/ls -.-> lab-558740{{"如何检查 Linux 中网络协议是否启用"}} linux/cat -.-> lab-558740{{"如何检查 Linux 中网络协议是否启用"}} linux/netstat -.-> lab-558740{{"如何检查 Linux 中网络协议是否启用"}} end

使用 netstat -s 检查协议统计信息

在这一步中,我们将探讨如何使用 netstat 命令检查网络协议的统计信息。netstat 是一个命令行工具,用于显示网络连接、路由表、接口统计信息、伪装连接和多播成员关系。

netstat-s 选项可以显示每个协议的统计信息。这对于了解系统上的网络活动以及诊断潜在的网络问题非常有用。

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

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

netstat -s

你将看到类似以下的输出(具体的数字和协议可能会根据你系统的活动情况而有所不同):

Ip:
    Forwarding: 1
    ... (various IP statistics)
Icmp:
    ... (various ICMP statistics)
IcmpMsg:
    ... (various ICMP message statistics)
Tcp:
    Active connections openings: 123
    Passive connection openings: 45
    ... (various TCP statistics)
Udp:
    InDatagrams: 678
    OutDatagrams: 901
    ... (various UDP statistics)
UdpLite:
    ... (various UDPLite statistics)

此输出提供了各种网络协议(如 IP、ICMP、TCP 和 UDP)的统计信息摘要。例如,在 Tcp: 部分,你可以看到主动和被动连接的开启次数。在 Udp: 部分,你可以看到传入和传出数据报的数量。

理解这些统计信息可以帮助你确定某个特定协议是否存在高流量或错误的情况。

花点时间查看输出,了解列出了哪些协议以及为每个协议提供了哪些类型的统计信息。

点击 Continue 进入下一步。

在 /proc/net 中验证协议

在上一步中,我们使用 netstat -s 查看了协议统计信息。现在,让我们来看看这些信息在 Linux 文件系统中的来源。

Linux 提供了一个名为 /proc 的虚拟文件系统,其中包含进程信息和系统配置细节。在 /proc 目录下,/proc/net 目录保存着有关网络栈的信息。

我们可以使用 ls 命令列出 /proc/net 目录的内容。在终端中输入以下命令并按回车键:

ls /proc/net

你将看到一个文件和目录列表,它们代表着各种与网络相关的信息。输出大致如下:

arp         dev_mcast  ip_mr_vif  netlink  psched  tcp6   udp6
dev         if_inet6   ip_tables  netstat  rpc     udplite  unix
dev_snmp6   ip_mr_cache  ipv6_route  packet   route   udplite6

这些文件中有许多包含了关于网络协议和连接的详细信息。例如:

  • tcp:包含有关活动 TCP 连接的信息。
  • udp:包含有关活动 UDP 连接的信息。
  • netstat:包含各种网络统计信息,类似于 netstat -s 所显示的内容。

让我们查看 /proc/net 目录下 netstat 文件的内容。我们可以使用 cat 命令来显示文件内容。

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

cat /proc/net/netstat

输出将是网络统计信息的原始转储。一开始可能会觉得有些难以理解,因为它不像 netstat -s 的输出那样经过格式化,便于人类阅读。

TcpExt: SyncookiesSent SyncookiesRecv SyncookiesFailed EmbryonicRsts PruneCalled RcvPruned OfoPruned ...
IpExt: InNoRoutes InTruncatedPkts InEZHeadroomOutMcasts InBcastPktsOutBcastPkts InOctets OutOctets ...

这个文件包含了像 netstat -s 这样的工具进行处理和格式化的底层数据。探索 /proc/net 目录中的文件对于高级网络故障排除和了解内核的网络状态很有帮助。

目前,只需观察这些文件的存在和内容,就足以理解网络统计信息是通过 /proc 文件系统公开的。

点击 Continue 进入下一步。

使用 ss -s 检查协议使用情况

在这一步中,我们将使用 ss 命令,它是一个用于调查套接字(socket)的工具。它常被视为 netstat 的替代品,因为它能显示更多的 TCP 和状态信息。

netstat 类似,ss 命令也有 -s 选项,用于显示各种套接字类型的摘要统计信息。这能让你快速了解不同协议的打开连接和套接字的数量。

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

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

ss -s

你将看到一个总结不同状态和不同协议的套接字数量的输出。输出可能如下所示:

Total: 1234 (kernel 5678)
TCP:   90 (estab 50, closed 20, orphaned 5, synrecv 3, timewait 10, ...)
UDP:   15
RAW:   0
UNK:   0

TCP:
ESTAB      50
TIME-WAIT  10
... (other TCP states)

让我们来详细分析一下输出内容:

  • Total:显示套接字的总数。
  • TCP:提供 TCP 套接字的摘要信息,包括总数以及不同状态(如 estab(已建立)、closed(已关闭)、timewait 等)的数量。
  • UDP:显示 UDP 套接字的总数。
  • RAW:显示原始套接字(raw socket)的总数。
  • UNK:显示未知套接字类型的数量。

在摘要行下方,ss -s 通常会提供更详细的 TCP 状态细分。

对比 netstat -sss -s 的输出,你可能会注意到 ss -s 更侧重于套接字状态,这对于诊断连接问题非常有帮助。例如,大量处于 TIME-WAIT 状态的套接字可能表明在有效关闭连接方面存在问题。

netstat -s 相比,使用 ss -s 能从另一个角度了解网络活动。这两个命令都是 Linux 中用于网络监控和故障排除的重要工具。

你现在已经学会了如何使用 netstat -s、探索 /proc/net 以及使用 ss -s 来检查网络协议统计信息。这些都是理解 Linux 系统上网络活动的基本技能。

点击 Continue 完成本次实验。

总结

在本次实验中,我们学习了如何通过检查网络统计信息和系统文件来判断 Linux 中是否启用了某个网络协议。首先,我们使用 netstat -s 命令来显示 IP、ICMP、TCP 和 UDP 等各种网络协议的统计信息,这有助于了解网络活动并诊断问题。接着,我们探索了如何通过检查 /proc/net 目录下的文件来验证协议信息,该目录能让我们了解内核的网络状态。最后,我们使用 ss -s 命令来检查协议使用情况,这为查看不同协议的摘要统计信息提供了另一种方式。这些方法能让你深入了解 Linux 系统上活跃的网络协议。