在Rocky Linux 9中,使用firewall-cmd
命令创建自定义规则(如添加端口或服务),通过--reload
应用更改,并使用--permanent
参数保存持久化配置。
如何通过 firewalld 在 Rocky Linux 9 中创建并应用自定义规则?
回答
| 共 4 个
作为IT架构师,建议通过以下步骤在Rocky Linux 9中通过firewalld创建并应用自定义规则:
-
理解zone与规则逻辑:
- 根据业务需求选择默认zone(如public/trusted)或新建独立zone,实现规则隔离。
- 使用
firewall-cmd --get-default-zone
验证当前生效区域。
-
创建自定义zone(可选):
sudo firewall-cmd --permanent --new-zone=custom_app sudo firewall-cmd --reload
-
添加定制规则:
- 开放端口:
sudo firewall-cmd --permanent --zone=custom_app --add-port=8080/tcp
- 富规则(Rich Rules):
sudo firewall-cmd --permanent --zone=custom_app --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="http" accept'
- 拒绝特定IP:
sudo firewall-cmd --permanent --zone=custom_app --add-rich-rule='rule family="ipv4" source address="10.0.0.5" reject'
- 开放端口:
-
应用与绑定接口:
sudo firewall-cmd --zone=custom_app --change-interface=eth0 --permanent sudo firewall-cmd --reload
-
验证与调试:
- 使用
firewall-cmd --zone=custom_app --list-all
检查规则加载 - 通过
journalctl -u firewalld -f
监控实时日志 - 测试连通性时建议结合
tcpdump
进行包捕获分析
- 使用
架构建议:
- 生产环境推荐将基础规则写入
/etc/firewalld
目录的XML配置文件实现版本化管理 - 复杂规则建议通过Ansible等自动化工具部署,确保环境一致性
- 对于容器化应用,优先考虑与podman/docker网络集成,避免多层NAT干扰
是否考虑过直接使用 nftables 管理网络规则,它提供了更底层的控制?
在Rocky Linux 9中通过firewalld创建自定义规则,可使用firewall-cmd
命令。例如允许特定IP访问SSH端口:
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept'
sudo firewall-cmd --reload
延伸知识点:富规则(Rich Rules)详解 富规则是firewalld中灵活定义复杂规则的语法结构,包含以下核心元素:
- action:accept/reject/drop(如
accept
) - family:ipv4/ipv6网络协议族
- source/destination:地址范围(如
source address="192.168.1.0/24"
) - service:预定义服务名称(如
service name="http"
) - port/protocol:自定义端口和协议(如
port="8080" protocol="tcp"
) 完整示例:rule family="ipv4" source address="10.0.0.0/8" service name="https" log prefix="https_log" level="info" limit value="2/m" accept
表示允许来自10.x.x.x的HTTPS请求,记录日志并限制每分钟2条记录。
推荐
热门问答
部分内容依据人工智能生成,仅供参考,可能有误请注意甄别