iptables结构及使用

结构

表(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>

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

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

-j <TARGET>:目标,定义了匹配条件满足时的操作,如 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'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值