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) |