【iptables命令详解】iptables 是 Linux 系统中用于配置 IPv4 数据包过滤和网络地址转换(NAT)的工具,广泛应用于防火墙设置。它通过定义规则链来控制数据包的流向,是系统安全的重要组成部分。
一、iptables 基本概念总结
概念 | 说明 |
表(Table) | iptables 有四种默认表:`filter`、`nat`、`mangle` 和 `raw`,分别用于不同的功能。 |
链(Chain) | 每个表包含多个链,如 INPUT、OUTPUT、FORWARD 等,用于处理不同方向的数据包。 |
规则(Rule) | 每条规则定义了匹配条件和对应的处理动作(如 ACCEPT、DROP、REJECT)。 |
策略(Policy) | 链的默认策略,通常为 DROP 或 ACCEPT。 |
匹配条件(Match) | 可以根据源 IP、目标 IP、端口、协议等进行匹配。 |
目标(Target) | 匹配成功后执行的动作,如允许、拒绝或转发。 |
二、常用命令与示例
命令 | 功能说明 |
`iptables -L` | 列出当前所有规则 |
`iptables -L -n` | 以数字形式显示 IP 和端口 |
`iptables -L -v` | 显示详细信息(如数据包计数) |
`iptables -A INPUT -s 192.168.1.100 -j DROP` | 添加一条规则,丢弃来自 192.168.1.100 的数据包 |
`iptables -D INPUT -s 192.168.1.100 -j DROP` | 删除指定规则 |
`iptables -F` | 清空所有规则 |
`iptables -X` | 删除自定义链 |
`iptables -P INPUT DROP` | 设置 INPUT 链默认策略为 DROP |
三、iptables 表与链的关系
表(Table) | 链(Chain) | 用途 |
filter | INPUT, OUTPUT, FORWARD | 控制数据包的进出和转发 |
nat | PREROUTING, POSTROUTING, OUTPUT | 进行地址转换(如 SNAT、DNAT) |
mangle | PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING | 修改数据包头部信息 |
raw | PREROUTING, OUTPUT | 控制连接跟踪 |
四、常见操作场景
场景 | 示例命令 |
允许 SSH 访问 | `iptables -A INPUT -p tcp --dport 22 -j ACCEPT` |
禁止访问特定网站 | `iptables -A OUTPUT -d 192.0.2.1 -j DROP` |
设置 NAT 转发 | `iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE` |
限制流量速率 | `iptables -A INPUT -p tcp --dport 80 -m limit --limit 5/m -j ACCEPT` |
五、注意事项
- 规则顺序重要:iptables 是按顺序匹配规则,越靠前的规则优先级越高。
- 保存规则:使用 `iptables-save > /etc/iptables/rules.v4` 保存规则,重启后生效。
- 安全性:避免将默认策略设为 ACCEPT,应尽量采用 DROP 并逐条放行。
- 测试环境使用:在生产环境中使用前,建议在测试环境中验证规则。
六、总结
iptables 是 Linux 系统中非常强大的防火墙工具,合理配置可以有效提升系统的安全性。理解其基本结构(表、链、规则)并掌握常用命令是使用 iptables 的关键。在实际应用中,应结合具体需求制定合理的规则策略,并注意规则的顺序与安全性。