标签:iptables ip_conntrack chain
hook funciton(钩子函数):
prerouting 进本机未过路由表
input 进来本机
output 从本机出去
forward 转发
postrouting 路由后从本机出去
规则链:
每个钩子函数上的规则合集构成链。
PREROUTING
INPUT
OUTPUT
FORWARD
POSTROUTING
自定义链:
只能被调用,有跳转和返回机制。用户可以删除自定义的空链,默认链无法删除。
计数器:
每个规则都有内置的计数器。
1.被匹配到的报文个数
2.被匹配到的报文大小之和
多个规则链构成表:
filter(过滤);
INPUT
OUTPUT
FORWARD
nat(地址转换):
PREROUTING SNAT
OUTPUT
POSTROUTING DNAT
mangle(拆分修改封装报文首部):
PREROUTING
INPUT
OUTPUT
FORWARD
POSTROUTING
raw(原始格式):
PREROUTING
OUTPUT
规则链中表的优先级:
优先级从高到底。
PREROUTING
raw
mangle
nat
INPUT
mangle
filter
OUTPUT
raw
mangle
nat
filter
FORWARD
mangle
filter
POSTROUTING
mangle
nat
数据包过滤匹配流程:
入站数据流 --> PREROUTING --> 路由选择 (FORWARD --> POSTROUTING -->出站数据流)--> INPUT --> 本机应用程序 --> 路由选择 --> OUTPUT -->POSTROUTING -->出站数据流
匹配标准:
通用匹配
依赖自身。
扩展匹配
依赖扩展模块。
对应的扩展模块为/lib/iptables/libipt_*.so
1.隐含匹配。
不用特别指明扩展模块。例如使用了-P {tcp|udp|icmp} 指明协议。
2.显式扩展。
必须使用-m指明对应的扩展模块。
iptables 不是服务,但是有服务脚本,所有的规则都应用在内核中。服务脚本的作用是管理保存的规则。装载及移除相关内核模块。使用lsmod可以查看相关的模块
脚本:
/etc/init.d/iptables
保存和读取规则:
#service iptables save
/etc/sysconfig/iptables 配置文件
或
#iptables-save > FILE 保存配置文件
#iptables-restore < FILE 读取配置文件
配置文件:
/etc/sysconfig/iptables-config
ICMP 类型
TYPE CODE
0 0 Echo Reply ping应答
8 0 Echo Request ping请求
#lsmod |grep ip 列出内核模块
ip_conntrack 内核模块,监听并追踪连接状态
依赖iptable_nat和ip_nat模块
/proc/net/ip_conntrack 内核文件,保存连接状态信息
#cat /proc/net/ip_conntrack
#iptstate [OPTION] 显示并追踪iptables状态信息
[OPTION]
-t 显示所有连接的个数
/proc/sys/net/ipv4/netfilter/* ip_conntrack的相关设置文件夹
ip_conntrack_max 最大连接条目,默认32768。超出部分则会被丢弃。
ip_conntrack_tpc_timeout_established tcp连接超时时间,默认432000秒,即5天。
ip_conntrack_icmp_timeout icmp连接超时时间,默认30秒
注意:一旦使用#iptables -t nat -L 命令,将会启用ip_conntrack模块,若设备连接数大,则会造成丢包。
本文出自 “小私的blog” 博客,请务必保留此出处http://ggvylf.blog.51cto.com/784661/1663822
标签:iptables ip_conntrack chain
原文地址:http://ggvylf.blog.51cto.com/784661/1663822