基础知识Iptables

2021-11-25  本文已影响0人  后知不觉1

一、iptables的四表五链

链是放在表中的,总共有四个表,每个表有不同的优化级:raw>mangle >nat> filter

1、四表

1.1、raw表

是自1.2.9以后版本的iptables新增的表,主要用于决定数据包是否被状态跟踪机制处理,一般在高并发时有可能会用到,来设置一些连接不跟踪状态,防止ip_conntrack文件被撑爆
很少用

1.2、mangle表

主要用于修改数据包的TOS(Type Of Service,服务类型)、TTL(Time To Live,生存周期)指以及为数据包设置Mark标记,可以实现分流功能
很少用

1.3、nat表

主要用于修改数据包的IP地址、端口号等信息(网络地址转换,如SNAT、DNAT、MASQUERADE、REDIRECT),一般在作为网关服务器上会用到,搭建过openvpn的话,肯定会用到。

1.4、filter表

主要用于对数据包进行过滤,有DROP、ACCEPT、REJECT、LOG等,默认的规则是添加到filter表

2、五链

当数据包到达这些位置的时候会调用这些函数,在这些位置上我们可以对数据包的内容进行修改,达到控制的目的,这5个挂载点分别是PRE_ROUTING、INPUT、OUTPUT、FORWARD、POST_ROUTING。也就是我们常说的五条链。
每个表中都有对应的链,因此有个优先级,会以高优先级为准

链名 说明
PREROUTING链 对数据包作路由选择前应用此链中的规则(所有的数据包进来的时侯都先由这个链处理)
INPUT链 进来的数据包应用此规则链中的策略
FORWARD链 转发数据包时应用此规则链中的策略
OUTPUT链 外出的数据包应用此规则链中的策略
POSTROUTING链 对数据包作路由选择后应用此链中的规则(所有的数据包出来的时侯都先由这个链处理)

二、iptables数据流生命

image.png

三、iptbales说明

3.1 命令行配置格式

iptables [-t 表名] 管理选项 [链名] [匹配条件] [ -j 控制类型]

3.1.1、控制类型
专有名词 作用
ACCEPT 允许数据通过
DROP 直接丢弃数据包,不会给出回应信息
REJECT 拒绝数据包通过,给出回应信息
SNAT 修改数据包源地址
DNAT 修改数据包目的地址
MASQUERADE 伪装为一个非固定公网IP地址
LOG /var/log/messages 文件中记录日志信息然后将包传递给下一条规则。只是一种辅助动作,并不会真正处理数据包
3.1.2、 常用管理选项
3.1.3、匹配条件

四、iptables命令详解

1、查看
    iptables -nL    #默认查看filter表规则
    iptables -nL -t filter  #查看指定表 filter表规则
    iptables -nL  --line-numbers  # 列出filter表规则并带上id
1、添加

命令格式
iptables [-t 表名 ] [-A |-I |-R] <链名><控制类型>

    iptables -A INPUT -p22 ACCEPT   #在filter表追加一条规则
    iptables -I INPUT 1 -p22 ACCEPT   #filter表id为1的插入一条规则id 为1
2、删除

命令格式
iptables [-t 表名 ] -D <链名><控制类型> 或者 iptables [-t 表名 ] -D <链名> [id]

    #先列出iptables的id
    iptables -nL  --line-numbers  
    iptables -D INPUT  xxx  # 删除filter表下INPUT链id为xxx的规则
    #也可以根据条件删除
    iptables -t filter -D INPUT -p icmp -j REJECT    #删除filter表下INPUT链上拒绝icmp协议的规则
4、设置默认规则

命令格式 iptlables [-t 表名 ] -P <链名><控制类型>
一般不会设置

     iptables -P INPUT DROP             #设置filter 表,INPUT 链默认控制类型为 DROP
     iptables -P FORWARD DROP           #设置 filter 表,foreword 链默认类型为 DROP
5、清空规则

iptables [-t 表名] -F [链名]

      iptables -F   # 删除默认表filter 的所有链规则
       iptables -F INPUT #删除默认表filter的INPUT链规则

五、 SNAT 和 DNAT

在vpn搭建过程中要替换掉虚拟ip的网段,就要用到SNAT,因为安全组中会校验ip,所以这个是关键
条件

demo

 iptables -t nat -A POSTROUTING -s 192.168.23.0/24 -o ens33 -j SNAT --to 12.0.0.1  #将入口为网段ip为  192.168.23.0/24 转发到ens33网卡并替换ip为12.0.0.1  
 iptables -t nat -A POSTROUTING -s 192.168.23.0/24 -o ens33 -j MASQUERADE  #将入口网段192.168.23.0/24转发到ens33网卡并随机伪装ip,这个在vpn 搭建过程中无法使用
上一篇 下一篇

猜你喜欢

热点阅读