如何在特定接口上打开套接字并同时接收IPv4和IPv6流量

gar*_*ph0 4 bind ipv4 ipv6

使用IPv4,我可以将()绑定到特定地址,以选择将用于接收数据包的接口(在某些情况下,也可以发送,但这不是重点).

在双栈IPv6/IPV4机器上我有这个问题:我可以创建一个6套接字并使用它来接收4个流量,但如果我想绑定到特定接口,我必须选择要绑定的IP地址.

如果我绑定到IPv6地址,我将过滤掉所有IPv4流量,反之亦然.

如何从特定接口接收IPv4和IPv6流量?

Jef*_*eff 5

如果您使用的是Linux,则应该能够使用SO_BINDTODEVICE套接字选项绑定到接口而不是特定的IP地址.它在套接字手册页中描述.