有没有在监听?监听在哪个地址?
只读PORT=25774
ss -lntp | grep ":$PORT "跑完应看到: 没有输出:没有程序在监听。127.0.0.1:端口:只对本机开放,用 SSH 隧道或反向代理访问。0.0.0.0 或 [::]:所有网卡都在监听。
03 / FIELD NOTES
按顺序检查:有没有在监听、监听在哪个地址、UFW、Docker,最后是云安全组。
“端口不通”几乎都出在这四层之一:没在监听、只监听 127.0.0.1、主机防火墙、云厂商安全组。从里往外查,每一步排除一层。
服务在服务器上能用,从你的电脑访问却超时或被拒绝。
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 服务需要放行规则。
只读。以上都正常时,去云厂商控制台的安全组或防火墙放行端口,它在服务器之外。
{
"slug": "port-unreachable",
"risk": "safe",
"tags": [
"ports",
"firewall",
"ufw",
"firewalld",
"docker"
],
"updated": "2026-10-30",
"pathIndex": null,
"why": "“端口不通”几乎都出在这四层之一:没在监听、只监听 127.0.0.1、主机防火墙、云厂商安全组。从里往外查,每一步排除一层。",
"steps": [
{
"command": "PORT=25774\nss -lntp | grep \":$PORT \"",
"risk": "safe"
},
{
"command": "curl -sS -o /dev/null -w \"%{http_code}\\n\" \"http://127.0.0.1:$PORT\"",
"risk": "safe"
},
{
"command": "docker ps --format 'table {{.Names}}\\t{{.Ports}}'",
"risk": "safe"
},
{
"command": "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",
"risk": "safe"
}
]
}