创建命名空间(Namespaces)并配置虚拟网卡

 前言:原文在我的博客网站中,持续更新数通、系统方面的知识,欢迎来访!

创建命名空间(Namespaces)并配置虚拟网卡icon-default.png?t=N7T8https://myweb.myskillstree.cn/85.html

目录

简述:

命名空间的一些命令展示:

两种为命名空间执行命令的方式

Veth Pair

练习

测试:


简述:

        命名空间(Namespaces)是Linux内核提供的一种隔离机制,用于将系统资源(如进程、网络、文件系统、用户等)隔离成不同的视图,使得不同的进程组在不同的命名空间中具有独立的资源视图。

扫描二维码关注公众号,回复: 17451244 查看本文章

        命名空间提供了一种轻量级的虚拟化解决方案,可以在不增加额外的系统资源开销的情况下,实现多租户、安全隔离和资源共享等功能,一个命名空间里有一个进程及所需资源。

        对系统资源进行分区,以实现某种形式的进程隔离,这样,对一个命名空间中资源的更改不会影响其他命名空间中的资源,包括进程 ID、主机名、用户 ID、文件名和网络接口等。

        可以虚拟化网络堆栈,每个网络名称空间都有自己的资源,例如网络接口、IP 地址、路由表、隧道、防火墙等,例如,iptables添加到网络名称空间的规则只会影响进入和离开该名称空间的流量。

命名空间的一些命令展示:
ip netns help                         # 查阅帮助
ip netns list                         # 查看所有命名空间
ip netns delete <name>                # 删除命名空间
ip all netns delete                   # 删除所有命名空间
ip netns add net0                     # 创建net0的命名空间
ip netns add net1                     # 创建net1的命名空间
ip netns exec net0 bash               # 进入net0的bash
exit                                  # 退出命名空间
ip link set lo up                     # 打开环回网卡
两种为命名空间执行命令的方式

        1、在宿主机上执行ip netns exec bash进入命名空间的bash后再执行命令

        2、在宿主机上执行ip netns exec net0 +命令,直接在宿主机上进行控制

Veth Pair

        成对的虚拟网络设备接口,可以用户连接容器/网桥/命名空间,相关命令展示如下:

ip link add type veth                                        # 创建veth pair网卡
ip link set veth0 netns net0                                 # 将veth0网卡添加到net0的命名空间
ip link set veth1 netns net1                                 # 将veth1网卡添加到net1的命名空间
ip netns exec net0 ip addr add 10.0.0.1/24  dev  veth0       # 为net0的veth0网卡添加地址
ip netns exec net1 ip addr add 10.0.0.2/24  dev  veth1       # 为net1的veth1网卡添加地址

练习

  • 创建命名空间net0和net1;
  • 创建一对Veth网卡并为每个命名空间分配一个Veth网卡;
  • 为Veth网卡添加IP地址并实现相互通信;

1、切换到root用户

su root

2、创建命名空间net0和net1

ip netns add net0                                     # 创建net0的命名空间
ip netns add net1                                     # 创建net0的命名空间
ip netns list                                         # 查看所有命名空间

3、创建一对Veth网卡并为每个命名空间分配一个Veth网卡

ip link add type veth                                          # 创建veth pair网卡
ip link set veth0 netns net0                                   # 将veth0网卡添加到net0的命名空间
ip link set veth1 netns net1                                   # 将veth1网卡添加到net1的命名空间

4、为Veth网卡添加IP地址并实现相互通信

ip netns exec net0 ip link set veth0 up                               # 打开命名空间net0的veth0网卡
ip netns exec net0 ip link set veth1 up                               # 打开命名空间net1的veth1网卡
ip netns exec net0 ip addr add 10.0.0.1/24  dev  veth0                # 为net0的veth0网卡添加地址
ip netns exec net1 ip addr add 10.0.0.2/24  dev  veth1                # 为net1的veth1网卡添加地址

测试:

        用命名空间net0的veth网卡去ping一下net1的veth网卡

ip netns exec net0 ping 10.0.0.2

猜你喜欢

转载自blog.csdn.net/m0_74367891/article/details/137167272