iptables
配置 Linux 内核防火墙规则,控制网络数据包的过滤、转发和地址转换
语法
iptables [-t table] command chain rule-specification
参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
-A |
追加规则到链末尾 | |
常用 |
-I |
插入规则到链开头 | |
常用 |
-D |
删除指定规则 | |
常用 |
-L |
列出所有规则 | |
常用 |
-F |
清空所有规则 | |
常用 |
-P |
设置链的默认策略 | |
常用 |
-j |
指定动作(ACCEPT/DROP/REJECT) | |
常用 |
-p |
指定协议(tcp/udp/icmp) | |
常用 |
示例
查看所有规则(数字格式,带行号)
iptables -L -n --line-numbers
允许 80 端口入站流量
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
允许指定网段访问
iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
只允许内网 SSH 访问
iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/8 -j ACCEPT
允许已建立连接的回包
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
保存当前规则(重启后生效需要额外配置)
iptables-save > /etc/iptables.rules
技巧
- 规则按顺序匹配,第一条匹配的规则生效
- 修改前先 iptables-save 备份,出问题可以恢复
- 现代系统推荐使用 nftables 或 firewalld 替代
- 远程操作防火墙时务必先放行 SSH,否则可能锁死自己