网络命名空间

网络命名空间(namespace)

命名空间(Linux namespace)是linux内核针对实现容器虚拟化映入的一个特性。我们创建的每个容器都有自己的命名空间,运行在其中的应用都像是在独立的操作系统中运行一样,命名空间保证了容器之间互不影响。

命名空间和cgroups是软件集装箱化(Docker)的大部分新趋势的主要内核技术之一。 简单来说,cgroups是一种计量和限制机制,它们控制您可以使用多少系统资源(CPU,内存)。 另一方面,命名空间限制了您可以看到的内容。 由于命名空间进程有自己的系统资源视图。

一、作用
项目中使用网络命名空间,用来隔离不同空间的应用。命名空间的使用类似虚拟化技术,在同一台物理机上,创建多个命名空间相互独立、各个空间的进程独立运行,互不干扰。

二、Linux上的操作
在这里插入图片描述

三、如何使两个命名空间ping通
在这里插入图片描述
① 创建2个网络命名空间

#ip netns add netns0

#ip netns add netns1

②模拟创建一根网线

1.先创建1对veth虚拟网络设备

veth设备特点
a、veth和其它的网络设备都一样,一端连接的是内核协议栈
b、veth设备是成对出现的,另一端两个设备彼此相连
c、一个设备收到协议栈的数据发送请求后,会将数据发送到另一个设备上去

# ip link add name vnet0 type veth peer name vnet1
创建veth

ip addr show指令后得到:
在这里插入图片描述
网卡中的inek/ether这个是Mac地址,一个网卡的物理地址,16进制6byte,全球唯一。
et
BROADCAST,MULTICAST,M-DOWN>:这个叫net_device flag 网络设备的标识
BROADCAST:表示网卡有广播地址,可以发送广播。
MULTICAST:表示网卡可以发送多播报

注意:这两个虚拟网络设备都属于“default” 或“global”命名空间,和物理网卡一样。

③添加网卡到命名空间

# ip link set vnet0 netns netns0

# ip link set vnet1 netns netns1

④给两个主机分别配置ip(进入命名空间启动网卡然后给网卡配置ip),然后互ping

# ip netns exec netns0 ip link set vnet0 up

# ip netns exec netns1 ip link set vnet1 up

# ip netns exec netns0 ip a add 192.168.0.2/24 dev vnet0

# ip netns exec netns1 ip a add 192.168.0.3/24 dev vnet1

# ip netns exec netns0 ping 192.168.0.3

connect: 网络不可达

⑤添加路由(互相配置对端ip为网关,为什么?)

# ip netns exec netns0 ip route add 192.168.0.3 dev vnet0

# ip netns exec netns1 ip route add 192.168.0.2 dev vnet1

# ip netns exec netns0 ping 192.168.0.3 -c 2
此时ping通
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值