netstat 概述
`netstat` 提供有关系统网络活动的各种信息。这对于诊断服务器特定端口是否打开、哪些进程正在使用网络连接、路由路径是否正确等非常有用。然而,由于它是 `net-tools` 包的一部分,IPv6 支持不完善,并且在大规模系统中可能存在性能问题,因此它已被 `iproute2` 包中的 `ss` 命令所替代。
netstat 的主要角色
`netstat` 命令主要用于以下目的:
主要应用领域(过去和部分系统)
- 检查活动连接: 显示当前所有已设置的 TCP、UDP 连接和监听端口。
- 检查路由表: 显示定义 IP 数据包传输路径的路由表。
- 网络接口统计: 提供每个网络接口的包传输和接收统计信息。
- 进程-端口映射: 检查哪些进程正在使用特定端口。
`netstat` vs `ss`
`netstat` 已使用多年,但现在 `ss` 命令取代了它。建议在新系统中养成使用 `ss` 的习惯。
- netstat: 遗留工具,基于 `/proc` 文件系统,在大规模连接时可能较慢,IPv6 支持不完善。
- ss: 现代、快速,直接访问内核的套接字统计,完美支持 IPv6,提供更多过滤选项。
netstat 安装(可选)
某些最新的 Linux 发行版(例如:从 Ubuntu 18.04 开始)可能默认未安装 `netstat`。如有需要,可以安装 `net-tools` 包以使用它。
`netstat` 安装(Debian/Ubuntu)
sudo apt update
sudo apt install net-tools
在 Debian 或 Ubuntu 基础系统上安装包含 `netstat` 的 `net-tools` 包的命令。
主要 netstat 命令选项
`netstat` 命令可以组合各种选项,以详细过滤和显示所需的网络信息。
1. 连接和端口信息
2. 路由表和统计
生成的命令:
请尝试组合命令。
描述:
`netstat` 执行命令。
通过组合这些选项,您可以与 AI 一起虚拟地执行命令。
使用示例
通过 `netstat` 命令的各种应用示例,学习如何检查系统的网络连接和统计信息。
检查所有活动 TCP 连接和监听端口
sudo netstat -tulpn
最常用的组合,将 TCP 连接和监听端口以数字地址显示,同时还显示相关的程序名称和 PID。
仅检查所有监听端口
sudo netstat -lntp
检查当前系统中等待外部连接的所有端口(TCP、UDP)。在确认服务器端口是否正确打开时非常有用。
检查路由表
netstat -rn
以数字格式显示系统的 IP 路由表。可以确认数据包将通过何种路径发送。
检查使用特定端口的进程
sudo netstat -tulpn | grep :80
检查使用端口 `80` 的 TCP 连接和监听端口的进程信息。(在诊断 Web 服务器时非常有用)
检查每个网络接口的统计
netstat -i
显示每个网络接口(例如:`eth0`、`lo`)的接收(Rx)和发送(Tx)数据包数量、错误等。
整体网络统计摘要
netstat -s
显示 TCP、UDP、IP 等各网络协议的整体统计摘要。