防火墙与端口转发
防火墙管理
自动识别宿主机上正在使用的防火墙实现,并给出对应的图形化增删规则:
| 实现 | 说明 |
|---|---|
| firewalld | CentOS / RHEL / Fedora 系 |
| ufw | Ubuntu / Debian 系 |
| nftables | 新一代 netfilter 前端 |
| iptables | 传统 netfilter |
- 规则增删、启停、状态查看
- 读取主机已有规则:不改动、不覆盖,面板打开即可看到宿主机上现存的全部规则
- 规则生效状态:每条规则标注「已生效」或「已配置未生效」
- 权限检测:执行前先判断能不能做,权限不足就不下发命令
- 规则体检:一键检查现有规则列表,指出重复规则、放行任意来源、被前面规则覆盖而永不生效、以及已配置未生效的规则
- 可用环境变量
GOPANEL_FIREWALL_BACKEND强制指定实现(默认自动探测) - 「端口监控」里会标注端口是否已放行,方便对照排查
iptables 的规则读取范围
iptables 没有独立的规则存储,规则就是当前生效的那份链式列表。面板用 iptables-save 读取全量表与全部链,并按「表 / 链 / 规则序号」展示:
| 维度 | 范围 |
|---|---|
| 表 | filter、nat、mangle、raw、security |
| 链 | 内置链(INPUT / FORWARD / OUTPUT / PREROUTING / POSTROUTING)+ 用户自定义链(如 DOCKER) |
| 字段 | 动作、协议、端口、来源、目标,以及原始目标(自定义链跳转、MASQUERADE 等) |
两点说明:
- 链内顺序即匹配顺序,列表按链分组后原样展示,不做重排;
filter/INPUT、nat/PREROUTING这类「表 / 链」标签就是规则所在的真实位置。 - 面板自己的端口转发规则(nat 表
GOPANEL_FWD链及其跳转)不在访问规则列表里重复出现, 它们属于「端口转发」页签。 - 删除按「表 + 链 + 序号」精确定位(
iptables -t <表> -D <链> <序号>), 删的是你看到的那一条;链的默认策略(如:INPUT DROP)不提供删除(不支持改策略)。
规则生效状态
面板读到的规则来自两个地方,含义不同:
| 来源 | 是什么 | 什么时候影响流量 |
|---|---|---|
| 运行时规则 | 内核里正在匹配流量的那份 | 立刻 |
| 持久化配置 | 重启后用来恢复规则的落盘配置 | 重启 / 重载后 |
两者不一致时,列表会把它显式标出来:
- 已生效:规则已进入内核,当前流量按此规则匹配;
- 已配置未生效:规则写进了持久化配置,但运行时还没有它(典型场景:手工
iptables -A加了规则却没保存、firewalld 写了永久规则而运行时未同步), 重启、重新加载防火墙后才会起作用。
防火墙服务本身未启用(如 ufw 未 enable)时,规则同样标为「已配置未生效」—— 配置再完整也不拦流量。
权限检测
防火墙命令需要 root 或等价的 capabilities。面板在执行任何改配置的命令之前 先做权限检测(进程身份 + 只读探测),权限不足时不下发命令,直接返回 「缺什么、怎么补」:
| 检测项 | 依据 |
|---|---|
| 进程身份 | 有效用户 ID 是否为 0;非 root 时读 /proc/self/status 的 CapEff 判断 CAP_NET_ADMIN |
| 实际读写 | 用只读命令各读一次规则,能读说明权限确实到位(识别 caps 授予的场景) |
结论分三档:可读写(root 或持有 CAP_NET_ADMIN)、只读(能读不能改)、 无权限(都读不到)。页面会明确展示当前档位;写操作在只读 / 无权限时会被拒绝 (HTTP 403),不会出现「命令报错但看不出原因」或「命令成功了却作用在错误对象上」。
补齐权限:以 root 运行面板(或授予 CAP_NET_ADMIN 能力)。
规则体检
「访问规则 → 规则体检」对现有规则只读检查,不改动任何规则,输出四类问题:
| 问题 | 判定 | 建议 |
|---|---|---|
| 重复规则 | 方向、动作、协议、端口、来源、目标完全相同的规则出现多份 | 保留一条,其余删除;来自多套工具叠加时统一由一处维护 |
| 宽放行 | 放行动作且来源与目标均为任意;整表都如此时升级为「需关注」 | 收窄来源网段,或补上默认拒绝策略 |
| 影子规则 | 同一方向上,更靠前的规则已完全覆盖(协议更宽、端口范围更大、来源网段包含、动作不限) | 删除无效规则,或把它调整到覆盖规则之前 |
| 已配置未生效 | 规则在持久化配置里,但运行时没有它(见上文「规则生效状态」) | 需要就让防火墙重新生效(重启 / reload),不再需要则从配置中删除 |
多出的规则不影响最终匹配结果,但会让规则表难以维护——体检的价值是让「加了却没生效」和「随手复制粘贴出来的重复项」显式暴露出来。
端口转发
图形化管理本机端口转发规则(参考 1Panel 的交互):
- 源端口 / 目标地址与端口
- 协议(TCP / UDP)
- 规则启停与删除
作用范围
部署形态为二进制宿主机安装,面板直接管理本机防火墙,无需任何额外配置: 防火墙、端口转发、SSH 管理、服务管理、端口监控都以宿主机为目标,开箱可用。
