继续我关于使用 netns 作为 relugar 用户的最后一个问题,我现在正在寻找一种以普通用户身份打开 VPN 隧道的方法。
所以我很自然地想到了网络管理器。任何用户都可以将其用于任何 VPN。
我可以通过编辑 sudoer 文件来允许打开 VPN 隧道,但我真的不想这样做。
所以我想知道如何在不同的网络命名空间中使用它。根据这个来源,网络管理器可能支持netns,如果我理解正确的话:
该接口必须手动配置,因为 ifupdown 尚不支持名称空间,并且它将使用相同的 /run/network/ifstate 文件来跟踪主名称空间的接口(这也是支持像 Network Manager 这样的持久性东西的一个很好的论点...)。
谢谢。
编辑:目前我不知道如何告诉网络管理器管理多个名称空间。我现在的想法是在每个命名空间中启动网络管理器的多个实例(作为根)。事实上,我无法启动网络管理器的多个实例。从系统日志:
<error> [1443615747.550129] [nm-dbus-manager.c:808] nm_dbus_manager_start_service(): Could not acquire the NetworkManager service as it is already taken.
答案1
您链接到的博客文章仅列出了ip netns
命令,并且正是在此上下文中(不幸的是您在引用时遗漏了)ifupdown
提到了,只有网络管理员。为了使用多个网络管理器实例,您需要首先根据可能的挂载命名空间和 IPC 隔离它们(请阅读:dbus unix 套接字 IPC,如果我没有记错的话)。加入网络命名空间或创建自己的隔离只是沙箱或隔离网络管理器的一系列复杂步骤中的最后一步。您可能最好从一些容器开始,并将所有必需的基础设施内容放入其中……但这会导致各种问题,尤其是网络容器的强制 IPAM 内容,具体取决于您选择的网络驱动程序模型。