firewalld总结
# Firewalld 日常使用手册
# 目录
- Firewalld 概述
- 安装和启动 Firewalld
- 基本命令
- 区域和服务管理
- 配置 NAT 规则
- 配置自定义服务
- 常见问题排查
# 1. Firewalld 概述
Firewalld 是一个动态管理防火墙的工具,支持网络区域定义,用于分配不同的信任级别。它提供了丰富的命令行接口和图形界面工具,用于配置规则和策略。
# 2. 安装和启动 Firewalld
# 安装
sudo yum install firewalld # 对于 CentOS/RHEL
sudo apt-get install firewalld # 对于 Ubuntu/Debian
1
2
2
# 启动并启用
sudo systemctl start firewalld
sudo systemctl enable firewalld
1
2
2
# 3. 基本命令
# 查看状态
sudo firewall-cmd --state
1
# 重新加载配置
sudo firewall-cmd --reload
1
# 查看当前区域设置
sudo firewall-cmd --get-active-zones
1
# 列出所有区域
sudo firewall-cmd --get-zones
1
# 4. 区域和服务管理
# 查看区域配置
sudo firewall-cmd --zone=public --list-all
1
# 添加服务到区域
sudo firewall-cmd --zone=public --permanent --add-service=http
1
# 移除服务
sudo firewall-cmd --zone=public --permanent --remove-service=http
1
# 添加端口到区域
sudo firewall-cmd --zone=public --permanent --add-port=8080/tcp
1
# 移除端口
sudo firewall-cmd --zone=public --permanent --remove-port=8080/tcp
1
# 添加 rich rule
sudo firewall-cmd --zone=public --permanent --add-rich-rule='rule family="ipv4" port port="0-65535" protocol="tcp" reject'
1
# 5. 配置 NAT 规则
# 添加 PREROUTING 规则
sudo firewall-cmd --permanent --direct --add-rule ipv4 nat PREROUTING 0 -s 172.18.2.0/24 -d 127.0.0.1 -p tcp --dport 3306 -j DNAT --to-destination 172.17.3.1:3366
1
# 添加 POSTROUTING 规则
sudo firewall-cmd --permanent --direct --add-rule ipv4 nat POSTROUTING 0 -s 172.18.2.0/24 -d 172.17.3.1 -p tcp --dport 3366 -j MASQUERADE
1
# 6. 配置自定义服务
# 创建自定义 SSH 服务
- 复制默认 SSH 服务文件
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/ssh-custom.xml
1
- 编辑自定义服务文件
sudo nano /etc/firewalld/services/ssh-custom.xml
1
修改 <port protocol="tcp" port="22"/>
行,添加新的端口,例如:
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>SSH</short>
<description>SSH Service</description>
<port protocol="tcp" port="22"/>
<port protocol="tcp" port="2222"/>
</service>
1
2
3
4
5
6
7
2
3
4
5
6
7
- 重载 Firewalld 配置
sudo firewall-cmd --reload
1
- 使用自定义服务
sudo firewall-cmd --zone=public --permanent --add-service=ssh-custom
sudo firewall-cmd --zone=public --permanent --remove-service=ssh
1
2
2
# 7. 常见问题排查
# 检查规则是否生效
sudo iptables -L -n -v
1
# 查看日志
sudo journalctl -xe
1
# 测试连接
telnet <server-ip> 22
ssh -p 2222 your_username@your_server_ip
1
2
2
# 确认防火墙配置
sudo firewall-cmd --zone=public --list-all
1
上次更新: 8/28/2024
- 01
- GPT分区使用 parted 扩展分区的操作流程 原创08-28
- 02
- VictoriaMetrics 集群版安装与配置 原创08-24
- 03
- Kubernetes (k8s) 相关名词详解 原创06-27