首页/系统/Linux 内核与性能调优速查/nc 连通性探测与端口检查
网络栈调优98 条

nc 连通性探测与端口检查

从指定主机验证目标端口可达性: 服务端本地看监听, 客户端侧看路径与防火墙。

nc 端口探测

nc(netcat)常用于端口连通性探测:从客户端侧发起一次 TCP 连接,确认目标地址与端口能否建立连接。它只能回答「这一段路是否通」这一个问题,结论要完整还需要在服务端确认监听状态与防火墙放行情况。

基本信息

TCP 探测nc -vz -w 3 10.0.0.2 8080
UDP 探测nc -vuz -w 3 10.0.0.2 161
超时控制-w 指定秒数,避免长时间挂住
服务端核对ss -ltnp 'sport = :8080'
结论边界TCP 握手成功只说明端口可达,不代表应用协议正常

典型使用场景

  • 新增服务上线前确认端口在客户端侧可达
  • 排查应用报「连接被拒绝」还是「连接超时」
  • 验证防火墙规则调整后的放行效果
  • 容器与宿主之间确认端口映射是否生效
  • 变更后回归测试,确认端口访问未被切断

双向验证

双向验证
nc -vz -w 3 app.internal 8080    # 客户端侧探测 TCP 可达性
ss -ltnp 'sport = :8080'         # 服务端核对监听地址与进程
nc -vuz -w 3 10.0.0.2 161        # UDP 探测,结论仅限 UDP 可达性
curl -sS -m 3 http://app.internal:8080/healthz   # 用真实请求验证应用可用

结果与含义

结果含义下一步
succeededTCP 连接建立成功继续验证应用协议层
Connection refused目标端口没有监听或被拒绝核对服务端监听与安全策略
超时无响应报文被丢弃或路径不通检查路由与中间设备策略
UDP 无回显UDP 无连接,探测结果不确定结合服务端抓包判断

排查顺序

  • 先在服务端确认进程与监听地址是否正确
  • 再从客户端侧探测,区分拒绝与超时
  • 然后逐段检查安全组、防火墙与中间设备策略
  • 最后用真实应用请求验证协议层是否正常
监听地址的差异会直接影响结果:只监听 127.0.0.1 的服务从外部永远不可达,而端口探测显示拒绝,容易被误判为防火墙问题。
UDP 是无连接协议,探测无法得到明确的成功或失败信号,结果只能作为参考,必须结合服务端抓包或应用日志判断。

易错点

  • 把单侧探测结果当成两端结论,未区分监听状态与防火墙放行
  • 用 UDP 探测的结果直接推断应用可用性
  • 忽略监听地址为回环地址这一常见原因,误判为防火墙拦截
  • 只探测端口不验证应用协议,端口通但服务返回错误的情况被漏掉

数据来源与参考

  • man nc
  • man ss
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