是否考虑过使用 nftables 直接管理网络规则,或者探索容器化场景下的CNI插件实现流量管控?
如何通过 firewalld 在 Rocky Linux 9 中允许特定应用的流量?
回答
| 共 5 个
在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
。
推荐
热门问答
部分内容依据人工智能生成,仅供参考,可能有误请注意甄别