在 CentOS 上使用 iptables 写规则,通常分为几个步骤:查看规则 → 写规则 → 保存规则 → 开机生效。下面按常见场景给你示例。
iptables -L -n -v
-L:列出规则-n:以数字显示 IP/端口-v:详细信息查看某个表(如 nat):
iptables -t nat -L -n -v
iptables -F
iptables -X
iptables -Z
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -s 192.168.1.100 -j ACCEPT
iptables -A INPUT -s 10.0.0.5 -j DROP
或拒绝并回包:
iptables -A INPUT -s 10.0.0.5 -j REJECT
允许 ping:
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
禁止 ping:
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
例如把公网 8080 转到内网 192.168.1.10:80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.10:80
iptables -t nat -A POSTROUTING -j MASQUERADE
需要开启转发:
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
⚠️ 注意:
设置 INPUT DROP 前,一定要先允许 SSH,否则会断连!
service iptables save
规则保存到:
/etc/sysconfig/iptables
yum install iptables-services
systemctl enable iptables
systemctl start iptables
service iptables save
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
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
如果你用的是 CentOS 7+,我也可以告诉你 firewalld 和 iptables 的区别,或者直接帮你写一份生产环境规则。