Linux 网络监控

LinuxLinuxBeginner
立即练习

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

简介

本实验聚焦于使用 netstat 命令行工具在 Linux 系统中进行网络监控。对于系统管理员而言,网络监控是理解系统上的连接、服务和流量模式的关键。

在整个实验过程中,你将学习如何使用 netstat 实用工具来显示活跃的网络连接、正在监听的服务以及网络接口统计信息。这些技能对于解决网络问题、监控系统性能和确保网络安全至关重要。

在本实验结束时,你将能够有效地使用 netstat 来深入了解 Linux 系统上的网络活动,这对于任何系统管理员或 IT 专业人员来说都是一项宝贵的技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/RemoteAccessandNetworkingGroup(["Remote Access and Networking"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/RemoteAccessandNetworkingGroup -.-> linux/netstat("Network Monitoring") subgraph Lab Skills linux/cat -.-> lab-271343{{"Linux 网络监控"}} linux/cd -.-> lab-271343{{"Linux 网络监控"}} linux/netstat -.-> lab-271343{{"Linux 网络监控"}} end

使用 netstat 理解网络连接

netstat 命令是一个强大的网络实用工具,它可以显示网络连接、路由表、接口统计信息等。在这一步中,你将学习如何使用 netstat 查看活跃的网络连接。

首先,让我们进入我们要工作的项目目录:

cd /home/labex/project

什么是 netstat?

netstat(网络统计)命令可以显示各种与网络相关的信息,如网络连接、路由表、接口统计信息等。它是了解系统网络活动的重要工具。

查看活跃连接

让我们使用特定选项运行 netstat 命令,以显示活跃的 TCP 连接:

netstat -nat > connections.txt

在这个命令中:

  • -n 以数字形式显示地址和端口号,而不是将它们解析为主机名或服务名
  • -a 显示所有套接字(包括监听和非监听的)
  • -t 仅显示 TCP 连接
  • > connections.txt 将输出重定向到一个名为 connections.txt 的文件中

现在,让我们查看我们创建的文件的内容:

cat connections.txt

输出应该类似于以下内容:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

理解输出

  • Proto:使用的协议(在这种情况下是 TCP)
  • Recv-Q:连接到此套接字的用户程序尚未复制的字节数
  • Send-Q:远程主机尚未确认的字节数
  • Local Address:套接字本地端的地址和端口号
  • Foreign Address:套接字远程端的地址和端口号
  • State:套接字的状态(如 LISTEN、ESTABLISHED 等)

LISTEN 状态表示服务正在运行,并在特定端口上等待传入连接。

监控监听服务

在这一步中,你将学习如何识别系统上哪些服务正在监听连接。这些信息对于安全审计和解决网络相关问题至关重要。

识别监听服务

让我们使用 netstat 命令专门查找处于 LISTEN 状态的服务:

netstat -natu | grep LISTEN > listening_services.txt

在这个命令中:

  • -n 显示数字形式的地址
  • -a 显示所有套接字
  • -t 包含 TCP 连接
  • -u 包含 UDP 连接
  • | grep LISTEN 过滤输出,只显示包含 "LISTEN" 的行
  • > listening_services.txt 将输出保存到一个文件中

现在让我们查看文件的内容:

cat listening_services.txt

你应该会看到类似以下的输出:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN
tcp6       0      0 :::22                   :::*                    LISTEN

理解监听服务

输出中的每一行都代表一个当前正在接受连接的服务:

  • 监听 0.0.0.0 的服务正在接受来自任何网络接口的连接
  • 监听 127.0.0.1 的服务仅接受来自本地机器的连接
  • 监听 ::: 的服务使用的是 IPv6 地址,接受来自任何网络接口的连接

端口号(如 SSH 的 22 或 CUPS 打印服务的 631)用于识别正在监听的服务。例如:

  • 端口 22:SSH 服务
  • 端口 80:HTTP(Web)服务
  • 端口 443:HTTPS 服务
  • 端口 631:CUPS 打印服务

这些信息有助于你了解系统上暴露了哪些服务,这对于安全评估和故障排除非常有价值。

分析网络接口统计信息

在这一步中,你将学习如何查看网络接口的统计信息。这些统计信息能为你提供有关网络接口性能和使用情况的重要信息。

查看接口统计信息

让我们使用 netstat 来显示所有网络接口的统计信息:

netstat -i > interface_stats.txt

在这个命令中:

  • -i 显示所有网络接口的表格
  • > interface_stats.txt 将输出保存到一个文件中

现在让我们查看文件的内容:

cat interface_stats.txt

你应该会看到类似以下的输出:

Kernel Interface table
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0      1500   123456      0      0 0        98765      0      0      0 BMRU
lo       65536     789      0      0 0          789      0      0      0 LRU

理解网络接口统计信息

输出提供了每个网络接口的重要统计信息:

  • Iface:网络接口的名称

    • eth0:通常是第一个以太网接口
    • lo:用于本地连接的回环接口
  • MTU:最大传输单元(Maximum Transmission Unit)—— 可以传输的最大数据包大小

    • 标准以太网通常使用 1500 字节
    • 回环接口通常具有更大的 MTU(65536)
  • RX-OK:无错误接收的数据包数量

  • RX-ERR:有错误接收的数据包数量

  • RX-DRP:丢弃的接收数据包数量

  • RX-OVR:接收数据包溢出的数量

  • TX-OK:无错误传输的数据包数量

  • TX-ERR:有错误传输的数据包数量

  • TX-DRP:丢弃的传输数据包数量

  • TX-OVR:传输数据包溢出的数量

  • Flg:表示接口状态的标志

    • B:广播地址已设置
    • M:启用了多播
    • R:接口正在运行
    • U:接口已启用

这些统计信息有助于你监控网络性能并识别潜在问题,例如数据包丢失或传输错误。

其他网络统计命令

若要更全面地查看网络统计信息,你还可以使用:

netstat -s | head -20 > protocol_stats.txt

此命令显示 TCP、UDP、IP、ICMP 等协议的统计信息。我们使用 head -20 来将输出限制为前 20 行,以提高可读性。

让我们查看这个文件:

cat protocol_stats.txt

这将提供每个协议性能的详细统计信息,帮助你在协议层面识别潜在的网络问题。

总结

在本次实验中,你学习了如何使用 netstat 命令来监控 Linux 系统上网络活动的各个方面。你掌握的关键技能包括:

  1. 查看活跃的网络连接,以了解系统上建立了哪些连接。
  2. 识别监听服务,以确定哪些端口是开放的,并可能暴露在网络中。
  3. 分析网络接口统计信息,以监控网络接口的性能和健康状况。

这些技能对于需要理解和解决网络相关问题的系统管理员、网络工程师和安全专业人员来说至关重要。netstat 命令能让你深入了解系统的网络活动,帮助你保持最佳性能和安全性。

虽然在许多现代 Linux 发行版中,netstat 被视为传统工具,正逐渐被 ssip 等工具所取代,但了解 netstat 能为适用于所有这些工具的网络监控概念打下坚实的基础。