1. 简介

iptables 是 Linux 系统中用于配置 Netfilter 规则的工具,可实现高级网络流量控制。掌握其高级功能能显著提升服务器安全性和网络管理效率。

iptables 规则链

2. 核心概念

  • 链(Chains):INPUT(入站)、OUTPUT(出站)、FORWARD(转发)、PREROUTING(路由前)、POSTROUTING(路由后)
  • 表(Tables):filter(默认表)、nat(网络地址转换)、mangle(数据包修改)
  • 规则(Rules):匹配条件 + 动作(ACCEPT/DROP/REJECT)

3. 高级规则技巧

3.1 多条件匹配

iptables -A INPUT -s 192.168.1.0/24 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

📌 该规则允许来自内网的 SSH 连接,并结合状态检测模块(state)增强安全性

3.2 防火墙策略

  • 默认丢弃所有流量
    iptables -P INPUT DROP
    iptables -P FORWARD DROP
    iptables -P OUTPUT DROP
    
  • 允许特定协议
    iptables -A INPUT -p icmp -j ACCEPT  # 允许 ICMP 流量
    

4. NAT 配置(网络地址转换)

4.1 路由转发设置

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

🌐 该规则将本地网络流量伪装成公网 IP,适用于路由器场景

4.2 端口转发示例

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000

🔄 将外部 HTTP 流量(端口 80)重定向到本地服务端口 3000

5. 扩展阅读

6. 注意事项

  • 修改规则前建议备份:iptables-save > /root/iptables_backup.txt
  • 使用 -m conntrack 模块可增强连接跟踪能力
  • 避免过度复杂化规则,定期清理冗余条目
防火墙策略