开源查虫
无为和尚
无欲无为
展开
-
扩展EBTABLES
之前对ARP协议进行了扩展,可是只能对ARP包进行修改,后面又有了DHCP包的VLAN优先级不对的问题。想了想,这样下去不行,就直接想在在发包的过程中挂个HOOK,这个地方。然后统一修改。大小通吃。并且这样做的好处在于以后要再加什么功能也方便。说不定哪天又报这个不行那个不行,就可以统一在这里处理。选中了,dev_hard_start_xmit。本来打模仿broute表整一张的,可惜我晚了一步,有人在我之前已经想到了这一招,已经打了一张aroute表。算了那就用现成的吧。反正这一块就算自已亲手加,也没啥难的。原创 2011-03-04 21:16:00 · 2192 阅读 · 0 评论 -
ipconntrack中的一个BUG
好不容易搞个周六,被总监叫回去救火,郁闷啊!说是BT下载有内存泄露。跑两小时就内核挂了。乱杀进程。又出现了传说中的内存泄露。哎。只好回公司。首先进行问题定位。先看是内核的还是应用的。经过对SLABINFO进行分析。发现是内核中一个数据结构在狂飚。这个数据结构就是ip_conntrack_expect。基本可以定位是内核问题了。一看这玩意就知道是netfilter这一块的事。然后对SVN进行查找。发现最近将对称NAT改成了锥形NAT。这个地方非常可疑。因为这个是要通过IPTABLES来操作NETFILTER的原创 2011-03-04 21:32:00 · 1486 阅读 · 1 评论 -
对arptbales进行扩展
起因是因为客户给我们报了一个BUG,说对VLAN的优先级做了设置后,IP包是对的,但是ARP包的优先级不对。首先做了一些通用的分析后,发现之前对优先级作设置是用的iptables。显然大家都知道。ARP包的发送完全是由linux内核控制的,不进行TCP/IPstack,显然对所挂的HOOK不会进行调用。我认为我已经找到了解决的方法了。就用ebtables对SKB打标记重新设置优先级,可奇怪的是还是不行。后面仔细研究了一下代码,并问了一下公司当时设计这一个模块的老员工。终于发现了问题所在。在设置静态IP时,代原创 2011-02-21 20:31:00 · 1211 阅读 · 2 评论 -
dproxy的一个BUG
这个问题在我进公司的时候一直就有,但是一直都没人解,这次做主干的项目被领导逼的不行了,只要亲自抄刀。现象:在不能上外网的路由器上接多台机器,每台机器全都装上BT,像迅雷这种软件,开启多个,每个中有N多种子的时候。router跑一阵就会挂掉。dump_stack,提示内存不足。分析:经过查找后发现是dproxy占用的内存过多。这下简单了,把这个小开源软件开了一遍,发现里面维护了一个链表。每个链表节点是6014个字节。而这时链表的长度达到了300多(具体数字忘了)。用wiresharkZ包一看,发现迅雷果然狂发原创 2011-02-21 22:31:00 · 2336 阅读 · 2 评论