是否可以将套接字绑定(bind)到特定的虚拟适配器? 以下 Python 代码适用于真正的适配器,例如。 eth0 用于有线,wlan0 用于 WiFi:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, 25, b"eth0")
但是当我尝试将套接字绑定(bind)到虚拟适配器时,例如“eth0:0”我收到错误“OSError: [Errno 19] No such device”。
我的虚拟适配器似乎工作正常,并且可以正常 ping 通。
基本上,我想做的是从特定 IP(分配给虚拟适配器)生成传出流量。目的是使用单台计算机对网络上的嵌入式设备进行负载/洪水测试。
最佳答案
您应该知道,对于内核来说,这些(eth0 和 eth0:1)是相同的接口(interface) eth0。 标签或“别名”,如 eth0:1 (实际上你可以使用一些更好的用户友好标签,如 eth0:internal_net)仅适用于系统管理员,而不适用于应用程序 所以你应该依赖源IP(或者让内核根据路由表自动选择它)
关于python - 将传出套接字绑定(bind)到特定(虚拟)适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28227041/