是否考虑过使用 nftables 直接管理网络规则,或者探索容器化场景下的CNI插件实现流量管控?
如何通过 firewalld 在 Rocky Linux 9 中允许特定应用的流量?
回答
| 共 6 个
先确定应用用的端口或服务名,然后打开终端,用sudo firewall-cmd --add-service=服务名 --permanent(比如http)或者sudo firewall-cmd --add-port=端口/协议 --permanent(比如8080/tcp)。最后firewall-cmd --reload生效。没预定义服务的话要去/etc/firewalld/services里自己建个xml配置文件,装完直接重载就行。
在Rocky Linux 9中通过firewalld允许特定应用流量,需结合应用程序的端口/协议或预定义服务配置。步骤如下:
-
确认应用端口/协议:
- 例如应用使用TCP端口8080,运行
ss -tulnp | grep 应用名确认。
- 例如应用使用TCP端口8080,运行
-
方法一(预定义服务):
- 查看内置服务列表:
firewall-cmd --get-services - 若存在对应服务(如http),执行:
firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --reload
- 查看内置服务列表:
-
方法二(自定义端口):
- 直接开放端口:
firewall-cmd --zone=public --add-port=8080/tcp --permanent firewall-cmd --reload
- 直接开放端口:
-
方法三(自定义服务):
- 创建XML文件
/etc/firewalld/services/myapp.xml,定义端口和协议。 - 重载服务并添加:
firewall-cmd --reload firewall-cmd --zone=public --add-service=myapp --permanent firewall-cmd --reload
- 创建XML文件
-
验证配置:
firewall-cmd --zone=public --list-all检查规则是否生效。
注意:
- 所有操作需root权限,
--permanent参数保证重启后生效 - 若应用涉及SELinux,需同步配置
semodule或semanage策略
- 使用
firewall-cmd --add-service=<服务名>或指定端口--add-port=<端口/协议>并添加--permanent参数持久化。2. 执行firewall-cmd --reload使配置生效。
-
确认应用端口及协议:通过应用文档或运行命令(如
ss -tulnp | grep 应用名)确定所需开放的协议(TCP/UDP)及端口号。 -
检查预定义服务:执行
firewall-cmd --get-services查看是否存在与应用匹配的预定义服务(如http/ssh)。若存在,直接使用服务名更安全便捷。 -
添加规则(二选一):
- 通过服务名添加:
sudo firewall-cmd --permanent --add-service=服务名 - 通过端口添加:
sudo firewall-cmd --permanent --add-port=端口号/协议(如 8080/tcp)
- 通过服务名添加:
-
重载防火墙:
sudo firewall-cmd --reload -
验证规则:
sudo firewall-cmd --list-all # 查看当前区域生效规则 -
特殊场景:若需限制来源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=区域名参数 - 若应用使用临时端口(如数据库连接),需额外开放对应端口范围
-
确定应用服务或端口:检查应用使用的协议(TCP/UDP)及端口号,或查看是否有预定义的firewalld服务(如http、ssh)。
-
添加服务规则(推荐):
sudo firewall-cmd --permanent --add-service=<服务名> # 例:sudo firewall-cmd --permanent --add-service=http -
或手动添加端口规则:
sudo firewall-cmd --permanent --add-port=<端口/协议> # 例:sudo firewall-cmd --permanent --add-port=8080/tcp -
重载防火墙生效:
sudo firewall-cmd --reload -
验证规则:
sudo firewall-cmd --list-services # 查看允许的服务 sudo firewall-cmd --list-ports # 查看允许的端口
注:若需临时规则(重启失效),去掉--permanent参数后直接--add-service或--add-port。
推荐
热门问答
部分内容依据人工智能生成,仅供参考,可能有误请注意甄别