是否可以将套接字绑定到特定的虚拟适配器?
以下Python代码对于真实的适配器可以正常工作,例如。 eth0代表电缆,wlan0代表wifi:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, 25, b"eth0")


但是当我尝试将套接字绑定到虚拟适配器时“ eth0:0”,我得到错误“ OSError:[Errno 19]没有这样的设备”。

我的虚拟适配器似乎可以正常工作,并且可以ping通。

基本上,我想做的是从特定IP(分配给虚拟适配器)生成传出流量。目的是使用单台计算机对网络上的嵌入式设备进行加载/洪泛测试。

最佳答案

您应该知道,对于内核,这些(eth0和eth0:1)是相同的接口eth0。
标签或“别名”,例如eth0:1(实际上,您可以使用更好的用户友好标签,例如eth0:internal_net)仅对于sysadmin才需要,
因此,您应该依赖源IP(或让内核根据路由表自动选择它)

关于python - 将传出套接字绑定(bind)到特定的(虚拟)适配器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28227041/

10-13 05:10