iptables常用命令

发布时间 2023-10-19 17:46:06作者: 敬畏虚空

iptables是用于配置Linux系统中的防火墙规则的命令行工具。其命令格式和常用参数的意思如下:

iptables [选项] <链名> <规则规范>

常用选项:

  • -A:添加规则到指定链的末尾。
  • -D:从指定链中删除规则。
  • -I:插入规则到指定链的开头。
  • -L:列出指定链的规则。
  • -F:清除指定链中的所有规则。
  • -P:设置指定链的默认策略。
  • -s:指定源IP地址/网络。
  • -d:指定目标IP地址/网络。
  • -p:指定协议。
  • -j:指定要执行的动作(ACCEPT、DROP、REJECT等)。
    iptables支持以下几种表:
  1. filter表:默认表,用于过滤数据包。在INPUT、OUTPUT和FORWARD链中使用,可以根据源IP地址、目标IP地址、端口号等条件过滤或处理数据包。

  2. nat表:用于网络地址转换(NAT),主要用于修改数据包的源IP地址和目标IP地址。在PREROUTING、POSTROUTING和OUTPUT链中使用。

  3. mangle表:用于修改数据包的特定字段,如TTL(Time to Live)值、标记(mark)等。可以在PREROUTING、INPUT、FORWARD、OUTPUT和POSTROUTING链中使用。

  4. raw表:用于处理原始数据包,通常不进行连接跟踪或状态检查。可以在PREROUTING、OUTPUT和NOTRACK链中使用。

  5. security表:用于进行强制访问控制(MAC)过滤。只在有SELinux的系统中使用。

  6. raw和mangle表的子表:raw和mangle表都支持使用子表进行更细粒度的操作和规则设置。

每个表都包含多个预定义的链,如filter表包含INPUT、OUTPUT和FORWARD链。用户也可以创建自定义的链,并将其插入到某个表中,以实现更灵活的规则管理。

根据具体的需求和网络配置,选择适当的表来进行配置和管理规则,以实现对数据包的过滤、修改、转发等操作。
常用链名:

  • INPUT:用于处理进入本机的数据包。
  • OUTPUT:用于处理从本机发出的数据包。
  • FORWARD:用于处理经过本机转发的数据包。
  • PREROUTING:用于在数据包路由之前进行处理。
  • POSTROUTING:用于在数据包路由之后进行处理。

规则规范:

规则规范用于指定要匹配的条件和要执行的动作,例如:

  • -i:指定输入接口。
  • -o:指定输出接口。
  • --dport:指定目标端口。
  • --sport:指定源端口。
  • -m state --state:指定匹配数据包的状态。
  • -j:指定要执行的动作,如ACCEPT、DROP、REJECT等。

数据处理时,表的顺序:
R->M->N->F

以上仅为iptables命令的基本格式和常用参数的简要说明,实际使用中可以根据需要灵活组合和配置规则。