Linux 端口监控

使用 lsof

$ sudo lsof -i :7890
COMMAND     PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
sshd    2572960   lx    9u  IPv4 35637087      0t0  TCP localhost:7890 (LISTEN)
sshd    2572960   lx   13u  IPv4 39517231      0t0  TCP localhost:7890->localhost:44446 (CLOSE_WAIT)
sshd    2572960   lx   49u  IPv4 39437826      0t0  TCP localhost:7890->localhost:51354 (ESTABLISHED)
curl    2980815   lx    5u  IPv4 39533618      0t0  TCP localhost:51354->localhost:7890 (ESTABLISHED)
  1. 第一条表示 sshd 正在监听 7890 端口。
  2. 第二条表示远端(localhost:44446)已经发送了关闭请求,但是 sshd 还没有完全关闭连接。
  3. 第三条表示 sshd 的 7890 端口已与 localhost:51354 端口建立连接
  4. 第四条表示 curl 的 51354 端口已与 localhost:7890 建立连接

也就是说,curl 正在通过 sshd 的 7890 端口代理流量。

  • LISTEN:本地程序正在监听端口,等待建立连接。
  • ESTABLISHED:表示一个活动的连接。
  • CLOSE_WAIT:远端(箭头右边)已经发送了关闭请求,但本地程序还没有完全关闭连接。

使用 netstat

$ sudo netstat -tulnp | grep ':22'
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      963/sshd: /usr/sbin

使用 ss

ss 是一种比 netstat 性能更高的工具

$ sudo ss -tulnp | grep ':22'
tcp   LISTEN 0      128                0.0.0.0:22         0.0.0.0:*    users:(("sshd",pid=963,fd=3))
  • t: 显示 TCP 套接字使用情况
  • u: 显示 UDP 套接字使用情况
  • l: 只显示正在监听的端口
  • n: 不解析服务名称,比如不把 22 端口显示为 ssh
  • p: 显示正在使用套接字的进程

使用 fuser

$ sudo fuser 22/tcp
22/tcp:                963 292636 292692 292957 293033
posted @ 2024-03-02 20:06  Undefined443  阅读(61)  评论(0)    收藏  举报