温馨提示×

iptables如何使用链进行过滤

小樊
84
2025-02-15 10:25:07
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

iptables 是 Linux 系统中用于配置内核防火墙的一个命令行工具。它允许系统管理员定义规则,这些规则决定了如何处理经过网络接口的数据包。iptables 规则被组织成不同的表(table),每个表包含几个预定义的链(chain),每个链包含一系列的规则。

以下是 iptables 中常用的表和链:

  • 表(table):

    • filter: 默认表,用于控制数据包的访问控制。
    • nat: 用于网络地址转换(NAT)。
    • mangle: 用于特殊的数据包修改。
    • raw: 用于配置豁免连接跟踪的规则。
  • 链(chain):

    • INPUT: 处理进入本机的数据包。
    • FORWARD: 处理通过本机转发的数据包。
    • OUTPUT: 处理从本机发出的数据包。
    • PREROUTING: 在路由决策之前处理数据包(主要用于 DNAT)。
    • POSTROUTING: 在路由决策之后处理数据包(主要用于 SNAT)。

使用 iptables 进行过滤的基本步骤如下:

  1. 选择表:通常情况下,我们会使用 filter 表,因为它是默认表,专门用于过滤。

  2. 选择链:根据需要处理的流量类型选择合适的链。例如,如果你想过滤进入本机的数据包,你会选择 INPUT 链。

  3. 添加规则:使用 iptables 命令添加规则。每条规则都会匹配特定的数据包特征,并指定一个动作来处理匹配的数据包。

下面是一些基本的 iptables 命令示例:

  • 允许所有进入本机的 SSH 连接:

    iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    
  • 阻止所有进入本机的 ICMP 请求(ping):

    iptables -A INPUT -p icmp -j DROP
    
  • 允许所有已经建立的连接和相关的数据包通过:

    iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
  • 阻止来自特定 IP 地址的所有流量:

    iptables -A INPUT -s 192.168.1.100 -j DROP
    
  • 保存规则:在某些 Linux 发行版中,你需要保存 iptables 规则以确保它们在重启后仍然有效。

    iptables-save > /etc/iptables/rules.v4
    

请注意,iptables 命令的语法和选项可能会根据不同的 Linux 发行版和内核版本有所不同。在使用 iptables 时,建议查阅你所使用的系统的手册页(man page)以获取最准确的信息。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读:如何使用grep进行多条件过滤

0