linux

iptables规则匹配条件有哪些

小樊
54
2025-09-18 06:55:16
栏目: 编程语言

iptables 是 Linux 系统中用于配置内核防火墙的一个命令行工具。它允许系统管理员定义规则,以决定如何处理经过网络接口的数据包。iptables 规则可以基于多种条件进行匹配,以下是一些常见的匹配条件:

  1. 协议(Protocol):

    • -p tcp:匹配 TCP 协议的数据包。
    • -p udp:匹配 UDP 协议的数据包。
    • -p icmp:匹配 ICMP 协议的数据包。
    • -p esp:匹配 ESP 协议的数据包。
    • -p ah:匹配 AH 协议的数据包。
    • -p sctp:匹配 SCTP 协议的数据包。
    • -p gre:匹配 GRE 协议的数据包。
    • -p ipv6:匹配 IPv6 协议的数据包。
    • -p all:匹配所有协议的数据包。
  2. 源地址(Source Address):

    • -s <IP地址>-s<网络>/<掩码>:匹配来自特定 IP 地址或网络的数据包。
  3. 目的地址(Destination Address):

    • -d <IP地址>-d<网络>/<掩码>:匹配发往特定 IP 地址或网络的数据包。
  4. 输入/输出接口(Inbound/Outbound Interface):

    • -i <网络接口>:匹配进入指定网络接口的数据包。
    • -o <网络接口>:匹配从指定网络接口发出的数据包。
  5. 传输方向(Direction):

    • INPUT:匹配目标地址为本地主机的数据包。
    • OUTPUT:匹配源地址为本地主机的数据包。
    • FORWARD:匹配经过本地主机转发(既不是源也不是目标)的数据包。
  6. 端口(Port):

    • --dport <端口号>:匹配目的端口为目标端口号的数据包。
    • --sport <端口号>:匹配源端口为源端口号的数据包。
    • --dport <端口范围>:匹配目的端口在指定范围内的数据包。
    • --sport <端口范围>:匹配源端口在指定范围内的数据包。
  7. 接口类型(Interface Type):

    • --physdev-in <物理设备>:匹配通过指定物理设备进入的数据包。
    • --physdev-out <物理设备>:匹配通过指定物理设备发出的数据包。
  8. 连接状态(Connection State):

    • -m conntrack --ctstate <状态>:匹配特定连接状态的数据包,如 NEWESTABLISHEDRELATEDINVALID
  9. 用户(User):

    • -m owner --uid-owner <用户ID>:匹配由特定用户拥有的进程产生的数据包。
    • -m owner --gid-owner <组ID>:匹配由特定组拥有的进程产生的数据包。
  10. 限制速率(Limit):

    • -m limit --limit <速率>:限制匹配规则的规则数量,例如每分钟最多允许 5 个数据包。

这些匹配条件可以通过 -m 选项与相应的模块一起使用,以实现更复杂的匹配逻辑。例如,要匹配来自特定 IP 地址并且目的端口为 80 的 TCP 数据包,可以使用以下命令:

iptables -A INPUT -p tcp -s <IP地址> --dport 80 -j ACCEPT

请注意,iptables 规则的顺序很重要,因为它们是按顺序处理的。一旦匹配到一个规则,就会执行该规则指定的动作,而不会继续检查后续规则。因此,通常需要将最具体的规则放在前面,将更通用的规则放在后面。

0
看了该问题的人还看了