警告:本文为理论指导手册,所有示例命令均需验证后使用。生产环境请谨慎操作!

一、命令规范与最佳实践

1. 参数规范建议

# 旧写法(某些系统可能报错)
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

# 新写法(推荐显式指定模块)
iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

2. 在线工具推荐

iptables 命令生成器https://cmdgenerator.org/zh/cmd-generators/iptables


二、核心参数修正版

匹配条件参数(带模块声明)

条件参数模块依赖正确写法示例
--dport-m tcp/udp-p tcp -m tcp --dport 80
--sport-m tcp/udp-p udp -m udp --sport 53
--state-m state-m state --state ESTABLISHED
--ctstate-m conntrack-m conntrack --ctstate NEW
--mac-source-m mac-m mac --mac-source 00:0c:29:xx:xx:xx
--limit-m limit-m limit --limit 100/sec

三、关键实战案例修正

案例 1:SSH 防护(带模块声明)

# 放行内网新连接并记录IP
iptables -A INPUT -p tcp -m tcp --dport 22 -s 192.168.1.0/24 \
         -m conntrack --ctstate NEW \
         -m recent --set --name SSH_WHITELIST

# 60秒内超过3次新连接自动封禁
iptables -A INPUT -p tcp -m tcp --dport 22 \
         -m conntrack --ctstate NEW \
         -m recent --rcheck --seconds 60 --hitcount 3 \
         --name SSH_WHITELIST -j DROP

# 允许正常SSH连接
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT

案例 2:Web 服务器防护(DDoS 防御)

# 速率限制新连接
iptables -A INPUT -p tcp -m tcp -m multiport --dports 80,443 \
         -m conntrack --ctstate NEW \
         -m limit --limit 100/s --limit-burst 200 -j ACCEPT

# 丢弃超限请求
iptables -A INPUT -p tcp -m tcp -m multiport --dports 80,443 \
         -m conntrack --ctstate NEW -j DROP

四、四表五链原理图解

@startuml
skinparam monochrome true

title iptables 数据包处理流程

start
:数据包到达网卡;
-> PREROUTING(raw/mangle/nat);

if (路由决策) then (目标为本机)
  -> INPUT(mangle/filter);
  :本机处理;
  -> OUTPUT(mangle/nat/filter);
else (需要转发)
  -> FORWARD(mangle/filter);
endif

-> POSTROUTING(mangle/nat);
:数据包离开网卡;
end
@enduml

五、高级配置模板库

1. 企业级防火墙模板

#!/bin/bash
# 清空所有规则
iptables -F
iptables -t nat -F
iptables -t mangle -F

# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 放行本地回环
iptables -A INPUT -i lo -j ACCEPT

# 允许已建立连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# ICMP控制(允许ping入但限速)
iptables -A INPUT -p icmp -m icmp --icmp-type 8 \
         -m limit --limit 10/sec -j ACCEPT

2. NAT 网关模板

# 启用IP转发
sysctl -w net.ipv4.ip_forward=1

# MASQUERADE动态源地址转换
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# 端口转发模板(带连接跟踪)
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 8080 \
         -j DNAT --to-destination 192.168.1.100:80
iptables -A FORWARD -p tcp -d 192.168.1.100 -m tcp --dport 80 \
         -m state --state NEW,ESTABLISHED -j ACCEPT

六、专家级调试技巧

1. 规则调试命令

# 查看规则命中计数器
iptables -L -v -n --line-numbers

# 追踪特定流量(调试模式)
iptables -t raw -A PREROUTING -p tcp --dport 80 -j TRACE

2. 连接跟踪分析

# 查看活动连接
conntrack -L

# 实时监控连接事件
conntrack -E

# 清除指定连接
conntrack -D -s 192.168.1.100

七、持久化配置方案

1. 配置保存(Debian/Ubuntu)

# 安装持久化工具
apt-get install iptables-persistent

# 手动保存规则
netfilter-persistent save

2. 开机自启配置

# 保存当前规则到文件
iptables-save > /etc/iptables/rules.v4

# 恢复规则
iptables-restore < /etc/iptables/rules.v4

八、延伸学习路径

主题推荐资源难度等级
nftables 迁移迁移指南★★★★☆
eBPF 扩展Cilium 文档★★★★★
性能调优Netfilter 内核优化★★★★☆

特别提示:建议在测试环境验证所有规则后,使用 iptables-apply 工具安全部署到生产环境。

标签: 教程, iptables, 指南, 四表五链, 在线生成器

添加新评论