在 CentOS 里,“防火墙”通常指 firewalld(CentOS 7 及以后默认)。下面按常见场景给你一套实用写法。
# 查看 firewalld 是否运行
systemctl status firewalld
# 启动并设置开机自启
systemctl start firewalld
systemctl enable firewalld
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
firewall-cmd --add-port=53/udp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
很多服务 firewalld 已内置规则:
# 开放 http / https
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
查看支持的服务:
firewall-cmd --get-services
firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.1.100"
port protocol="tcp" port="22" accept'
firewall-cmd --reload
firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="10.0.0.5" reject'
firewall-cmd --reload
把 80 转发到 8080:
firewall-cmd --permanent --zone=public \
--add-forward-port=port=80:proto=tcp:toport=8080
firewall-cmd --reload
如果你用的是 CentOS 6:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
service iptables save
service iptables restart
# 查看所有规则
firewall-cmd --list-all
# 查看指定 zone
firewall-cmd --zone=public --list-all
# 临时关闭(不推荐)
systemctl stop firewalld
firewall-cmd --permanent --add-service=ssh
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
如果你能告诉我:
我可以直接给你精确命令。