目录
从1979年的chroot到2013年的docker
利用命名空间来隔离进程

命名空间分六类:进程命名空间,网络命名空间,IPC命名空间,挂载命名空间,UTS命名空间,用户命名空间



- ip netns add aaaa
- #创建一个名为aaaa的命名空间
- ip netns delete aaaa
- 删除已创建的网络命名空间aaaa
- ip netns exec aaaa bash
- 在网络命名空间中执行bash命令,如果想退出,需要使用exit
ip netns ls
exit
- ip link
- 在linux主机中则需要输入 ip netns exec aaaa ip link list
iptables -t nat -nl
- route -n
-
- linux主机中就是 ip netns exec aaaa route -n
ip link add veth0 type veth peer name veth1
type veth 说明veth0网卡类型是虚拟以太网网卡
peer name 伙伴名
eth以太网;v代表virtual,虚拟
在物理机上查看: ip a s
这两个网卡都还属于 "default"或"global"命名空间,和物理网卡一样。把其中一个网卡转移到命名空间aaaa中
ip link set veth1 netns aaaa (把创建的veth1网卡添加到aaaa网络命名空间中)
ip netns exec aaaa ip link
linux命令行中: ip netns exec aaaa ip link delete veth1
当删除命名空间中的虚拟网卡时,会将物理机中的的虚拟网卡一起干掉
就是 veth0 和 veth1 一起被删除
- ip netns exec aaaa ip addr add 192.168.50.2/24 dev veth1
- 在linux中查看网络状态:ip netns exec aaaa ip addr
在虚拟网卡配置ip后,还是属于down状态,需要启动后才能用
- ip netns exec aaaa ip link set veth1 up
- ip netns exec aaaa ip link set lo up
此时,物理机中的虚拟网卡还是没有地址,因此需要给物理机的虚拟网卡配一下地址
- ip addr add 192.168.50.3/24 dev veth0
- 查看状态
- ip a s veth0
- 启动
- ip link set veth0 up
ping 192.168.50.2
此时的命名空间aaaa,只能访问192.168.50.0/24这个网段如果需要访问物理机中所有的网段,需要添加下默认路由条目(跟fq有点像)
ip netns exec aaaa ip route add default via 192.168.50.3
将 192.168.50.3作为默认网关,来进行转发数据包

