Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3304625
  • 博文数量: 266
  • 博客积分: 3081
  • 博客等级: 中校
  • 技术积分: 2640
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-04 10:35
个人简介

没什么好介绍的!穷屌丝一个~

文章分类

全部博文(266)

文章存档

2021年(3)

2020年(1)

2019年(2)

2016年(5)

2015年(1)

2014年(1)

2011年(9)

2010年(16)

2009年(31)

2008年(58)

2007年(111)

2006年(2)

2005年(26)

我的朋友

分类: LINUX

2007-06-02 21:46:42

iptables各个模块的功能详解

patch-o-matic NetFilter的新功能试验床/扩展包
上月起不再提供release版本,可以cvs checkout或者从 下载

以下将20050208-snapshot中的所有补丁逐一简要介绍。

base部分
HOPLIMIT目标
设定IPv6报文的HOPLIMIT值

IPV4OPTSSTRIP目标
顾名思义,去掉IP_OPTION
iptables -t mangle -A PREROUTING -j IPV4OPTSSTRIP
没想到有啥用 :S
也许可以用来去掉一些不合理的标志位?

NETLINK目标
通过netlink socket发送被丢弃的报文到用户空间的守护进程(fwlink,)

NETMAP目标
转换前后地址一一对应的NAT
iptables -t nat -A PREROUTING -d 1.2.3.0/24 -j NETMAP --to 5.6.7.0/24
iptables -t nat -A POSTROUTING -s 5.6.7.0/24 -j NETMAP --to 1.2.3.0/24

REJECT目标(v6)
为IPv6提供REJECT。

SAME目标
相对于SNAT的pre session,为每个client设置相同的源IP。

TTL目标
顾名思义,修改报文TTL

connlimit匹配
限制每IP的连接数
2conn/IP
iptables -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT
16conn/C
iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 16 --connlimit-mask 24 -j REJECT

dstlimit
和limit差不多,不过是按照目标地址/端口来

fuzzy
简单的模糊控制

hashlimit
用于构造更复杂的limit

iprange
匹配地址范围

ipv4options
匹配IPv4头部选项

mport
匹配多个端口和范围

nf-log
增加内部log接口

nth匹配
匹配第n个包

osf匹配
识别并匹配操作系统

pool匹配
用位图匹配连续的地址范围
重新编译iptables,在ml里面找ippool
已经有更powerful的ipset

psd匹配
端口扫描检测

quota
配额支持
不支持SMP

random
按照百分比随机匹配

raw
增加raw表,在其他表处理之前,-j NOTRACK跳过其它表处理

realm
匹配路由的realm key
内核打开CONFIG_NET_CLS_ROUTE4

set
加速匹配地址和端口,需要用户态程序配合(ipset,)

time
匹配时刻表,按照日期/星期/时间

u32
处理包的前4个字节

extra部分
CLASSIFY目标
修改skb->priority,用于QoS
有两个补丁CLASSIFY和CLASSIFY_more-hooks,前者对应mangle表的POST_ROUTING链,后者则对应FORWARD和LOCAL_OUT链
这个比tc filter强太多了

connmark目标
为连接打标记,及相应标记的匹配

IPMARK匹配
简化地址匹配并MARK的动作
以下规则
iptables -t mangle -A POSTROUTING -o eth3 -d 192.168.5.2 -j MARK --set-mark 0x10502
iptables -t mangle -A POSTROUTING -o eth3 -d 192.168.5.3 -j MARK --set-mark 0x10503
只需写为
iptables -t mangle -A POSTROUTING -o eth3 -j IPMARK --addr=dst -and-mask=0xffff --or-mask=0x10000
在大型网关设备上可以提高效率

MARK-operations
扩展了MARK目标的选项,可以设置位:-j MARK --or-mark 0x10

ROUTE目标
改变报文的路由
提示:此目标十分诡异,普通的应用需求一般不要用也用不上它。

TARPIT目标
完成握手后开启0字节的TCP窗口,一定程度上抑制TCP扫描报文(如红码等)的速率,它和CONNTRACK最好不要同时打开。

TCPLAG目标
仅用于log,比如记录SEQ和ACK之间的延迟。

