开始输入,可搜索发票、服务、域名、工单,以及 更多...
部署网站、数据库或其他应用后,外部无法访问往往是因为防火墙没有放行对应端口。本文介绍 Linux 防火墙配置中最常用的两种工具:CentOS、Rocky Linux、AlmaLinux 默认的 firewalld,以及 Ubuntu、Debian 常用的 ufw,讲解如何查看状态、放行端口、限制来源 IP 和删除规则。所有命令以 root 执行。
同一台服务器上只应使用一种防火墙管理工具,同时启用 firewalld 和 ufw 会造成规则混乱。先检查哪一个正在运行:RHEL 系通常是 firewalld,Ubuntu 通常是 ufw(默认可能未启用),部分 Debian 精简镜像两者都没有安装。
systemctl is-active firewalld # CentOS / Rocky / AlmaLinux
ufw status # Debian / Ubuntu
firewalld 以“区域(zone)”管理规则,服务器默认网卡一般属于 public 区域。安装并启动后,用 --list-all 可以看到当前放行的服务和端口,默认通常只放行了 ssh。
# Install and start firewalld (CentOS / Rocky / AlmaLinux)
dnf install -y firewalld
systemctl enable --now firewalld
firewall-cmd --state
firewall-cmd --get-active-zones
firewall-cmd --list-all
可以按服务名(如 http、https)放行,也可以直接按端口号或端口范围放行。--permanent 表示写入永久配置,必须执行 --reload 才会生效;不加 --permanent 的规则立即生效但重启后丢失。
# Open by service name
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
# Open by port / range
firewall-cmd --permanent --add-port=8080/tcp
firewall-cmd --permanent --add-port=10000-10100/udp
# Apply and verify
firewall-cmd --reload
firewall-cmd --list-ports
firewall-cmd --list-services
数据库、管理后台等敏感端口不建议对全网开放,可以用 rich rule 只允许指定 IP 或网段访问。不再需要的端口用 --remove-port 删除。
# Allow MySQL 3306 only from one subnet
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="198.51.100.0/24" port port="3306" protocol="tcp" accept'
# Remove a port
firewall-cmd --permanent --remove-port=8080/tcp
firewall-cmd --reload
ufw 是 Ubuntu 提供的简化防火墙工具,语法直观。启用前一定要先放行 SSH,然后设置默认策略:拒绝所有入站、允许所有出站。执行 ufw enable 时会提示可能中断现有 SSH 连接,确认已放行 SSH 后输入 y。
# Debian / Ubuntu
apt update && apt install -y ufw
# Allow SSH FIRST (use your custom port if you changed it)
ufw allow 22/tcp
ufw default deny incoming
ufw default allow outgoing
ufw enable
ufw status verbose
ufw 用 allow 放行端口,端口范围需要指定协议;from 参数可以限制来源 IP。删除规则时,先用 numbered 查看编号再按编号删除最方便。
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 10000:10100/udp
ufw allow from 198.51.100.0/24 to any port 3306 proto tcp
# Delete a rule by number
ufw status numbered
ufw delete 3
先用 ss -tlnp 确认程序在监听该端口,并且监听地址是 0.0.0.0 而不是 127.0.0.1;再检查程序自身配置和云平台层面的安全策略。仍无法解决可提交工单。
技术上可以(systemctl stop firewalld 或 ufw disable),但不建议在公网服务器上这样做。更好的做法是只放行需要的端口,其他一律拒绝。
通过 VNC 控制台登录,执行 firewall-cmd --permanent --add-service=ssh && firewall-cmd --reload 或 ufw allow 22/tcp 放行 SSH 端口即可恢复。
如按以上步骤操作后仍无法解决,欢迎提交工单联系 IMIDC 7×24 技术支持。提交时请注明服务器 IP、操作系统、已执行的命令和报错截图,工程师可以更快定位问题。