iptables 简介

iptables 的 链

当主机网卡收到的数据报进入内核空间的 TCP/IP 协议栈进行层层解封装,达到网络层后会进入 PRE_ROUTING 链,进行一次路由选择,如果目标地址是本机,就进入 INPUT 链,如果非本地就进入 FORWARD 链接(内核启用 ip forward)

应用程序发送的数据包会进入 OUPUT 链
经过 FORWARD 和 OUTPUT 链后会进入 POST_ROUTING 链

索引一般的流程是
PreRouting -> Input -> Process -> Output -> PostRouting
或者
PreRouting -> Forward -> PostRouting

iptables 的表

filter:过滤功能

nat: 网络地址转换功能,如 snat,dnat

mangle: 根据规则修改数据包的标志位

raw:应用在那些不需要做 nat 的情况下

优先级
raw -> mangle -> nat -> filter

iptabls 表和链的关系

链 和 表
PreRouting raw, mangle, nat
Forward mangle, filter
Input mangle, filter, nat
Output raw, mangle, filter, nat
PostRouting mangle, nat

表 和 链
raw PreRouting, Output
mangle PreRouting, Forward, Input, Output, PostRouting
filter Forward, Input, Output
nat PreRouting, Input, Output, PostRouting

通用匹配:源地址目标地址的匹配

常用参数

-p: 协议类型
-s/--source: 源地址
-d/--destination: 目标地址
-i/--in-interface:数据报来自网络接口
-o/--out-interface:数据报出口网络接口
-R num 替换第几条规则

常用命令

-N/--new chain 创建一个名字为 chain 的链
-L/--list 列表链
-A/--append chain rule-specification 在 chain 链末尾插入指定的规则
-I/--insert chain rulenum rule-specification 在 chain 链指定位置(rulenum)插入指定的规则
-D/--delete chain rulenum 在 chainname 删除 chain 链的指定位置(rulenum)处的规则
-R/--replace chain rulenum rule-specification: 替换/修改 chain 链指定位置(rulenum)处的规则
-P/--policy chain target 修改链的默认策略
-F/--flush [chain] 清空指定链 chain 上面的所有规则.没指定则清空所有链的所有规则.
-j/--jump target 满足某条件时该执行的动作 target,如 ACCEPT

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。