在上一篇文章中,我们介绍了CentOS Firewalld的基本概念和常用命令。本篇将深入探讨防火墙规则配置的高级技巧,包括富规则、端口转发、masquerade等,并通过实战案例帮助您彻底掌握Firewalld。
Firewalld使用区域来管理信任级别。常见区域包括public(默认)、internal、dmz、drop等。每个区域可以绑定网络接口,并定义允许的服务、端口和规则。使用firewall-cmd --get-default-zone查看当前默认区域。
富规则允许更精细的控制,比如基于源IP、目标端口、协议和日志的规则。例如,只允许192.168.1.100访问SSH,而拒绝其他:
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="192.168.1.100" service name="ssh" accept"firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" service name="ssh" reject"firewall-cmd --reload 这里我们用到了富规则,第一条允许特定IP,第二条拒绝其他SSH请求。注意规则的顺序非常重要,允许规则必须在拒绝之前。
端口转发可以将到达本机某端口的流量转发到另一台机器的指定端口。例如,将80端口转发到内部Web服务器192.168.1.10的8080端口:
firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.10firewall-cmd --reload 如果需要进行源NAT(共享上网),需要开启masquerade:
firewall-cmd --permanent --zone=public --add-masqueradefirewall-cmd --reload 假设我们有一台CentOS服务器,需要提供Web服务(HTTP/HTTPS),同时SSH仅允许管理员IP(203.0.113.5)访问,并将外部8080端口转发到内部Tomcat的8080端口。
firewall-cmd --set-default-zone=publicfirewall-cmd --permanent --zone=public --remove-service={ssh,http,https} --remove-port=... firewall-cmd --permanent --zone=public --add-service=httpfirewall-cmd --permanent --zone=public --add-service=https firewall-cmd --permanent --zone=public --remove-service=sshfirewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="203.0.113.5" service name="ssh" accept" firewall-cmd --permanent --zone=public --add-forward-port=port=8080:proto=tcp:toaddr=192.168.1.100:toport=8080 firewall-cmd --reloadfirewall-cmd --list-all 现在,服务器只允许特定IP的SSH,开放了80/443,并将8080转发到内部服务器。完美!
通过以上命令,您可以快速定位问题。例如,如果端口转发不生效,检查是否开启了IP转发:sysctl net.ipv4.ip_forward需要为1。
本文深入介绍了CentOS Firewalld的高级特性,包括防火墙规则配置、端口转发和富规则的使用,并通过实战案例展示了如何保护Web服务器。掌握这些技能,您就能轻松应对复杂的网络环境。希望本文对您有所帮助!
本文由主机测评网于2026-03-06发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20260329201.html