在 CentOS 中开启 iptables(而不是默认的 firewalld),通常需要以下几个步骤。下面以 CentOS 7/8 为例说明(CentOS 6 略有不同,末尾补充)。
CentOS 7/8 默认使用 firewalld:
systemctl stop firewalld
systemctl disable firewalld
yum install -y iptables-services
systemctl start iptables
systemctl enable iptables
如果是 IPv6,还需要:
systemctl start ip6tables
systemctl enable ip6tables
systemctl status iptables
iptables -L -n
iptables -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# HTTP
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
# HTTPS
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
service iptables save
# 或
/usr/libexec/iptables/iptables.init save
service iptables start
chkconfig iptables on
Unit iptables.service not found说明没装 iptables-services:
yum install -y iptables-services
必须执行 service iptables save
如果你告诉我 CentOS 具体版本 或 使用场景(服务器/内网/云主机),我可以给你更精准的配置。