1.2 面板打不开:端口、防火墙、安全组

先给一个判断

面板打不开,先分清是“服务没起来”还是“门没开”。 服务没起来找 1pctl status;门没开就要一道一道查:本地端口监听 → 主机防火墙 → 云安全组。三道门,少开一道都打不开。

现象分类:你属于哪一种

浏览器表现 大概率原因 第一条命令
拒绝连接(ERR_CONNECTION_REFUSED) 端口没监听,或服务没起来 ss -ltnp
一直转圈然后超时 防火墙或安全组没放行 telnet IP 端口
能打开但提示入口不存在 安全入口不对(见 1.3 节) 1pctl user-info
只有自己能打开,别人打不开 监听地址只听了 127.0.0.1 ss -ltnp

关键区分:拒绝连接 = 服务层问题;超时 = 网络层问题。这两个错的离谱了,改半天也白搭。

排查:按顺序走,别跳步

第一步:服务起来了吗

1pctl status

如果服务没起来,先看系统日志找原因:

# 1Panel 的系统服务状态
systemctl status 1panel.service

# 看最近的报错
journalctl -u 1panel.service --no-pager -n 50

服务起不来常见原因:端口被占用、配置文件被改坏、磁盘满了。

第二步:端口在监听吗

# 假设面板端口是 8090
ss -ltnp | grep 8090

正常的输出应该包含 0.0.0.0:8090(监听所有地址)。如果看到的是 127.0.0.1:8090,说明只听了本地,外面永远连不上。

本地验证一下:

curl -I http://127.0.0.1:8090

本地能通、外面不通,就是网络层的问题,继续往下查。

第三步:主机防火墙放行了吗

1Panel 能管理 Firewalld、UFW 和 iptables 三种防火墙。先确认你用的是哪种:

系统 防火墙 检查命令
RedHat / CentOS Firewalld firewall-cmd --list-ports
Ubuntu / Debian UFW ufw status
其他 iptables iptables -L -n

Firewalld 放行面板端口:

# 放行面板端口(把 8090 换成你的端口)
firewall-cmd --zone=public --add-port=8090/tcp --permanent
firewall-cmd --reload

# 确认规则在不在
firewall-cmd --list-ports

UFW 放行面板端口:

ufw allow 8090/tcp
ufw status

血泪提醒:如果你是远程连的服务器,开防火墙之前一定要先放行 SSH 端口,否则防火墙一开,你自己就锁在外面了。官方防火墙文档里专门强调了这一点。

# Firewalld 先放行 SSH
firewall-cmd --zone=public --add-port=22/tcp --permanent

# UFW 先放行 SSH
ufw allow 22/tcp

一个官方 FAQ 记录的坑:Fedora 37 上装完面板,防火墙规则加了但不生效。原因是 Fedora 37 的默认区域不是 public。改回来就好:

firewall-cmd --set-default-zone=public
firewall-cmd --reload

第四步:云安全组放行了吗

这是最容易漏的一道门,也是面板管不了的一道门。

云服务器(阿里云、腾讯云、华为云等)在系统之外还有一层安全组。你在服务器里把防火墙改出花来,安全组没放行,外面照样访问不了。

去云控制台 → 安全组 → 入方向规则 → 添加规则:

协议 端口 说明
TCP 8090(你的面板端口) 面板访问
TCP 80, 443 网站
TCP 22 SSH(别关)

验证安全组是否生效,可以用外部机器直接测:

# 在别的机器上执行
curl -I http://你的服务器IP:8090

修改面板端口

如果端口冲突或者想换一个,有两种改法:

命令行(推荐,立即生效):

1pctl update port 9999

面板里改:面板设置 → 安全 → 面板端口。

改端口的三条纪律:第一,先确认新端口没被占用(ss -ltnp | grep 9999);第二,先把新端口加进防火墙和安全组,再改;第三,改完别忘了 SSH 端口别动。顺序反了,你就会把自己锁在面板外面。

监听地址问题:只有自己能访问

如果 ss -ltnp 显示监听在 127.0.0.1,外部访问不了。可以用 1pctl 切换监听 IP:

# 监听 IPv4
1pctl listen-ip ipv4

# 监听 IPv6
1pctl listen-ip ipv6

面板里也有:面板设置 → 安全 → 监听地址。修改监听地址属于高风险操作,改之前确认 SSH 是通的,这是你最后的退路。

判断到底卡在哪一层:一张决策表

如果你懒得一道一道查,按这个顺序做,哪一步不通就是哪一层的问题:

步骤 命令 通的表现 不通说明
1. 服务 1pctl status 显示运行中 面板服务本身的问题
2. 本地端口 curl -I http://127.0.0.1:8090 返回 HTTP 状态码 端口没监听或被占用
3. 本机防火墙 firewall-cmd --list-ports / ufw status 能看到 8090 规则没加或没 reload
4. 云安全组 外部机器 curl -I http://IP:8090 返回状态码 安全组没放行

先内后外:先确认本机(第 1、2 步),再查本机防火墙(第 3 步),最后查云端(第 4 步)。跳步容易得出错误结论——比如本机端口都没监听,你去改半天安全组,纯属白忙。

用面板管理防火墙规则

确认服务器的防火墙类型后,也可以直接在 1Panel 里管:系统 → 防火墙。页面提供端口规则、端口转发、IP 规则和 iptables 高级控制。

  • 端口规则:协议(TCP/UDP/TCP+UDP)、端口、来源(所有 IP 或指定 IP)、策略(允许/拒绝);
  • 端口转发:把访问源端口的流量转到 目标 IP:目标端口,本机转发目标填 127.0.0.1;
  • IP 规则:指定 IP 的放行或屏蔽。

注意:面板能管的是主机防火墙,云安全组永远要去云控制台。另外,如果防火墙类型是 iptables,才能用“iptables 高级控制”页面;Firewalld 或 UFW 环境下这个页面会提示不支持。

一个完整的复现与修复

现象:腾讯云服务器,装完 1Panel,本地 curl 127.0.0.1:8090 正常,家里电脑浏览器打不开,一直转圈。

排查:

# 1. 服务正常
1pctl status

# 2. 端口监听正常,监听在 0.0.0.0
ss -ltnp | grep 8090

# 3. 防火墙——服务器上根本没开 firewalld
systemctl status firewalld

结论:防火墙没问题,卡在云安全组。

修复:登录腾讯云控制台 → 安全组 → 入站规则添加 TCP:8090 放行。立刻访问成功。

如果反复检查都没问题,还是打不开,先做一件事:

# 重启面板服务
1pctl restart

很多玄学问题,重启能解决一半。剩下的另一半,去 日志审计 → 系统日志 里看报错原文。

本节要点

  • 打不开先分清“拒绝连接”(服务层)还是“超时”(网络层);
  • 四步排查:1pctl status → ss -ltnp → 主机防火墙 → 云安全组;
  • 改防火墙前先放行 SSH 端口,别把自己锁外面;
  • Fedora 37 防火墙规则不生效,把默认区域改成 public;
  • 改面板端口的顺序:先放行新端口,再改;
  • 云安全组是面板管不了的一层,最容易被漏掉。

更完整的防火墙操作说明见 1Panel 官方文档:防火墙。

下一节:面板能打开了,但密码忘了、安全入口忘了、或者被授权 IP 限制挡住了——这些都属于“登不进”,解决办法和“打不开”完全不同。