Files
Knowledge/3 札记/Linux 网络链接.md
T

63 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
想实时监控系统的外网连接并定位到具体的程序和用户,在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`。
希望这些工具能帮助你更好地了解和掌控系统的网络活动。如果你在使用的过程中遇到任何问题,或者想了解更具体的用法,随时可以再来问我。