proxy代理   norton 诺顿病毒库   代理列表   search FTP搜索   whois IP地理位置   blog 追求完美  
soft 软件   firefox WEB浏览器   免费域名   typeset 假古文   AntiVirus 反病毒   ipcn 站点导航  

« pac 代理脚本与 IE Firefox Chrome 浏览器 | Main | 2009年最新版个人所得税计算器1 (7月前有效 基数9966 失业0.2%) »

October 11, 2009

用 iptables 解决某些时候抢先应答的 RST 造成的异常中断: 忽略RESET 保证数据畅通

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
https://windtear.net/2009/10/iptables_drop_reset.html
一个真实的例子 由于可能触发了什么东西 A到B的数据交互会被一个抢先的RST回应干扰
简单解决是忽略这种类型的全部 RST 包
iptables -I INPUT -p tcp --tcp-flags SYN,FIN,RST,URG,PSH RST -j DROP

 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x2F/0x04

顺便复习备忘下

1 SYN
	14+20+20+20(options)
eth	6+6+2 dstmac+srcmac+0800
ip	45+ds+2ip.len(60)+2ip.id+flags(DF 0x04).2frag_offset+ttl+proto tcp 06+2checksum+src+dst
tcp	2srcport+dstport+4seq+4+1hdr_len+1flags(0x02syn 04rst 10ack)+2window+2checksum+2+options
options	4mss+2sack(04 02)+10timestamp+1nop+7window_scale
seq=0 mss=1460	04c751df

2 SYN+ACK	
tcp	
seq=0 ack=1 len=0	0540780e 04c751e0
1flags(0x12 syn+ack)

3 ACK
tcp	20+12(1nop+1nop+10timestamp)
1flags(0x10 ack)
seq=1 ack=1	04c751e0 	0540780f

4 PSH+ACK
ip	ip.len=169
tcp	len=117
seq=1(next118 169-20-32=117) 04c751e0 0540780f
1flags(0x18 psh+ack)	tcp segment data=117

5 RST
ip	2ip.len(52)	flags(DF 0x00)
tcp
seq=1	0540780f ack(04c75255)
flags(0x04 RST ack not set)

6 ACK
tcp
seq=1 ack=118
1flags(0x10 ack)

7 RST
ip	2ip.len(40)	flags(DF 0x04)
tcp	seq=118	04c75255 ack(00000000)
flags(0x04 RST)


1 2 3 syn syn+ack ack
4 PSH+ACK (GET ...)
6 ACK
由于5 抢先 RESET 只好 7 RESET


解决:
忽略异常RESET包  (不包括端口未开放的RST+ACK)
iptables -I INPUT -p tcp --tcp-flags SYN,FIN,RST,URG,PSH RST -j DROP
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           tcp flags:0x2F/0x04
本blog WWW

Posted by windtear at October 11, 2009 10:36 PM

本站使用中的任何问题,请与 windtear @ windtear.net 联系
Copyright© 1999-2024 Windtear. All rights reserved.