非虚拟网络接口的解决方案在这里: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
对的工作原理就像管子一样,您在一端发送的内容将出现在另一端。除了上述命令之外,您还需要设置寻址和路由。