网络命名空间(非)隔离?

网络命名空间(非)隔离?

我一直在对 Linux 和网络进行一些研究,并遇到了命名空间。在阅读文章并学习如何设置后,我很困惑。

我在系统上安装了一个应用程序,当我在全局命名空间(无命名空间)中运行它时,我可以使用主机的 IP 地址从 lan 连接到 Web GUI。现在,当我创建命名空间时,在创建任何虚拟适配器或执行任何其他操作之前,如果我在命名空间中打开应用程序,我仍然可以使用相同的 IP 从 LAN 连接到它。

我用来启动服务的命令是:

sudo ip netns exec blue service *application* start

我的理解是“网络”命名空间应该隔离进程。那么我错过了什么?

顺便说一句,我通常将这些指令用于命名空间:

Linux 网络命名空间简介

答案1

那么我错过了什么?

您缺少的是service与 进行通信init,本质上是逃避网络名称空间。应用程序最终在与 init 系统相同的网络命名空间中运行(默认情况下)。

从本质上讲,问题service不仅fork在于exec应用程序守护程序二进制文件(这将保留命名空间)。相反,它只不过是init通过(我相信)Unix 域套接字传递其参数。安全容器还隔离文件系统以防止这种情况发生。

我会尝试直接调用应用程序守护程序二进制文件(ip netns exec [namespace]当然,在 下)。或者使用真正的容器软件,其他人已经解决了所有棘手的细节......

相关内容