您的位置:首页 > 其它

iptables之基础知识

2015-06-20 15:37 204 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: