标签: network-namespace

如何从自定义 linux 网络命名空间切换回默认命名空间?

使用ip netns exec您可以在自定义网络命名空间中执行命令 - 但是否还有一种方法可以在默认命名空间中执行命令?

例如,执行这两个命令后:

sudo ip netns add test_ns
sudo ip netns exec test_ns bash
Run Code Online (Sandbox Code Playgroud)

新创建的 bash 如何在默认网络命名空间中执行程序?据我所知,没有ip netns exec default或任何类似的东西。

我的场景是:

我想在单独的网络命名空间中运行 SSH 服务器(以使系统的其余部分不知道网络连接,因为系统用于网络测试),但希望能够通过以下方式在默认网络命名空间中执行程序SSH 连接。

到目前为止我发现了什么:

linux-networking network-namespace

17
推荐指数
2
解决办法
2万
查看次数

如何将接口移出网络命名空间?

如果我将一个接口临时移动到一个 netns 中

ip link set eth10 netns myns
Run Code Online (Sandbox Code Playgroud)

然后它不再在根目录中可见,仅在名称空间 myns 中可见。

我如何将其移回,例如(这些显然不存在):

ip link unset eth10
Run Code Online (Sandbox Code Playgroud)

也许

ip link set eth10 netns root
Run Code Online (Sandbox Code Playgroud)

或类似?

namespaces iproute2 network-namespace

11
推荐指数
3
解决办法
2万
查看次数

在指定的网络命名空间中运行 systemd 单元

我想指示 systemd 在指定的、预先存在的网络命名空间中“运行单元”,特别是在命名空间中启动单元的进程。

linux systemd network-namespace

7
推荐指数
2
解决办法
7873
查看次数

无法创建嵌套的网络命名空间

似乎无法从网络名称空间创建网络名称空间。它导致“错误:对等网络引用无效。”。

这是一个错误还是有某种我不知道的限制?

以下是我对错误的 cmd 跟踪。

# ip netns add foo1
# ip netns exec foo1 ip netns add foo2
# ip netns
Error: Peer netns reference is invalid.
Error: Peer netns reference is invalid.
foo2
foo1
# ip netns exec foo2 /bin/bash
setting the network namespace "foo2" failed: Invalid argument

Run Code Online (Sandbox Code Playgroud)

linux ip namespaces linux-networking network-namespace

6
推荐指数
1
解决办法
3513
查看次数

是否可以在 MacOS 上执行 Linux 网络命名空间 (netns)?

上下文 - 我正在尝试在 MacOSX 上运行 docker 集群。

运行 docker 的安装过程的一部分是安装pipework

管道依赖 /var/run/netns

我的问题是:Mac OS X 是否有等效的 netns?

linux mac-osx linux-networking network-namespace docker

5
推荐指数
1
解决办法
6613
查看次数

Windows 等效于 Linux 网络命名空间

Windows 是否具有等效的 Linux 网络命名空间?

我想创建一个新界面,并且该界面只能由特定应用程序访问,该界面不会侦听标准 Windows 端口(139 445 等)。

理想情况下,应用程序也不能使用其他接口,但这对我的用例来说不太重要。

最重要的是,接口不会在操作系统级别相互通信,如果它们想相互通信,它们实际上需要将数据包发送到物理/虚拟网络。IP 范围甚至可以重叠(当然这样他们就不能直接互相交谈了)。

networking windows network-namespace

5
推荐指数
1
解决办法
878
查看次数

如何在另一个进程的网络命名空间中运行命令?

有一个进程在其自己的网络命名空间中运行。我想远程登录到机器并在此进程网络命名空间中运行命令,类似这样(17543 是具有自己的网络命名空间的进程的 pid):

# ip netns exec /proc/17543/ns/net ifconfig
Cannot open network namespace "/proc/17543/ns/net": No such file or directory
# ls /proc/17543/ns/net
/proc/17543/ns/net
Run Code Online (Sandbox Code Playgroud)

