linux下多块网卡抓包的问题
我的服务器有多块网卡,连着多个不同的网段,我想在其中一个网卡eht1上抓mac包,现在可以用raw socket抓到mac帧,但是好像两块网卡的包都被抓到了,怎么设置让raw socket只抓eth1上的mac包。有人提出用
setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, “eht0”, 4);
函数绑定,但我试过了好像不管用。
最好给出代码。
你是用于做什么的,是自己实现一个特定的功能,还是单纯想抓包?在Linux上抓包的话还是用PF_PACKET更好一些,Raw socket应该有一些限制,许多包不能抓上来。PF_PACKET可以指定网口,Raw socket没怎么用过不清楚,不过你实在要用raw socket,可以看一下内核中相关的代码,原来我用PF_PACKET时在网上找到的例子部分是错的,最后还是看内核中的实现搞定怎么用了。不管是raw socket还是PF_PACKET,内核中相关部分比较简单。
页:
[1]