意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议
配置详情
本产品仅限新用户首购专享!每人限购1台,续费5折
当前配置
数据中心: {{ getconfigInfoArea(productDetailInfo) }}
套餐规格: 2 核 2 G
带宽:
系统盘 {{ validateMySplit(ProductVM.getProductappointInfoBykey(productDetailInfo,'云系统盘'),'|',1) }} 性能型
IP 数 1 个
可选配置
操作系统:
VPC:
安全组:
购买时长:
1 月
我已阅读并同意《恒创科技服务协议》
购买前请阅读协议并勾选同意

iptables命令详解:从基础到高级的防火墙配置指南

来源:佚名 编辑:佚名
2026-02-15 23:53:16

一、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前建议:
  1. 使用iptables-save备份当前规则
  2. 在测试环境验证新规则
  3. 避免在高峰时段修改关键规则

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
    

本网站发布或转载的文章均来自网络,其原创性以及文中表达的观点和判断不代表本网站。
上一篇: Linux分区命令全解析:从基础到高级的磁盘管理指南 下一篇: 远程桌面连接失败全解析:从诊断到修复的完整指南