如何为不同的进程使用不同的虚拟网络接口?

如何为不同的进程使用不同的虚拟网络接口?

非虚拟网络接口的解决方案在这里:https://unix.stackexchange.com/a/210992

但问题是我在一个网络接口上有多个 IP,并且我希望能够将每个 IP 分配给不同的应用程序。

例如,我有 eth0:0、eth0:1 等。

当我执行命令时(注意虚拟接口):

ip link set eth0:0 netns test_ns

它需要 eth0 ip 而不是 eth0:0 ..它还夺走了整个接口,我无法从公共源连接到它。

有没有一种方法可以将虚拟网络接口用于不同的进程,同时可以从公共源访问服务器?

答案1

类似的接口名称eth0:0并不表示不同的接口(“虚拟或非虚拟”),而是同一接口的别名。仅需要别名是因为 ifconfig 等旧的已弃用工具无法使用相同的接口名称分配多个地址。

编辑:您可以使用veth接口对连接两个网络命名空间。

sudo ip link add ns1_eth type veth peer name veth0

将另一端移至ns1网络空间:

sudo ip link set ns1_eth netns ns1

veth对的工作原理就像管子一样,您在一端发送的内容将出现在另一端。除了上述命令之外,您还需要设置寻址和路由。

相关内容