python - 将传出套接字绑定(bind)到特定(虚拟)适配器

标签 python linux sockets

是否可以将套接字绑定(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/

相关文章:

Python 文件路径常量

python - 在 Python 中查找字符串中的精确子字符串

python - 补丁 - 为什么相对补丁目标名称不起作用?

python - 在linux中运行flask/python代码?基本 flask 代码

sockets - 使用套接字[Windows Phone]

java - 多线程聊天服务器

python - 如何比较 yaml 文件而不考虑顺序差异?

java - 带有 Java 13.0.1 的 RaspberryPi 4

linux - 防止滥用 JMeter 等负载和压力测试软件

c# - 使用 dispose/finalize 模式释放 socket/event/ummaged 代码的正确技术