如何通过 firewalld 在 Rocky Linux 9 中允许特定应用的流量?

问题浏览数Icon
30
问题创建时间Icon
2025-04-24 15:11:00
作者头像
shizhong77
  1. 确定应用服务或端口:检查应用使用的协议(TCP/UDP)及端口号,或查看是否有预定义的firewalld服务(如http、ssh)。

  2. 添加服务规则(推荐)

    sudo firewall-cmd --permanent --add-service=<服务名>
    # 例:sudo firewall-cmd --permanent --add-service=http
  3. 或手动添加端口规则

    sudo firewall-cmd --permanent --add-port=<端口/协议>
    # 例:sudo firewall-cmd --permanent --add-port=8080/tcp
  4. 重载防火墙生效

    sudo firewall-cmd --reload
  5. 验证规则

    sudo firewall-cmd --list-services  # 查看允许的服务
    sudo firewall-cmd --list-ports     # 查看允许的端口

:若需临时规则(重启失效),去掉--permanent参数后直接--add-service--add-port

更多回答

作者头像
zzzi77
  1. 确认应用端口及协议:通过应用文档或运行命令(如 ss -tulnp | grep 应用名)确定所需开放的协议(TCP/UDP)及端口号。

  2. 检查预定义服务:执行 firewall-cmd --get-services 查看是否存在与应用匹配的预定义服务(如 http/ssh)。若存在,直接使用服务名更安全便捷。

  3. 添加规则(二选一)

    • 通过服务名添加
      sudo firewall-cmd --permanent --add-service=服务名
    • 通过端口添加
      sudo firewall-cmd --permanent --add-port=端口号/协议(如 8080/tcp)
  4. 重载防火墙

    sudo firewall-cmd --reload
  5. 验证规则

    sudo firewall-cmd --list-all  # 查看当前区域生效规则
  6. 特殊场景:若需限制来源IP或细化规则,可使用富规则(Rich Rule):

    sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.1.0/24 port port=端口号 protocol=协议 accept'

注意

  • 默认操作区域为 public,若需指定其他区域,添加 --zone=区域名 参数
  • 若应用使用临时端口(如数据库连接),需额外开放对应端口范围
作者头像
leifeng01
  1. 使用 firewall-cmd --add-service=<服务名> 或指定端口 --add-port=<端口/协议> 并添加 --permanent 参数持久化。2. 执行 firewall-cmd --reload 使配置生效。
作者头像
sunnyplate99

在Rocky Linux 9中通过firewalld允许特定应用流量,需结合应用程序的端口/协议或预定义服务配置。步骤如下:

  1. 确认应用端口/协议

    • 例如应用使用TCP端口8080,运行 ss -tulnp | grep 应用名 确认。
  2. 方法一(预定义服务)

    • 查看内置服务列表:firewall-cmd --get-services
    • 若存在对应服务(如http),执行:
      firewall-cmd --zone=public --add-service=http --permanent
      firewall-cmd --reload
  3. 方法二(自定义端口)

    • 直接开放端口:
      firewall-cmd --zone=public --add-port=8080/tcp --permanent
      firewall-cmd --reload
  4. 方法三(自定义服务)

    • 创建XML文件 /etc/firewalld/services/myapp.xml,定义端口和协议。
    • 重载服务并添加:
      firewall-cmd --reload
      firewall-cmd --zone=public --add-service=myapp --permanent
      firewall-cmd --reload
  5. 验证配置

    • firewall-cmd --zone=public --list-all 检查规则是否生效。

注意

  • 所有操作需root权限,--permanent参数保证重启后生效
  • 若应用涉及SELinux,需同步配置semodulesemanage策略