一、iptables基础概念
iptables是Linux系统中最强大的网络流量控制工具,通过构建规则链(chains)和规则表(tables)实现数据包过滤、NAT转换和流量整形。其核心架构包含:
- 表(Tables):filter(默认)、nat、mangle、raw
- 链(Chains):INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING
- 规则(Rules):由匹配条件和动作(target)组成
二、常用命令速查表
| 功能分类 | 命令示例 | 说明 |
|---|---|---|
| 查看规则 | iptables -L -n -v | -n禁用域名解析,-v显示详细信息 |
| 添加规则 | iptables -A INPUT -p tcp --dport 22 -j ACCEPT | 允许22端口入站 |
| 删除规则 | iptables -D INPUT 1 | 删除INPUT链第一条规则 |
| 保存规则 | iptables-save > /etc/iptables.rules | 持久化配置 |
三、实战案例解析
案例1:SSH端口保护
# 允许特定IP访问SSH
iptables -A INPUT -p tcp -s 192.168.1.100 --dport 22 -j ACCEPT
# 限制连接速率(每分钟6次)
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 6 -j DROP
案例2:NAT网络地址转换
# 启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 配置SNAT(适用于动态公网IP)
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
# 配置DNAT(端口转发)
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8080 -j DNAT --to 192.168.1.100:80
四、性能优化技巧
| 优化项 | 命令示例 | 效果对比 |
|---|---|---|
| 规则顺序优化 | 高频规则前置 | 处理速度提升40% |
| 使用ipset | ipset create blacklist hash:ip | 复杂规则处理效率提升10倍 |
| 连接跟踪优化 | net.netfilter.nf_conntrack_max = 65536 | 并发连接数提升3倍 |
重要提示:生产环境修改iptables前建议:
- 使用iptables-save备份当前规则
- 在测试环境验证新规则
- 避免在高峰时段修改关键规则
FAQ常见问题大全
Q1: 如何查看当前iptables规则计数器?
A1: 使用iptables -L -v -n命令,其中-v参数会显示每个规则匹配的数据包和字节数统计。
Q2: 为什么添加的规则不生效?
A2: 可能原因包括:规则顺序错误(后添加的规则可能被先匹配的规则覆盖)、链默认策略为DROP、未保存规则导致重启失效、模块未加载(如需要modprobe ip_conntrack)。
Q3: 如何实现端口范围过滤?
A3: 使用多端口匹配扩展:iptables -A INPUT -p tcp --dport 8000:9000 -j ACCEPT,或使用多个单端口规则组合。
Q4: 如何防止IP欺骗攻击?
A4: 添加反向路径过滤规则:
# 启用严格模式
echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter
# 或通过iptables实现
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A INPUT -s 127.0.0.0/8 ! -i lo -j DROP
Q5: 如何清空所有iptables规则?
A5: 执行以下命令组合(谨慎操作):
iptables -F
iptables -X
iptables -Z
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
香港云服务器首购