我使用“ip netns add foo”在 Linux 中创建了一个命名空间,创建了一对 veth 接口并在命名空间中移动了一个。我设置了 IP 地址等,以便现在我可以从默认命名空间(即主机) ping 我的“foo”命名空间。
然而,问题在于将命名空间 foo 中的链接删除回默认链接。我应该使用哪个命令?
我有
eth0,在我的主网络命名空间中jail0,位于备用网络命名空间 (name name0) 中。这个命名空间由一个被监禁的环境使用。jail0是macvlan别名的eth0。我看到网络没有任何问题,从我的主系统和我的监狱。
但是,我无法互相ping通。
为什么会这样?我想让它们触手可及。
在其他网络接口的命名空间中不存在任何网络接口。
使用 fedora 32,我在网络命名空间内启动了一个 shell,使用
sudo ip netns add net0
sudo ip netns exec net0 sudo -u fred /usr/bin/bash
Run Code Online (Sandbox Code Playgroud)
我配置了网络链接和防火墙以启用 ping。当我尝试以非 root 身份 ping 时,我得到:
$ ping 8.8.8.8
ping: socket: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试使用 sudo ping,它会起作用。为什么?
我一直在对 Linux 和网络进行一些研究,并且遇到了命名空间。阅读文章并学习如何设置后,我很困惑。
我在我的系统上安装了一个应用程序,当我在全局命名空间(无命名空间)中运行它时,我可以使用主机的 IP 地址从 LAN 连接到 web gui。现在,当我创建命名空间时,在创建任何虚拟适配器或执行任何其他操作之前,如果我在命名空间中打开应用程序,我仍然可以使用相同的 IP 从 LAN 连接到它。
我用来启动服务的命令是:
sudo ip netns exec blue service *application* start
Run Code Online (Sandbox Code Playgroud)
我的理解是“网络”命名空间应该隔离进程。那么我错过了什么?
顺便说一句,我通常对命名空间使用这些说明: