设为首页收藏本站language 语言切换
查看: 862|回复: 5
收起左侧

[分享] namespace简介

[复制链接]
 成长值: 63370
发表于 2024-1-11 10:26:56 | 显示全部楼层 |阅读模式
1.1.什么是namespace?

Namespace是Linux内核用来隔离内核资源的方式,这些资源包括Mount、Process ID、Network、InterProcess Communication、UTS、User Id等。命名空间中的进程,只能看到属于自己的资源,无法感知其他namespace的资源,从而认为自己拥有全部的资源。

1.2.namespace的用处?

当前流行的docker技术,其实现基础即namespace技术。为了实现docker容器的隔离性,通过指定容器运行目录,实现隔离文件系统;网络资源隔离,每个容器拥有独立的ip,端口和路由;进程间通信资源隔离,使得只有通一个namespce中的进程可以互相通信;UserId隔离,容器拥有自己的的nodename和domainname;ProcessID隔离,每个容器内拥有独立的PID。

openstack Neutron也使用Linux的namespace实现网络资源的隔离,实现虚拟网络。

1.3.network namespace间通信

每个独立的netns包含virtual network devices、IP address、IP routing tables、/proc/net direcotry、ports等。

1.3.1.          两个netns使用veth pair通信


                               
登录/注册后可看大图

创建veth pair


[root@HS ~]# tunctl -t tap1

Set 'tap1' persistent and owned by uid 0

[root@HS ~]# tunctl -t tap2

Set 'tap2' persistent and owned by uid 0

[root@HS ~]# ip link add tap1 type veth peer name tap2

创建namespace1


[root@HS~]# ip netns add ns_test

[root@HS ~]# ip netns exec ns_test ifconfig -a

lo: flags=8<LOOPBACK>  mtu 65536

        loop  txqueuelen 1  (Local Loopback)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

创建tap


[root@HS ~]# ip link set tap1 netns ns_test

[root@HS ~]# ip netns exec ns_test ifconfig -a

lo: flags=8<LOOPBACK>  mtu 65536

        loop  txqueuelen 1  (Local Loopback)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


tap1: flags=4098<BROADCAST,MULTICAST>  mtu 1500

        ether 7a:2c:02:d9:1e:4d  txqueuelen 1000  (Ethernet)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

配置ip地址


[root@HS ~]# ip netns exec ns_test ip addr add local 10.10.10.10/24 dev tap1

[root@HS ~]# ip netns exec ns_test ifconfig tap1 up

[root@HS ~]# ip netns exec ns_test ifconfig –a

lo: flags=8<LOOPBACK>  mtu 65536

        loop  txqueuelen 1  (Local Loopback)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


tap1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 10.10.10.10  netmask 255.255.255.0  broadcast 0.0.0.0

        inet6 fe80::a8fc:76ff:fee6:ddb0  prefixlen 64  scopeid 0x20<link>

        ether aa:fc:76:e6:dd:b0  txqueuelen 1000  (Ethernet)

        RX packets 13  bytes 970 (970.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 12  bytes 928 (928.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

创建namespace2


[root@HS ~]# ip netns add ns_test2

[root@HS ~]# ip link set tap2 netns ns_test2

[root@HS ~]# ip netns exec ns_test2 ip addr add local 10.10.10.11/24 dev tap2

[root@HS ~]# ip netns exec ns_test2 ifconfig tap2 up

[root@HS ~]# ip netns exec ns_test2 ifconfig –a

lo: flags=8<LOOPBACK>  mtu 65536

        loop  txqueuelen 1  (Local Loopback)

        RX packets 0  bytes 0 (0.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 0  bytes 0 (0.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


tap2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

        inet 10.10.10.11  netmask 255.255.255.0  broadcast 0.0.0.0

        inet6 fe80::2092:3eff:fe19:1d48  prefixlen 64  scopeid 0x20<link>

        ether 22:92:3e:19:1d:48  txqueuelen 1000  (Ethernet)

        RX packets 12  bytes 928 (928.0 B)

        RX errors 0  dropped 0  overruns 0  frame 0

        TX packets 13  bytes 970 (970.0 B)

        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

两个命名空间tap口互ping


[root@HS ~]# ip netns exec ns_test ping 10.10.10.11

PING 10.10.10.11 (10.10.10.11) 56(84) bytes of data.

64 bytes from 10.10.10.11: icmp_seq=1 ttl=64 time=0.074 ms

64 bytes from 10.10.10.11: icmp_seq=2 ttl=64 time=0.061 ms

发表于 2024-1-20 22:04:12 | 显示全部楼层
我来看看,哈哈哈
板凳 2024-1-20 22:04:12 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2024-3-27 17:22:08 | 显示全部楼层
感谢楼主分享!
地板 2024-3-27 17:22:08 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2024-4-9 11:26:29 | 显示全部楼层
谢谢楼主分享
5# 2024-4-9 11:26:29 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2024-5-29 16:04:58 | 显示全部楼层
纨绔不饿死,儒冠多误身。
丈人试静听,贱子请具陈。
甫昔少年日,早充观国宾。
读书破万卷,下笔如有神。
6# 2024-5-29 16:04:58 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-31 05:48 , Processed in 0.062138 second(s), 11 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表