问题: 如何在启动程序的同时确保其网络访问是通过特定网络接口绑定的?
案例: 我想使用相同的 IP (192.168.1.1) 访问两台不同的机器,但可以通过两个不同的网络接口(eth1 和 eth2)访问。
例子:
net-bind -D eth1 -exec {Program 192.168.1.1}
net-bind -D eth2 -exec {Program 192.168.1.1}
Run Code Online (Sandbox Code Playgroud)
以上是我想要的近似值,灵感来自通过primusrun和optirun完成的硬件绑定。
挑战:正如在相关线程中所建议的,所使用的接口不是由程序选择的,而是由内核选择的(因此是上例中的预绑定语法)。
我找到了一些相关的解决方案,但并不令人满意。它们基于通过用户特定的网络黑名单绑定网络接口;即,以只能访问单个特定网络接口的用户身份运行该进程。
在我的电脑上,我有两个网卡。两者都使用不同的互联网提供商服务。
两个互联网服务提供商都有不同的 DNS 服务器,我知道他们的 IP 地址。
我想确保在nslookup发送查询时,它完全通过指定的接口。
就像是:
ping -I eth1 google.com
nslookup -I eth1 google.com无论如何都是可能的,我知道没有-I选择,我什至不希望它仅以这种方式具体。
我该怎么做?