TRACE目标
用于调试性质的log,记录报文在各个链之间流动的情况,需要重新编译iptables用户态程序。

XOR目标
简单的XOR报文内容,用于加密。

ACCOUNT目标
记录指定地址段的流量,用于记帐
iptables -A OUTPUT -j ACCOUNT --addr 0.0.0.0/0 --tname all_outgoing
iptables -A OUTPUT -j ACCOUNT --addr 192.168.1.0/24 --tname sales
然后用用户态程序(libipt_ACCOUNT,)接收,

addrtype匹配
匹配给路由代码用的地址类型

comment
加注释
iptables -A INPUT -s 192.168.0.0/16 -m comment --comment "A privatized IP block"

condition匹配
匹配/proc/net/ipt_condition目录下标志文件
iptables -A INPUT -p tcp -m condition --condition web_ok --dport 80 -j ACCEPT
echo 1 > /proc/net/ipt_condition/web_ok
echo 0 > /proc/net/ipt_condition/web_ok

connbytes匹配
匹配某连接已经传送的字节/包数

connrate匹配
匹配传输速率

conntrack-acct
保留每连接的字节/包计数。

conntrack_memsave
修改conntrack内部机制,减少内存使用(最多32字节/连接)

conntrack_nonat
修改conntrack内部机制,优化无NAT的情况

conntrack_protocol-arrays
修改conntrack内部机制

cuseeme-nat
CuSeeMe协议NAT支持(NAT,no ConnTrack)

dropped-table
增加一张drop表,被丢掉的包进来

eggdrop-conntrack
EggDrop支持

geoip
匹配IP所属国家

goto
增加了-g(--goto)
和-j相比,-g更像是jmp而-j则是call

h323-conntrack-nat
H323协议支持

ip_nf_assert-fix
无关紧要的修正…

ip_queue_nonlinear_skbs
让ip_queue用skb_copy_bits()复制报文数据

ip_queue_vwmark
让用户态程序通过ip_queue打MARK
需要重新编译iptables

ipp2p
匹配p2p连接
配合CONNMARK和CLASSIFY可以做QoS

ipsec-01-output-hooks
ipsec-02-input-hooks
ipsec-03-policy-lookup
ipsec-04-policy-checks
IPSec支持

layer2-hooks
处理二层报文

mms-conntrack-nat
mms协议支持

nat-reservations

nf_conntrack
新的内部构架,用于合并v4和v6

nfnetlink-ctnetlink-0.13
传送一些消息到用户态

owner-socketlookup
owner-supgids
ownercmd
属主进程/用户/组匹配

policy匹配
匹配IPSec的policy

pptp-conntrack-nat
PPTP支持

quake3-conntrack-nat
Quake3协议支持

rpc
RPC协议支持和相关匹配

rsh
RSH协议支持

rtsp-conntrack
RTSP协议支持

string
匹配报文内容
不要试图把它设想得太厉害,报文是会分段的

talk-conntrack-nat
talk/ntalk/ntalk2协议支持

tcp-window-tracking
扩展的tcp连接跟踪


tproxy
增强的透明代理支持,比-j REDIRECT做更多


unclean
更严的检查,对付如ECN黑洞等,unclean_fragment-fix

pending部分
CLASSIFY_more-hooks

amanda_offset-fix

conntrack-cacheline-opt
让netfilter使用2.6风格的模块参数

conntrack_arefcount
修改conntrack内部机制

conntrack_error-api
修改conntrack内部机制

early-drop-norandom

expect-evict-order

helper-locking_fix
修正传说中SMP下的bug…

init_conntrack-optimize

ip_nat_helper_static

ip_nf_assert-fix

ip_queue_nonlinear_skbs

ipt_helper-invert-fix
把helper模块的匹配顺序倒过来

mangle-reroute
当MARK变化不重新路由

module_parm
netfilter内部使用2.6风格模块参数

nf_reset
内部修改

proc-no-internal-targets
/proc下的小改动

proc_net_conntrack-permissions
chmod 440 /proc/net/ip_conntrack

sctp
SCTP协议支持

unclean_fragment-fix
unclean的修正

阅读(3346) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~