它抱怨网络名称空间不存在,但看起来该文件存在。如何在另一个进程网络命名空间中运行命令?

linux namespaces network-namespace

4
推荐指数
1
解决办法
1万
查看次数

Linux 网络命名空间 - 在特定 veth 上 ping 失败

我刚刚开始探索网络命名空间。我尝试按照http://www.opencloudblog.com/?p=42中的文章实现以下简单设置

   +--------+ +------------+ +--------+
   | |------+ +------+ |------+ +------| |
   |nstest2 |veth-2++------++veth-b| 默认 |veth-a++-----++veth-1| nstest1|
   | |------+ +------+ 命名空间 |------+ +------| |
   +--------+ +------------+ +--------+

我执行以下命令:

#setup namespace nstest1
sudo ip netns add nstest1
sudo ip netns exec nstest1 ip link set dev lo up
sudo ip link add veth-a type veth peer name veth-1
sudo ip link set veth-1 netns nstest1
sudo ip netns exec nstest1 ip addr add 10.0.1.1/24 dev veth-1
sudo ip netns exec nstest1 …
Run Code Online (Sandbox Code Playgroud)

networking ping namespaces ubuntu-12.10 network-namespace

3
推荐指数
1
解决办法
8337
查看次数

如何创建永久的Linux网络命名空间

我知道该ip netns add xxx命令可用于创建 Linux 网络命名空间,但它不是永久性的,这意味着服务器重新启动后创建的命名空间将消失。

那么我怎样才能创建一个可以在服务器重启后仍然存在的永久的呢?

linux-networking iproute2 network-namespace

3
推荐指数
1
解决办法
6731
查看次数

当且仅当 openvpn 由 systemd 运行时,openvpn post-up 脚本会失败并显示“不允许操作”

我有一个由 openvpn 运行的 post-up 脚本:

#!/bin/bash
echo "I am: `whoami`"
echo "Moving interface into the netns"
ip link set dev "$1" up netns hydrogenvpn mtu "$2"
echo "Listing"
ip netns ls
echo "test"
ip netns exec hydrogenvpn cat /tmp/foobar
Run Code Online (Sandbox Code Playgroud)

如果我使用以下任何命令运行 openvpn:service openvpn start/etc/init.d/openvpn startsystemctl start openvpn@hydrogen.service,我会在日志中看到以下内容:

Sun Oct  9 11:19:15 2016 us=851109 /sbin/ip link set dev tun-hyd2 up mtu 1500
Sun Oct  9 11:19:15 2016 us=858267 /sbin/ip addr add dev tun-hyd2 10.43.43.3/24 broadcast 10.43.43.255 …
Run Code Online (Sandbox Code Playgroud)

debian openvpn init.d systemd network-namespace

3
推荐指数
1
解决办法
3524
查看次数

Netstat 和 ss 没有看到连接

我正在尝试查找 Kubernetes 集群上运行的哪个应用程序正在使用特定端口与 RabbitMQ 集群进行通信。在 RabbitMQ 上,我看到连接来自 192.168.1.10:34226。192.168.1.10是Kubernetes节点之一。登录到 192.168.1.10 后,我检查是否通过 tcpdump 命令从该节点建立了连接tcpdump -i eth0 port 34226。我看到两个方向的交通。现在我正在尝试查找哪个进程正在建立此连接。首先我尝试了 netstat:

netstat -tapn | grep 34226

结果什么也没发现。然后我尝试了 ss 但仍然一无所获。连接已建立,通过 tcpdump 我可以看到发送到 RabbitMQ 的心跳数据包以及来自 RabbitMQ 的响应。但 netstat 和 ss 不报告已建立的连接。

更新1

我发现这与网络命名空间有关。我的问题与this问题类似,但我需要找到从34226端口建立连接的进程的PID。

netstat tcpdump network-namespace kubernetes

3
推荐指数
1
解决办法
5724
查看次数