侧边栏壁纸
博主头像
lance

不为失败找借口,只为成功找方法。

  • 累计撰写 28 篇文章
  • 累计创建 0 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

iptables.md

lance
2025-02-26 / 0 评论 / 32 点赞 / 176 阅读 / 1,182 字
温馨提示:
本文最后更新于 2025-05-04,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

iptables是Linux下用于设置、维护和检查IPv4数据包过滤规则的强大工具,它是netfilter框架的一部分。iptables提供了丰富的操作命令和参数,允许用户根据具体需求配置网络流量。以下是关于iptables用法的更详细介绍:

一、iptables的基本结构

iptables基于“表”和“链”的结构来管理规则。iptables默认包含四个表(filter、nat、mangle、raw)和五个链(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING)。每个表可以包含多个链,而每个链则包含一系列规则。

二、iptables的操作命令

iptables的操作命令主要分为以下几类:

  1. 规则链管理
    • -L, --list:列出指定链中的所有规则。
    • -F, --flush:清空指定链中的所有规则。
    • -N, --new-chain:新建一条用户自定义的规则链。
    • -X, --delete-chain:删除一条用户自定义的规则链(链中必须没有规则)。
    • -P, --policy:设置指定链的默认策略。
    • -E, --rename-chain:重命名一条用户自定义的规则链。
  2. 规则管理
    • -A, --append:在指定链的末尾添加一条新的规则。
    • -I, --insert:在指定链的指定位置插入一条新的规则,默认插入到链的开头。
    • -D, --delete:删除指定链中的一条规则,可以通过规则编号或完整规则来指定。
    • -R, --replace:替换指定链中的一条规则,需要指定规则编号。
  3. 查看和保存规则
    • iptables-save:将当前的iptables规则保存到文件中,通常用于备份或迁移规则。
    • iptables-restore:从文件中加载iptables规则,通常与iptables-save配合使用。
  4. 其他命令
    • iptables -Z:将指定链中的数据包计数器归零。

三、iptables的匹配条件和动作

iptables的规则可以包含多个匹配条件和动作。匹配条件用于决定是否对数据包执行特定的动作。

  1. 匹配条件
    • 协议匹配:使用-p参数指定协议类型,如tcp、udp、icmp等。
    • 地址匹配:使用-s(源地址)和-d(目的地址)参数指定数据包的来源和目的IP地址或子网。
    • 接口匹配:使用-i(入接口)和-o(出接口)参数指定数据包进入和离开本机的网络接口。
    • 端口匹配:使用--sport(源端口)和--dport(目的端口)参数指定数据包的源端口和目的端口。
    • 状态匹配:使用-m state参数匹配数据包的连接状态,如NEW、ESTABLISHED、RELATED等。
    • 其他扩展匹配:iptables还支持多种扩展匹配模块,如multiport、limit、mac等,用于实现更复杂的匹配逻辑。
  2. 动作
    • ACCEPT:接受数据包,允许其通过。
    • DROP:丢弃数据包,不给予任何回应。
    • REJECT:拒绝数据包,并向发送方发送一个错误响应。
    • 其他动作:如REDIRECT(重定向)、MASQUERADE(地址伪装)等,用于实现更复杂的网络功能。

四、iptables的优先级和顺序

iptables的规则按照从上到下的顺序进行匹配。当一个数据包与某个规则匹配成功后,就会按照该规则的动作进行处理,并且后续的规则将不再被考虑。如果数据包没有与任何规则匹配,则按照该链的默认策略进行处理。

此外,不同表之间的优先级也是不同的。在数据包处理过程中,iptables会按照raw、mangle、nat、filter的顺序依次处理各个表中的规则。这意味着,如果数据包在前面的表中已经被处理(如地址转换、修改等),则后面的表可能无法再看到原始的数据包信息。

五、iptables的示例用法

以下是一些iptables的示例用法:

  • 允许所有本地回环接口的访问:iptables -A INPUT -i lo -j ACCEPT
  • 允许已建立的连接进入:iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
  • 允许指定IP地址的访问:iptables -A INPUT -s 192.168.0.10 -j ACCEPT
  • 拒绝所有未匹配规则的访问:iptables -A INPUT -j REJECT
  • 设置默认策略为DROP:iptables -P INPUT DROP
32

评论区