为什么要引入命名空间?有哪些?
Linux系统是一个多用户操作系统,通常是服务器的操作系统。
服务器通常会运行很多服务,在其有限的资源下,必然会造成资源的争抢,可能导致整个服务器宕机。
需要找到一种方法来解决上面的问题,Linux便引入了命名空间机制(NameSpace)。
Linux包含PID(进程)、Network(网络)、Mount(挂载)、User(用户)、UTS(主机名)、IPC(进程间通信)等命名空间。
网络命名空间是什么?
Linux网络命名空间可以看成网络协议栈的副本,每个网络命名空间拥有独立的网络环境(回环设备、IPv4等)。
默认情况下,Linux提供init_net网络命名空间,网络协议栈和网络设备属于此命名空间。Linux也可支持用户自定义网络命名空间。
网络设备通过在其结构体中定义网络命名空间,来标识其属于某个网络命名空间。
用户如何自定义网络命名空间?
用户可以使用iproute2工具来自定义网络命名空间。
基础命令:
root@linux:/var/run# ip netns help
Usage: ip netns list # 列出网络命名空间
ip netns add NAME # 创建 NAME 命名空间
ip netns set NAME NETNSID # 分配网络命名空间id
ip [-all] netns delete [NAME] # 删除 NAME 命名空间
ip netns identify [PID] # 查看进程的网络命名空间
ip netns pids NAME # 查找使用 NAME 网络命名空间的进程
ip [-all] netns exec [NAME] cmd ... # 在 NAME 网络命名空间中执行命令CMD
ip netns monitor # 监控对网络命名空间的操作
ip netns list-id #
创建命名空间:
root@linux:/var/run# ip netns add netns0
root@linux:/var/run# ip netns list
netns0
root@linux:/var/run# ls /var/run/netns/
netns0
root@linux:/var/run# ip netns exec netns0 ip addr
1: lo: mtu 65536 qdisc noop state DOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
root@linux:/var/run# ip netns exec netns0 ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.069 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.041 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.039 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.039 ms
^C
--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3074ms
rtt min/avg/max/mdev = 0.039/0.047/0.069/0.012 ms
全部0条评论
快来发表一下你的评论吧 !