返回列表 发布新帖
查看: 9|回复: 0

iptables 命令详解

发表于 3 天前 | 查看全部 |阅读模式

这里或许是互联网从业者的最后一片净土,随客社区期待您的加入!

您需要 登录 才可以下载或查看,没有账号?立即注册

×
iptables 是 Linux 系统上功能强大的防火墙和网络包过滤工具,它是 Netfilter 项目的一部分。下面我将从核心概念、命令结构现代替代方案等方面进行详细讲解。
一、核心概念
要理解 iptables,必须先理解它的几个核心组成部分:

  • 表是规则的容器,根据规则的不同功能被分为不同的表。最常用的有三个:

    • filter 表:默认表。负责过滤数据包,决定是否允许数据包通过。核心功能。
    • nat 表:用于网络地址转换(NAT)。例如,修改数据包的源或目标地址,实现共享上网(SNAT)或端口转发(DNAT)。
    • mangle 表:用于修改数据包的 IP 头信息(如 TTL、TOS 等)。通常用于高级网络操作,日常使用较少。


  • 链是规则的集合,规则按顺序在链上排列。数据包会依次与链上的规则进行匹配。内置的五条链对应着数据包流经的不同时机:

    • INPUT:处理发往本机的数据包。
    • OUTPUT:处理从本机发出的数据包。
    • FORWARD:处理经过本机路由的数据包(当本机作为路由器时)。
    • PREROUTING:在数据包进入防火墙后、路由决策之前进行处理(主要用于 DNAT)。
    • POSTROUTING:在数据包离开防火墙前、路由决策之后进行处理(主要用于 SNAT)。

  • 规则
    规则是具体的匹配条件和动作。当数据包匹配了规则的条件,就会执行规则指定的动作。
  • 动作
    当数据包匹配一条规则后,所执行的操作称为“目标”。常见的有:

    • ACCEPT:接受数据包,允许其通过。
    • DROP:丢弃数据包,没有任何响应。从发送端看,就像数据包丢失了一样。
    • REJECT:拒绝数据包,并向发送端返回一个错误消息(如 connection refused)。
    • SNAT:源地址转换。
    • DNAT:目标地址转换。
    • MASQUERADE:一种特殊的 SNAT,用于动态 IP(如拨号上网)的环境。
    • LOG:将匹配的数据包信息记录到系统日志中,然后继续匹配下一条规则。

关系总结:表 里面包含 链,链 里面包含 规则。
二、命令语法结构
基本的命令语法如下:
  1. iptables [-t 表名] 命令选项 [链名] [规则匹配条件] [-j 目标动作]
复制代码
  • -t 表名:指定要操作的表,如 filter, nat, mangle。如果省略,默认为 filter 表。
1. 命令选项
用于指定要执行的操作,如添加、删除规则等。
  • -A / --append:在链的末尾追加一条新规则。

  1. iptables -A INPUT -s 192.168.1.100 -j DROP
复制代码
  • -I / --insert:在链的指定位置插入一条新规则。如果不指定位置,默认插入为第一条。

  1. iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT # 在 INPUT 链的第一条插入
复制代码
  • -D / --delete:从链中删除一条规则。可以通过规则内容或编号来删除。
  1. iptables -D INPUT -s 192.168.1.100 -j DROP # 按内容删除
  2. iptables -D INPUT 2 # 按编号删除(编号由 iptables -L --line-numbers 查看)
复制代码
  • -L / --list:列出指定链中的所有规则。
  1. iptables -L # 列出 filter 表所有链的规则
  2. iptables -t nat -L # 列出 nat 表所有链的规则
  3. iptables -L INPUT --line-numbers # 列出 INPUT 链的规则并显示行号
复制代码
  • -F / --flush:清空指定链中的所有规则(相当于重置)。
  1. iptables -F INPUT # 清空 INPUT 链
  2. iptables -F # 清空所有链
复制代码
  • -P / --policy:设置链的默认策略。所有不匹配任何规则的数据包将按此策略处理。
  1. iptables -P INPUT DROP # 将 INPUT 链的默认策略设置为 DROP(极度小心!)
复制代码
  • -N / --new-chain:创建一条用户自定义链。
  • -X / --delete-chain:删除一条用户自定义链。

2. 常见规则匹配条件
  • -p / --protocol:指定协议,如 tcp, udp, icmp, all。
  • -s / --source:指定源 IP 地址或网段。
  • -d / --destination:指定目标 IP 地址或网段。
  • -i / --in-interface:指定数据包进入的网络接口(如 eth0, wlan0),常用于 INPUT、FORWARD、PREROUTING 链。
  • -o / --out-interface:指定数据包离开的网络接口,常用于 OUTPUT、FORWARD、POSTROUTING 链。
  • --sport:指定源端口(必须与 -p tcp 或 -p udp 一起使用)。
  • --dport:指定目标端口(必须与 -p tcp 或 -p udp 一起使用)。
  • -m / --match:加载扩展模块,提供更强大的匹配功能。

    • -m state --state <状态>:匹配连接状态,如 NEW(新连接),ESTABLISHED(已建立的连接),RELATED(相关的连接,如 FTP 的数据连接)。
    • -m multiport:匹配多个端口。
    • -m limit:限制匹配速率,常用于防止日志爆满。

3. 目标动作
如前所述,-j 后面跟动作,如 ACCEPT, DROP, REJECT, LOG, SNAT, DNAT 等。

总结
iptables 是一个功能强大但复杂的工具。使用时请务必注意:
  • 先规划再操作,尤其是在远程连接时,错误的规则可能导致你无法连接到服务器。
  • 理解表和链的流向是成功配置的关键。
  • 生产环境中,设置默认策略为 DROP 时要极其小心,务必先放行 SSH 等管理端口和 ESTABLISHED 流量。
  • 及时保存规则。

希望这份详解能帮助你更好地理解和使用 iptables。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2001-2025 Suike Tech All Rights Reserved. 随客交流社区 (备案号:津ICP备19010126号) |Processed in 0.125819 second(s), 11 queries , Gzip On, MemCached On.
关灯 在本版发帖返回顶部
快速回复 返回顶部 返回列表