介绍
本实验聚焦于使用 netstat 命令行工具在 Linux 系统中进行网络监控。对于系统管理员而言,网络监控是理解系统上的连接、服务和流量模式的关键。
在整个实验过程中,你将学习如何使用 netstat 实用工具来显示活跃的网络连接、正在监听的服务以及网络接口统计信息。这些技能对于解决网络问题、监控系统性能和确保网络安全至关重要。
在本实验结束时,你将能够有效地使用 netstat 来深入了解 Linux 系统上的网络活动,这对于任何系统管理员或 IT 专业人员来说都是一项宝贵的技能。
使用 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 系统上网络活动的各个方面。你掌握的关键技能包括:
- 查看活跃的网络连接,以了解系统上建立了哪些连接。
- 识别监听服务,以确定哪些端口是开放的,并可能暴露在网络中。
- 分析网络接口统计信息,以监控网络接口的性能和健康状况。
这些技能对于需要理解和解决网络相关问题的系统管理员、网络工程师和安全专业人员来说至关重要。netstat 命令能让你深入了解系统的网络活动,帮助你保持最佳性能和安全性。
虽然在许多现代 Linux 发行版中,netstat 被视为传统工具,正逐渐被 ss 和 ip 等工具所取代,但了解 netstat 能为适用于所有这些工具的网络监控概念打下坚实的基础。



