iptables结构及使用

iptables

  • 结构
    • 表(Table)
    • 链(Chain)
    • 目标(Target)
  • 使用规则
    • 常用方法
      • NAT 相关:
      • 状态查询:

结构

表(Table)

  1. filter 表:用于过滤数据包,决定是否接受、拒绝或转发。
  2. nat 表:用于网络地址转换,修改数据包的源或目标地址。
  3. mangle 表:用于修改数据包的 TOS/DSCP 字段等。
  4. raw 表:用于配置特殊规则,如连接追踪(connection tracking)。

链(Chain)

每个表包含一系列链,每个链定义了对数据包的不同处理方式。以下是一些主要的链:

  1. INPUT: 处理进入本地系统的数据包。
  2. OUTPUT: 处理从本地系统发出的数据包。
  3. FORWARD: 处理通过系统进行的数据包转发。
  4. 用户自定义链: 你可以创建自己的链,以更灵活地组织规则。

目标(Target)

  1. ACCEPT: 允许数据包通过。
  2. DROP: 丢弃数据包,不给予任何响应。
  3. REJECT: 拒绝数据包,返回错误消息。
  4. DNAT: 目标地址转换,用于端口转发。
  5. SNAT: 源地址转换,用于修改数据包的源地址。

使用规则

规则则是按照表、链、目标的顺序进行匹配数据包的操作,相当于在哪里,匹配哪一部分,怎样处理。
规则结构如下:

iptables -A <CHAIN> [OPTIONS] -j <TARGET>

:链的名称,如 INPUT、OUTPUT、FORWARD 等。

[OPTIONS]:匹配条件,例如 -p(协议)、–dport(目标端口)等。

-j :目标,定义了匹配条件满足时的操作,如 ACCEPT、DROP、REJECT 等。

常用方法

  1. 显示当前规则:

    sudo iptables -L
    加 -v显示详细信息

  2. 清除所有规则:

    sudo iptables -F
    -t nat 删除指定nat上的规则

  3. 添加规则:

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT

    允许 SSH 流量通过。

  4. 删除规则:

    sudo iptables -D INPUT -p tcp --dport 22 -j ACCEPT

  5. 在指定链的指定位置插入规则:

    sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT

NAT 相关:

  1. 开启 IP 转发(用于路由器):

    sudo sysctl -w net.ipv4.ip_forward=1
    或者在 /etc/sysctl.conf 中添加 net.ipv4.ip_forward=1 并执行 sudo sysctl -p。

  2. 端口转发(将外部访问的 80 端口转发到内部主机的 8080 端口)

sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.2:8080

状态查询:

  1. 显示连接追踪表(Connection Tracking Table):
    sudo iptables -t raw -L -v
  2. 保存和加载规则:
    保存规则到文件:
    sudo sh -c 'iptables-save > /etc/iptables.rules'
    从文件加载规则:
    sudo sh -c 'iptables-restore < /etc/iptables.rules'

你可能感兴趣的:(网络蓝队,网络,服务器,运维)