我在 Linux 系统上创建了 3 个虚拟接口,使用不同的 IP 地址。
我有一个软件向服务器发出请求,但它使用默认界面eth0
。
是否可以暂时使用另一个 IP 地址/接口执行软件,例如eth0:1
?
就像是 :
USE_INTERFACE=eth0:1 node test.js
答案1
这通常由软件支持。它通常通过将套接字绑定到您要使用的接口的 IP 地址来实现。查看文档以了解绑定到本地 IP 地址的方法。
如果软件不支持您访问源,您可以bind()
在创建套接字后添加或更改调用,然后绑定到您想要的接口。
如果您的内核支持的话,也可以使用控制组功能来隐藏不需要的接口。
答案2
借助 LD_PRELOAD,您无需接触软件即可进行覆盖。
我找到 :
然后编译它:
$ BIND_ADDR="virtual_interface_ip" LD_PRELOAD=./bind.so ssh [email protected]
并且它将使用虚拟接口ip!
然后如果你需要在同一网卡上有多个 mac 地址,你可以使用 multimac :
祝您黑客愉快!
答案3
好的,使用与虚拟化系统相同的策略会更容易。使用桥接模式,brctl,这里有一个教程: