插件窝 干货文章 linux查看半连接是哪个进程

linux查看半连接是哪个进程

SYN RECV 状态 连接 115    来源:    2025-04-05

Linux 查看半连接(SYN_RECV)状态的进程

在 Linux 中查看处于半连接(SYN_RECV)状态的连接及其对应进程,可以使用以下几种方法:

方法一:使用 netstat + ss + awk

netstat -tunap | grep SYN_RECV | awk '{print $7}' | cut -d'/' -f1 | xargs -I{} ps -p {} -o pid,cmd

或者使用更现代的 ss 命令:

ss -tunap state syn-recv | awk '{print $6}' | cut -d':' -f2 | cut -d'/' -f1 | xargs -I{} ps -p {} -o pid,cmd

方法二:使用 lsof 命令

sudo lsof -iTCP -sTCP:SYN_RECV

方法三:使用 netstat 和 grep

sudo netstat -tulnp | grep SYN_RECV

方法四:使用 conntrack 工具(适用于 NAT 环境)

sudo conntrack -L | grep SYN_RECV

解释

  1. SYN_RECV 状态表示服务器已经收到客户端的 SYN 包并发送了 SYN-ACK 包,正在等待客户端的 ACK 完成三次握手。

  2. 这些命令会显示:

    • 进程 ID (PID)
    • 进程名称
    • 本地和远程 IP 地址及端口
    • 连接状态
  3. 需要 root 权限才能查看所有进程的网络连接信息。

注意事项

  • 大量 SYN_RECV 状态连接可能是 SYN Flood 攻击的迹象
  • 正常情况下,SYN_RECV 状态连接应该很快完成握手或超时消失
  • 如果某些服务持续出现大量 SYN_RECV 状态,可能需要调整内核参数如 net.ipv4.tcp_synack_retries