firewalld是centos7开始提供的管理防火墙工具,提供了一个动态管理的防火墙,当然低层仍然调用的是 netfilter 。
一、区域(zone)
firewalld将网卡对应到不同的区域(zone),zone默认共有9个,block,dmz,drop,external,home,internal,public,trusted,work。
二、服务(services)
/usr/lib/firewalld/services目录中,保存了另一类配置文件,每个文件对应一项具体的网络服务,如 ssh 服务。
对应的配置文件中记录了各项服务所使用的 tcp/udp 端口,最新的 firewalld 中默认已经定义了 70 多种服务供我们使用。
修改服务的配置只需将/usr/lib/firewalld/services中的配置文件复制到/etc/firewalld/services中修改即可。
三、firewalld常用命令
安装
1 | yum install firewalld |
启动
1 | systemctl start firewalld |
停止
1 | systemctl stop firewalld |
查看版本
1 | firewall-cmd --version |
查看状态
1 | firewall-cmd --state |
重新载入
1 | firewall-cmd --reload |
查看firewalld支持的service
1 | firewall-cmd --get-services |
查看当前zone加载的service
1 | firewall-cmd --list-services |
查看区域信息
1 | firewall-cmd --get-active-zone |
查看活动的区域
1 | firewall-cmd --get-active-zones |
查看指定接口所属区域
1 | firewall-cmd --get-zone-of- interface =ens33 |
查看默认区域
1 | firewall-cmd --get- default -zone |
设置默认区域
1 | firewall-cmd --set- default -zone public |
获取所有的区域
1 | firewall-cmd --get-zones |
拒绝所有包
1 | firewall-cmd --panic-on |
取消拒绝状态
1 | firewall-cmd --panic-off |
查看是否拒绝
1 | firewall-cmd --query-panic |
将接口添加到区域
1 | firewall-cmd --zone= public --add- interface =eth0 |
将接口从区域中删除
1 | firewall-cmd --zone= public --remove- interface =eth0 |
修改接口所属区域
1 | firewall-cmd --zone=dmz --change- interface =eth0 |
查询区域中是否包含某接口
1 | firewall-cmd --zone= public --query- interface =eth0 |
四、打开端口 (最常用)
查看区域打开的所有端口
1 | firewall-cmd --zone= public --list-ports |
加入一个端口到区域
1 | firewall-cmd --zone= public --add-port=8080/tcp |
从区域中删除一个端口
1 | firewall-cmd --zone= public --remove-port=8080/tcp |
永久生效加上 --permanent 然后 reload 防火墙
注意,如果加上 --permanent 参数后,会把该配置写入到指定的区域配置文件中,比如:/etc/firewalld/zones/public.xml
五、如何打开一个服务
打开一个服务,类似端口可视化,服务需要在配置文件中添加,/etc/firewalld/services目录下。
查询区域中启用的服务
1 | firewall-cmd --zone= public --list-services |
将ssh服务添加到public区域
1 | firewall-cmd --zone= public --add-service=ssh |
移除服务
1 | firewall-cmd --zone= public --remove-service=ssh |
六、如何设置端口转发
要使用端口转发,需开启防火墙伪装
1 | firewall-cmd --add-masquerade --permanent |
如:我们想把访问本机192.168.1.222的3306端口转发到192.168.1.111主机的3306端口上
1、先把本机的3306端口放开
1 | firewall-cmd --permanent --zone= public --add-port=3306/tcp |
2、把访问本地3306端口的请求转发到192.168.1.111主机的3306上
1 | firewall-cmd --permanent --zone= public --add-forward-port=port=3306:proto=tcp:toaddr=192.168.1.111:toport=3306 |
这样当我们访问222主机的3306端口时,实际访问的是111主机的3306端口。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决