插件窝 干货文章 linux的netstat能否按IP筛选

linux的netstat能否按IP筛选

显示 连接 筛选 197    来源:    2025-05-15

是的,Linux 的 netstat 命令可以通过管道结合其他工具(如 grep)来按 IP 地址筛选输出。以下是几种常见的用法:


1. 筛选特定本地 IP 的连接

netstat -tuln | grep '192.168.1.100'
  • -t:显示 TCP 连接
  • -u:显示 UDP 连接
  • -l:仅显示监听状态的端口
  • -n:禁用主机名解析(直接显示 IP)
  • grep:筛选包含 192.168.1.100 的行(本地或远程 IP)。

2. 精确筛选目标远程 IP

netstat -antp | grep '192.168.1.200'
  • -a:显示所有连接(包括已建立和非监听状态)
  • -p:显示进程信息(需 root 权限)
  • 筛选与 192.168.1.200 通信的所有连接。

3. 仅显示特定协议的连接(如 TCP)

netstat -atn | grep '10.0.0.5'
  • -a-t 组合:仅显示 TCP 连接。

4. 使用 awk 提取特定字段

如果只想查看远程 IP(第 5 列)或本地 IP(第 4 列):

netstat -ant | awk '$5 ~ /203.0.113.42/'
  • $5 ~ /IP/:匹配第 5 列(远程 IP:Port)中的 IP。

5. 替代工具:ss(推荐)

现代 Linux 系统推荐使用 ss(更快速,功能类似):

ss -tunp dst 192.168.1.100
  • dst:指定目标 IP,也可用 src 匹配源 IP。

注意事项:

  1. 权限问题:显示进程信息(-p)需 root 权限。
  2. IPv6 支持:若需过滤 IPv6,调整 grep 模式(如 grep '::1')。
  3. 连接状态:结合 grep 可筛选状态(如 grep 'ESTABLISHED')。

示例输出:

$ netstat -antp | grep '192.168.1.1'
tcp        0      0 192.168.1.100:22      192.168.1.1:65432     ESTABLISHED 1234/sshd: user
  • 显示与 192.168.1.1 的所有 TCP 连接及进程信息。

如果需要更复杂的筛选,可以结合 awkss 的过滤语法进一步处理。