找一条命令/
EN
☰

← 返回工作台全部命令

03 / FIELD NOTES

端口从外面连不上

按顺序检查:有没有在监听、监听在哪个地址、UFW、Docker,最后是云安全组。

为什么这样选

“端口不通”几乎都出在这四层之一:没在监听、只监听 127.0.0.1、主机防火墙、云厂商安全组。从里往外查,每一步排除一层。

什么时候用

服务在服务器上能用,从你的电脑访问却超时或被拒绝。

前置条件

  • 把 25774 换成你的端口
  • root 或 sudo

步骤

有没有在监听?监听在哪个地址?

只读
PORT=25774
ss -lntp | grep ":$PORT "

跑完应看到: 没有输出:没有程序在监听。127.0.0.1:端口:只对本机开放,用 SSH 隧道或反向代理访问。0.0.0.0 或 [::]:所有网卡都在监听。

本机能访问吗?

只读
curl -sS -o /dev/null -w "%{http_code}\n" "http://127.0.0.1:$PORT"

跑完应看到: 返回 200、302 等状态码,说明服务本身是好的。

容器端口映射

只读
docker ps --format 'table {{.Names}}\t{{.Ports}}'

跑完应看到: 0.0.0.0:端口->... 是公开的;127.0.0.1:端口->... 只在本机。Docker 发布的端口不受 UFW 控制。

主机防火墙

只读
if command -v firewall-cmd >/dev/null 2>&1 && firewall-cmd --state >/dev/null 2>&1; then firewall-cmd --list-all; elif command -v ufw >/dev/null 2>&1; then ufw status verbose; else echo "no host firewall tool active"; fi

跑完应看到: Rocky/Alma/RHEL 看 firewalld 的 ports/services;Debian/Ubuntu 看 UFW。主机防火墙启用时,非 Docker 服务需要放行规则。

会改什么

只读。以上都正常时,去云厂商控制台的安全组或防火墙放行端口,它在服务器之外。