必须先启动并启用firewalld服务,再用--permanent参数永久开放80、443、3306等端口,最后执行--reload重载规则;否则端口无法持久生效且外部仍不可访问。

您正在使用银河麒麟系统,但Web服务无法被外部访问、MySQL数据库连不上远程客户端、或者安全扫描提示“关键端口被拦截”,这通常是因为防火墙已启用但未放行80、443、3306等业务端口。必须先确认防火墙服务运行状态,再针对具体端口执行永久开放操作,两个环节缺一不可。
确认firewalld服务已启动并处于活跃状态
银河麒麟V10桌面版与服务器版默认使用firewalld作为防火墙后端,若服务未运行,后续所有端口命令均无效。【必须先执行此步,否则添加端口会报错“not running”】
在终端中运行:sudo systemctl status firewalld。
若输出中显示 active (running),说明服务正常;若为 inactive (dead),则需依次执行:sudo systemctl start firewalld → sudo systemctl enable firewalld(确保开机自启)。
永久开放TCP端口(如80、443、3306)
firewalld的规则分“运行时”和“永久”两种,仅加--permanent才能保证重启后依然有效。漏掉该参数,机器一重启端口就自动关闭。
方法一:单条命令逐个开放
执行:sudo firewall-cmd --permanent --add-port=80/tcp
执行:sudo firewall-cmd --permanent --add-port=443/tcp
执行:sudo firewall-cmd --permanent --add-port=3306/tcp
方法二:一条命令批量开放
执行:sudo firewall-cmd --permanent --add-port=80-443/tcp → 该写法会同时开放80至443之间所有TCP端口,不推荐用于生产环境;更稳妥的是用空格分隔多个独立端口:sudo firewall-cmd --permanent --add-port=80/tcp --add-port=443/tcp --add-port=3306/tcp。
重载规则使端口立即生效
这一步不可跳过。--permanent只是把规则写进配置文件,不执行重载,端口依然不通。
执行:sudo firewall-cmd --reload。
验证是否成功:分别运行 sudo firewall-cmd --query-port=80/tcp、sudo firewall-cmd --query-port=443/tcp、sudo firewall-cmd --query-port=3306/tcp,每条命令返回 yes 即表示已放行。











