iptables基本原理和规则配置

iptables原理图

1.表的作用

Mangle:打个标记,更改ttl值,更改查看tos
Nat:做DNAT、SNAT和端口映射
Filter:通过五元组控制数据包
Conntrack:跳过连接跟踪以及加速数据包到达本地或出去
路由判决:查路由看是转发还是找自己的
优先级顺序:raw > mangle > nat > fiter

2.Iptables查看表

格式:iptables [-t 表名] -A 链名 匹配条件 -j 动作
Iptables -t raw -nvL        查看raw表
Iptables -t mangle -nvL     查看mangle表
Iptables -t nat -nvL        查看nat表
Iptables -t filtes -nvL      查看filtes表

3.表的定义

-t table :4个表(nat filtes raw mangle)
Command: 定义如何对规则进行管理,如添加、更改、删除、插入
Chain: 指定接下来的规则,到底是哪一个链上操作
CRETIRIA: 指定匹配条件

4.链

-p:设置默认策略(设置开或关)
-F:清空链中的规则
   (默认清空filtes表,iptables -t nat -F 清空nat表的所有链)
-Z:清空链及链中默认规则的计算器
-A:追加(后面跟链)
-I:插入
-R:替换
-D:删除

5.通用匹配

-s :源IP
-d :目的IP
-i eth0 :指定入接口
-o teh0 :指定出接口
-p tcp :tcp协议扩展
– -dport 80 :指定目标端口
– -m multiport :多个端口设定

6.常用的动作

-j 后面跟动作
DROP:悄悄丢弃
REJECT:明示拒绝
ACCEPT:允许
DNAT:目的IP转换
SNAT:源IP转换
MASQUERADE:源地址伪装

7.举例

例一:

在filter表的input链上添加一条阻断源IP是10.10.10.10 目的IP是23.23.23.23 协议是tcp 目的端口是80 的数据包。

$iptables -t filter -A INPUT -s 10.10.10.10 -d 23.23.23.23 -p tcp --dport 80 -j DROP

-t filter -A INPUT 在filter表的input链里添加一条规则

-s 10.10.10.10 源IP是10.10.10.10

-d 23.23.23.23 目的IP是23.23.23.23

-p tcp 协议是tcp

— dport 80 目的端口是80

-j DROP 丢弃数据包,不给发包的终端回应

添加策略之后使用一下命令查看

$iptables -t filter -nvL

下面我们来删除刚才添加的规则

指定删除某条规则的时候,要把规则的匹配条件全部输上去。如下:

$iptables -t filter -D INPUT -s 10.10.10.10 -d 23.23.23.23 -p tcp --dport 80 -j DROP

例二:

在nat表的postrouting链上添加一条源IP是10.10.10.10的做SNAT:

$iptables -t nat -A POSTROUTING -s 10.10.10.10 -j SNAT --to 11.11.11.11

-t nat -A POSTROUTING 在nat表的postrouting链上天机一条规则

-s 源IP是10.10.10.10

-j SNAT 动作是做SNAT

–to 11.11.11.11 SNAT转换的地址是11.11.11.11

例三:

清空所有表的规则:

$iptables -F

这个命令默认是清空filter的所有规则,其他表的规则并没有清空

清空其他表的规则需要加参数,比如清空nat表的规则:

$iptables -t nat -F

清空raw的规则:

$iptables -t raw -F

清空mangle表的规则:

$iptables -t raw -F


原文地址:https://www.cnblogs.com/APeng2019/p/10719432.html