温馨提示×

centos iptables怎么写规则

小樊
56
2026-09-11 15:09:00
栏目: 智能运维

在 CentOS 上使用 iptables 写规则,通常分为几个步骤:查看规则 → 写规则 → 保存规则 → 开机生效。下面按常见场景给你示例。


一、基础操作

1. 查看当前规则

iptables -L -n -v
  • -L:列出规则
  • -n:以数字显示 IP/端口
  • -v:详细信息

查看某个表(如 nat):

iptables -t nat -L -n -v

2. 清空所有规则(谨慎)

iptables -F
iptables -X
iptables -Z

二、常见规则示例

1. 允许已建立连接

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

2. 允许本地回环

iptables -A INPUT -i lo -j ACCEPT

3. 开放 SSH(22 端口)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

4. 开放 HTTP / HTTPS

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

5. 允许某个 IP 访问所有端口

iptables -A INPUT -s 192.168.1.100 -j ACCEPT

6. 禁止某个 IP

iptables -A INPUT -s 10.0.0.5 -j DROP

或拒绝并回包:

iptables -A INPUT -s 10.0.0.5 -j REJECT

7. 限制 ping(ICMP)

允许 ping:

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

禁止 ping:

iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

8. 端口转发(DNAT)

例如把公网 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,否则会断连!


四、保存规则(CentOS 6 / 7 差异)

CentOS 6

service iptables save

规则保存到:

/etc/sysconfig/iptables

CentOS 7(使用 iptables-service)

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 的区别,或者直接帮你写一份生产环境规则。

0 踩