首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将多个接口绑定到原始套接字

如何将多个接口绑定到原始套接字
EN

Stack Overflow用户
提问于 2016-01-22 20:32:42
回答 1查看 1.4K关注 0票数 0

我打开了一个原始套接字来获取所有原始数据包:

代码语言:javascript
复制
socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)

当在属于LAG或绑定的接口上接收到数据包时,内核会将数据包发送到用户应用程序2次。一个用于实际物理接口,另一个用于焊接接口。如何限制内核仅为我感兴趣的接口提升数据包?

我们可以通过将应用程序感兴趣的接口绑定到套接字来实现它。但我不想创建多个套接字(每个接口一个套接字)来避免可伸缩性问题。是否可以将多个接口动态绑定到原始套接字?

EN

回答 1

Stack Overflow用户

发布于 2016-01-22 21:48:23

使用SO_BINDTODEVICE套接字选项绑定到特定接口:

代码语言:javascript
复制
char *iface = "eth0";
setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE, iface, 4);

在这种情况下,您必须为每个接口创建单独的套接字。

另一种解决方案是在INADDR_ANY中使用bind(2)

你没有第三种选择。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34946831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档