Chinaunix

标题: libpcap可以写防火墙吗? [打印本页]

作者: z85525006    时间: 2011-04-05 13:03
标题: libpcap可以写防火墙吗?
本人是学生,想用Linux环境的C语言+ gtk+ 和 libpcap 来写一个简单的防火墙.我了课本的上的练习
主要实现 包 的过滤,如果发现不要的包就丢弃! 可以不可以实现~! 本人第一次使用 libpcap这个东西~!
作者: sjtlqy    时间: 2011-04-05 21:23
我也是哦,呵呵。oschina上找找吧
作者: Godbach    时间: 2011-04-06 10:00
有现成的 iptables 的源码实现和 Netfilter 框架可以作为参考。
作者: platinum    时间: 2011-04-06 13:05
可以的,libpcap 库不仅可以作 sniffer,也可以做过滤
他使用内核里一个叫 BPF 的算法进行规则分析,好像是基于有穷状态机实现的
作者: z85525006    时间: 2011-04-06 14:34
回复 4# platinum
谢谢你了,太感谢了,歇息俄阿~!
作者: beyond907    时间: 2011-04-06 21:51

作者: 独孤九贱    时间: 2011-04-07 08:53
可以的,libpcap 库不仅可以作 sniffer,也可以做过滤
他使用内核里一个叫 BPF 的算法进行规则分析,好像是 ...
platinum 发表于 2011-04-06 13:05


我一直以为BPF是取包的过滤规则……Linux的libpcap的包过滤代码是在哪儿实现的呢??没有注意到哟!
作者: platinum    时间: 2011-04-07 09:40
我一直以为BPF是取包的过滤规则……Linux的libpcap的包过滤代码是在哪儿实现的呢??没有注意到哟!
独孤九贱 发表于 2011-04-07 08:53


九贱兄问的好,这个问题我之前也没有深究过,只是知道有人利用 windows 下的 pcap 库写过一些程序
我查了一些资料,libpcap 的过滤功能仅限于拦截到 local 的数据,也就是本地应用层,对于转发的数据是不起作用的
http://blog.csdn.net/sansecao/archive/2009/07/24/4377834.aspx
http://hi.baidu.com/placido07/bl ... b6dd04908f9d6b.html
作者: ryangecko    时间: 2011-04-08 02:01
回复 4# platinum


    真的可以过滤包吗?如果网桥模式是否可以过滤呢?
作者: platinum    时间: 2011-04-08 12:08
回复  platinum


    真的可以过滤包吗?如果网桥模式是否可以过滤呢?
ryangecko 发表于 2011-04-08 02:01


我只知道如果是和本地 application 通信的可以,转发的可能没戏
作者: ryangecko    时间: 2011-04-08 14:34
用pf-ring倒是可以在内核里用他里的filter插件倒是可以
作者: solu    时间: 2013-04-28 09:42
platinum 发表于 2011-04-08 12:08
我只知道如果是和本地 application 通信的可以,转发的可能没戏


你好, 不是说libpcap操作的只是包的copy吗? 对实际的通讯包是没有影响的, 那他怎么做过滤器? 这样岂不是对原始包有影响了吗 ?
作者: platinum    时间: 2013-05-06 13:17
solu 发表于 2013-04-28 09:42
你好, 不是说libpcap操作的只是包的copy吗? 对实际的通讯包是没有影响的, 那他怎么做过滤器? 这样岂 ...

见 8 楼
作者: gpstrive    时间: 2013-05-06 16:31
回复 8# platinum
我研究了一下你发的这两个链接,这里面的包过滤都是针对复制包的,
libpcap的包过滤都是针对复制包,有兴趣可以看下libpcap的工作原理
http://recursos.aldabaknocking.c ... uisMartinGarcia.pdf

这也意味着,单纯通过libpcap来做防火墙是不可行的。


   
作者: 瀚海书香    时间: 2013-05-07 14:36
回复 14# gpstrive
这也意味着,单纯通过libpcap来做防火墙是不可行的。

这个对tcp协议是可以的。
比如通过libpcap抓包发现,有一个tcp数据流存在问题,那么只需要向源或者目的发一个RST,那么这个链接就会关闭,达到了防火墙的功能。
作者: gpstrive    时间: 2013-05-08 09:02
回复 15# 瀚海书香


    恩,同意。
作者: cpu_auxiliary    时间: 2013-05-10 16:06
我的理解是,可以抓到网卡上的流量,但是内核给转发的一份,不走网络协议栈,所以通常用来分析流量,虽然可以在tcp上做劫持,并不可靠,容易漏包,如果要做很严密的包控制,还是要像netfilter那样在内核层的协议栈上做钩子来处理报文。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2