linux iptables介绍
iptables概述
iptables是Linux内核集成的防火墙工具,用于管理网络数据包的过滤、网络地址转换(NAT)和端口转发。它通过规则链(chains)和表(tables)组织规则,实现对网络流量的控制。
核心组件
1. 表(Tables)
- filter表:默认表,用于数据包过滤(如允许/拒绝流量)。
- nat表:用于网络地址转换(如端口转发、IP伪装)。
- mangle表:修改数据包头部信息(如TTL、TOS)。
- raw表:用于免除连接跟踪机制。
2. 链(Chains)
- INPUT:处理进入本机的数据包。
- OUTPUT:处理本机发出的数据包。
- FORWARD:处理经过本机转发的数据包。
- PREROUTING(nat表):在路由决策前修改数据包。
- POSTROUTING(nat表):在路由决策后修改数据包。
常用命令格式
iptables -t <表名> <操作> <链名> [规则条件] -j <动作>
- 操作:
-A
(追加规则)、-D
(删除规则)、-I
(插入规则)。 - 动作:
ACCEPT
(允许)、DROP
(丢弃)、REJECT
(拒绝并返回错误)。
示例规则
允许SSH访问(22端口)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
拒绝所有其他入站流量
iptables -A INPUT -j DROP
启用IP伪装(NAT)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
规则持久化
iptables规则默认重启后失效,需通过工具保存:
- Debian/Ubuntu:
iptables-save > /etc/iptables.rules iptables-restore < /etc/iptables.rules
- RHEL/CentOS:
service iptables save
注意事项
- 规则按顺序匹配,第一条匹配的规则生效。
- 谨慎操作远程服务器规则,避免锁定自己。
- 新版本Linux推荐使用
nftables
作为替代,但iptables仍广泛支持。