Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux-networking – 如何从自定义Linux网络命名空间切换回默认命名空间?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

使用ip netns exec,您可以在自定义网络命名空间中执行命令 – 但是还有一种方法可以在默认命名空间中执行命令吗? 例如,执行这两个命令后: sudo ip netns add test_ns sudo ip netns exec test_ns bash 新创建的bash如何在默认网络命名空间中执行程序?据我所知,没有ip netns exec默认或任何类似的东西. 我的情景是: 我想在
使用ip netns exec,您可以在自定义网络命名空间中执行命令 – 但是还有一方法可以在认命名空间中执行命令吗? @H_772_16@例如,执行这两个命令后:

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

@H_772_16@我的情景是:

@H_772_16@我想在一个单独的网络命名空间中运行SSH服务器(以保持系统的其余部分不知道网络连接,因为系统用于网络测试),但希望能够通过认网络命名空间执行程序SSH连接.

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

@H_772_16@>创建的网络命名空间在/ var / run / netns下列为文件(但认命名空间没有文件)
> ip netns exec代码可以在这里找到:http://git.kernel.org/cgit/linux/kernel/git/shemminger/iproute2.git/tree/ip/ipnetns.c#n132 – 我还没有掌握它正在做的所有事情,但看起来并不是很有希望.
>在认网络命名空间中,Howto query and change network namespace on linux?建议的ip netns标识$$不返回任何内容

解决方法

较新的发行版/内核支持nsenter命令,该命令应该执行您想要的操作,前提是您在执行此操作时是root用户. @H_772_16@这是一个例子(Fedora 20).

[root@home ~]# unshare -n /bin/bash
[root@home ~]# ip a l
1: lo: <LOOPBACK> mtu 65536 qdisc noop state DOWN group default 
    link/loopBACk 00:00:00:00:00:00 brd 00:00:00:00:00:00
[root@home ~]# ping google.com
ping: unkNown host google.com
[root@home ~]# nsenter -t 1 -n -- ping -c 2 google.com
PING google.com (74.125.230.65) 56(84) bytes of data.
64 bytes from lhr14s23-in-f1.1e100.net (74.125.230.65): icmp_seq=1 ttl=56 time=14.2 ms
64 bytes from lhr14s23-in-f1.1e100.net (74.125.230.65): icmp_seq=2 ttl=56 time=15.0 ms

--- google.com ping statistics ---
2 packets transmitted,2 received,0% packet loss,time 1001ms
rtt min/avg/max/mdev = 14.239/14.621/15.003/0.382 ms
[root@home ~]# nsenter -t 1 -n -- ip a l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNowN group default 
    link/loopBACk 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: p4p1: <BroaDCAST,MULTICAST,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 10:bf:48:88:50:ee brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 brd 192.168.1.255 scope global p4p1
       valid_lft forever preferred_lft forever
    inet6 fe80::12bf:48ff:fe88:50ee/64 scope link 
       valid_lft forever preferred_lft forever
[root@home ~]#
@H_772_16@这依赖于setns系统调用.你需要至少一个3.0内核和glibc-2.14才能工作.

@H_772_16@RHel 6.5提供对持久命名空间的支持,但不支持将现有进程移动到新的命名空间.

大佬总结

以上是大佬教程为你收集整理的linux-networking – 如何从自定义Linux网络命名空间切换回默认命名空间?全部内容,希望文章能够帮你解决linux-networking – 如何从自定义Linux网络命名空间切换回默认命名空间?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。