firewall杂记

systemctl restart firewalld //重启防火墙
firewall-cmd --reload       //重新加载防火墙配置
systemctl start firewalld.service  //开启服务
systemctl enable firewalld.service //开机制动启动
systemctl stop firewalld.service  //关闭服务
systemctl disable firewalld.service //禁止开机启动

例子:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --permanent --zone=public --add-service=http 
firewall-cmd --reload

–add-service #添加的服务

–zone #作用域

–add-port=80/tcp #添加端口,格式为:端口/通讯协议

–permanent #永久生效,没有此参数重启后失效

在每次修改 端口和服务后 /etc/firewalld/zones/public.xml 文件就会被修改 所以也可以在文件中之间修改 然后重新加载

firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4"  source address="192.168.0.4/24" service name="http" accept"//设置某个ip 访问某个服务
firewall-cmd --permanent --zone=public --remove-rich-rule="rule family="ipv4"  source address="192.168.0.4/24" service name="http" accept" //删除配置

firewall-cmd --permanent --add-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'    //设置某个ip访问某个端口
firewall-cmd --permanent --remove-rich-rule 'rule family=ipv4 source address=192.168.0.1/2 port port=80 protocol=tcp accept'    //删除配置


firewall-cmd --query-masquerade # 检查是否允许伪装IP
firewall-cmd --add-masquerade   # 允许防火墙伪装IP
firewall-cmd --remove-masquerade# 禁止防火墙伪装IP

firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080   # 将80端口的流量转发至8080
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.1.0.1 # 将80端口的流量转发至192.168.0.1
firewall-cmd --add-forward-port=proto=80:proto=tcp:toaddr=192.168.0.1:toport=8080 # 将80端口的流量转发至192.168.0.1的8080端口

firewall-cmd –state //获取 firewalld 状态
firewall-cmd –state && echo “Running” || echo “Not running” //状态输出
firewall-cmd –reload //重新加载防火墙
firewall-cmd –get-zones //获取支持的区域列表
firewall-cmd –get-services //获取所有支持的服务
firewall-cmd –list-all-zones //列出全部启用的区域的特性
firewall-cmd [–zone=] –add-interface= //将接口增加到区域
firewall-cmd [–zone=] –change-interface= //修改接口到区域
firewall-cmd [–zone=] –remove-interface= //删除接口到区域
firewall-cmd [–zone=] –query-interface= //查询区域中的接口

### 检查 firewalld 服务状态并启动 在大多数 Linux 系统中,firewalld 服务默认处于启用状态。如果发现 firewalld 无法使用,首先需要检查其服务状态。使用以下命令查看当前状态: ```bash systemctl status firewalld ``` 如果服务未运行,可以通过以下命令启动服务并设置开机自启: ```bash sudo systemctl start firewalld sudo systemctl enable firewalld ``` 如果服务被屏蔽(masked),则需要先解除屏蔽状态,然后重新加载 systemd 配置[^1]。 --- ### 解除 firewalld 的屏蔽状态 屏蔽服务意味着它被符号链接到 `/dev/null`,导致系统无法正常启动该服务。可以通过以下命令解除屏蔽: ```bash sudo systemctl unmask firewalld ``` 解除屏蔽后,重新加载 systemd 配置以确保更改生效: ```bash sudo systemctl daemon-reexec ``` 完成后,尝试再次启动 firewalld 服务: ```bash sudo systemctl start firewalld ``` 如果仍然无法启动,可以使用 `pkill` 强制终止 firewalld 进程,然后重新启动服务: ```bash sudo pkill -f firewalld sudo systemctl start firewalld ``` --- ### 确认 firewalld 是否已安装 如果 firewalld 未安装或被卸载,将导致服务无法使用。可以通过以下命令检查 firewalld 是否已安装: ```bash rpm -q firewalld ``` 如果未安装,使用以下命令重新安装: ```bash sudo yum install firewalld ``` 安装完成后,启用并启动服务: ```bash sudo systemctl enable firewalld --now sudo systemctl start firewalld ``` 确保服务成功启动后,可以继续验证其功能是否正常。 --- ### 检查是否存在其他防火墙服务冲突 有时系统中可能同时存在多个防火墙管理工具,例如 `iptables` 或 `ufw`,这可能导致冲突。可以通过以下命令检查是否有其他防火墙服务正在运行: ```bash systemctl list-units | grep -i firewall ``` 如果发现有其他防火墙服务,可以尝试停止并禁用它们: ```bash sudo systemctl stop <firewall-service-name> sudo systemctl disable <firewall-service-name> ``` 确保系统中只保留一个防火墙服务,以避免冲突导致的问题。 --- ### 验证 firewalld 功能是否正常 在 firewalld 服务成功启动后,可以使用以下命令验证其功能是否正常: 查看当前防火墙状态: ```bash firewall-cmd --state ``` 查看默认区域: ```bash firewall-cmd --get-default-zone ``` 临时开放端口(例如 8080): ```bash firewall-cmd --add-port=8080/tcp ``` 永久开放端口: ```bash firewall-cmd --add-port=8080/tcp --permanent firewall-cmd --reload ``` 这些命令可以确认 firewalld 是否能够正常响应规则修改并应用到系统中。 --- ### 处理与 Docker 的冲突问题 如果系统中运行了 Docker,并且 firewalld 无法正常工作,可能是由于 Docker 与 firewalld 存在冲突。可以在 `/etc/docker/daemon.json` 文件中添加以下配置,以避免 firewalld 与 Docker 的 iptables 规则冲突: ```json { "registry-mirrors": ["http://hub-mirror.c.163.com"], "iptables": false } ``` 修改完成后,重启 Docker 服务: ```bash sudo systemctl restart docker ``` 此外,建议开启 firewalld 的 NAT 转发功能,以解决 Docker 容器访问外部网络受限的问题。 --- ### 总结 当 firewalld 无法使用时,可以通过检查服务状态、解除屏蔽、重新加载 systemd 配置、确认 firewalld 是否已安装、检查与其他防火墙服务的冲突、验证功能是否正常以及处理与 Docker 的冲突等方法进行排查和修复。通过上述步骤,通常可以解决 firewalld 服务无法启动或使用的问题,并恢复正常操作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值