vault backup: 2026-11-07 16:33:44

This commit is contained in:
cheney
2026-11-07 16:33:55 +08:00
commit 7015312702
1208 changed files with 132432 additions and 0 deletions
+63
View File
@@ -0,0 +1,63 @@
想实时监控系统的外网连接并定位到具体的程序和用户,在Linux系统下有不少优秀的工具可以满足你的需求。它们各有侧重,你可以根据场景灵活选择。
下面这个表格汇总了几款常用工具及其核心功能:
| 工具名称 | 类型 | 监控外网连接 | 显示PID/程序名 | 主要特点 |
| :--- | :--- | :--- | :--- | :--- |
| **`ss`** | 命令行 | ✅ | ✅ | 功能强大,**替代netstat**,直接读取内核信息,效率高 |
| **`lsof`** | 命令行 | ✅ | ✅ | 列出进程打开的文件,**强大的网络连接排查能力** |
| **`nethogs`** | 命令行 | ✅ | ✅ | 实时监控,**按进程统计网络流量**(上传/下载速率) |
| **`Sniffnet`** | 图形化 | ✅ | ✅ | 跨平台,**直观的实时流量图表**,支持过滤和隐私预警 |
### 🛠️ 命令行工具详解
对于习惯使用终端或者需要在服务器环境排查问题的用户,命令行工具是不二之选。
1. **使用 `ss` 命令**
它是 `netstat` 的现代替代品,执行速度更快,功能也更强大。
- **基本用法**:使用 `-tunp` 组合选项可以查看所有的TCP和UDP连接,并显示对应的进程信息。
```bash
sudo ss -tunp
```
- **筛选外部地址**:你可以通过 `grep` 过滤掉内网地址,专注于外部连接。
```bash
sudo ss -tunp | grep -vE "127.0.0.1|192.168.|10."
```
2. **使用 `lsof` 命令**
这个命令非常强大,可以列出任何被进程打开的文件,网络连接也被视为文件。
- **查看所有网络连接**:
```bash
sudo lsof -i -nP
```
- **查看指定端口的连接**:如果你想查看哪个进程占用了特定的端口(例如22端口),可以这样操作:
```bash
sudo lsof -i :22
```
3. **使用 `nethogs` 命令**
当你想知道**哪个进程占用了大量带宽**时,`nethogs` 堪称神器。
- **实时监控**:它会像 `top` 命令一样,动态地显示每个进程的网络流量(发送和接收速率)。
```bash
sudo nethogs eth0 # 请将"eth0"替换为你自己的网卡名
```
### 🖥️ 图形化界面工具
如果你在桌面环境使用Linux,或者更喜欢直观的可视化界面,那么 `Sniffnet` 会是一个让你惊喜的工具。
- **核心特点**:
- **实时流量可视化**:通过动态图表清晰展示上传和下载速度的波动。
- **连接详情一目了然**:清晰罗列所有活跃连接的本地/远程地址、端口、协议和状态。
- **强大的过滤功能**:可以按协议、IP地址、端口等条件精准筛选你关心的连接。
- **安装与使用**:你可以从其 [GitHub项目页面](https://github.com/GyulyVGC/sniffnet) 下载安装包,启动后即可开始监控。
### 💡 实用建议与小贴士
- **关于权限**:大部分上述命令都需要 `root` 权限才能查看所有进程的网络信息,所以别忘了在命令前加上 `sudo`。
- **如何选择工具**:
- **快速排查特定连接**:使用 `ss` 或 `lsof`。
- **诊断带宽占用问题**:使用 `nethogs`。
- **日常监控与安全分析**:使用图形化的 `Sniffnet`。
希望这些工具能帮助你更好地了解和掌控系统的网络活动。如果你在使用的过程中遇到任何问题,或者想了解更具体的用法,随时可以再来问我。