悠悠楠杉
Linux防火墙基石:iptables基础语法与配置指南
一、iptables架构解析
作为Linux内核集成的包过滤系统,iptables通过规则链(Chains)和表(Tables)的层级结构实现网络流量控制。其核心包含三张表:
- filter表(默认):负责数据包过滤
- nat表:处理网络地址转换
- mangle表:修改数据包头部信息
每条链对应数据包传输的关键节点:
- INPUT:处理进入本机的数据
- OUTPUT:处理本机发出的数据
- FORWARD:处理经本机转发的数据
二、基础语法规范
iptables命令遵循标准结构:
bash
iptables [-t 表名] 命令选项 链名 [规则匹配] -j 目标动作
常用命令选项
| 选项 | 功能说明 |
|------|--------------------------|
| -A | 在链尾追加规则 |
| -I | 在指定位置插入规则 |
| -D | 删除特定规则 |
| -L | 列出当前规则 |
| -F | 清空链中所有规则 |
| -P | 设置链的默认策略 |
典型匹配条件
bash
-p tcp/udp/icmp # 协议类型
--dport 22 # 目标端口
-s 192.168.1.0/24 # 源IP段
-i eth0 # 输入网卡
-m state --state NEW # 连接状态
三、实战配置示例
1. 基础防护规则
bash
允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
开放SSH端口
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
默认拒绝所有入站流量
iptables -P INPUT DROP
2. NAT转发配置
实现内网机器通过网关访问外网:bash
启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
配置源地址转换
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT
3. 端口映射案例
将外网8080端口映射到内网服务器80端口:
bash
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.100:80
iptables -t nat -A POSTROUTING -p tcp -d 192.168.1.100 --dport 80 -j SNAT --to 网关IP
四、规则持久化技巧
临时规则重启后会丢失,需通过工具保存:
- RHEL/CentOS:
bash
service iptables save
- Debian/Ubuntu:
bash
apt install iptables-persistent
netfilter-persistent save
五、调试与排错
查看规则生效顺序:
bash iptables -L -n --line-numbers
监控实时流量匹配:
bash iptables -A INPUT -j LOG --log-prefix "[IPTABLES DEBUG] " tail -f /var/log/syslog
测试规则有效性:
bash nc -zv 目标IP 端口号
掌握iptables需要理解其"匹配即停止"的工作机制,建议通过白名单方式逐步构建安全策略。对于复杂环境,可考虑结合ipset管理IP集合提升规则执行效率。