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