有没有办法可以将辅助 IP 移动到其自己的命名空间中,同时将主 IP 保留在原始设备上?
如果我在设备eth0上有 10.0.0.1 和 10.0.0.2 ,但我希望 10.0.0.2 在它自己的 netnstest
中,我最接近的方法是添加一个veth对和一个网桥,并移动eth0主 IP到桥上:
netns: test netns: default
============== ===============================
vethB:10.0.0.2 <-> vethA <-> br0:10.0.0.1 <-> eth0
不幸的是,将 10.0.0.1 IP 移出eth0会混淆盒子上的一些不透明的遗留应用程序,所以我更愿意将它保留在eth0上。
Linux
macvlan
设备在这里是一个可行的解决方案。它实例化了一个真正的逻辑设备第 2 层子接口,这与
eth0:1
管理辅助 IP 的管理虚构不同,然后我可以将其移动到网络名称空间和地址中。例子:这保留了“主要”IP
eth0
,从而使现有系统或多或少不知道我隐藏的“次要”IP。wifi接口附录
用户pts指出,如果是wifi接口,
macvlan
设备将无法工作。相反,使用接口类型。eth0
ipvlan mode 12
给定的设备只能在一个命名空间中,请参阅https://lwn.net/Articles/580893/:
所以你
eth0
只能合二为一。您的设置具有两个虚拟接口和一个网桥,可以解决此问题。我不明白如果将 IP 绑定到br0
而不是 ,它对应用程序的更改eth0
,他们应该看不出有什么区别。否则,您将需要提供更多详细信息。您是否真的遇到了问题,如果有,是哪些问题,还是您只是期待它们?如果可以使用它们,请查看 VLAN:您可以将它们中的每一个(离开同一个物理接口)放在不同的名称空间中。这在此处进行了详细说明:https ://blog.scottlowe.org/2014/03/21/a-follow-up-on-linux-network-namespaces/
如果您不能使用网桥或 VLAN,则需要设置一些 IP 转发或 NAT。