首页 > 系统相关 >Linux Namespace

Linux Namespace

时间:2024-02-07 16:34:20浏览次数:27  
标签:ip Linux Namespace linux test netns net

Linux Namespace 是 Linux 内核提供的一种机制,用于实现进程之间的隔离。通过使用 Namespace,可以将一组进程和资源限制在一个隔离的环境中,使它们看起来像在独立的系统上运行一样。

PID Namespace(进程隔离):

PID Namespace 为进程提供了独立的进程 ID 空间,使得每个 Namespace 内的进程 ID 是唯一的,且从 1 开始计数。这样,每个 Namespace 中的进程看到的进程列表只包含该 Namespace 内的进程。

Network Namespace(网络隔离):

Network Namespace 提供了独立的网络栈,包括网络设备、IP 地址、路由表等。这使得不同的 Namespace 可以拥有自己独立的网络配置,实现网络资源的隔离。

Mount Namespace(挂载隔离):

Mount Namespace 提供了独立的文件系统挂载点。每个 Namespace 可以拥有自己的挂载点和挂载状态,使得不同的 Namespace 可以独立地挂载文件系统或分享文件系统。

UTS Namespace(主机名隔离):

UTS Namespace 允许每个 Namespace 内拥有独立的主机名和域名信息。这样,不同的 Namespace 内的进程可以具有不同的主机名和域名。

IPC Namespace(进程间通信隔离):

IPC Namespace 提供了独立的进程间通信资源,例如消息队列、信号量和共享内存。这使得不同的 Namespace 中的进程无法相互干扰。

User Namespace(用户隔离):

User Namespace 允许将不同 Namespace 内的用户映射到不同的 UID 和 GID。这样,不同 Namespace 内的用户可以拥有相同的 UID 和 GID,但在全局范围内是唯一的。

NET网络名称空间隔离测试

NET网络名称空间测试案例:
	(1)创建一个名称为"net-test-linux"的网络名称空间
ip netns add net-test-linux
ll /var/run/netns/net-test-linux 
ip netns exec net-test-linux ip a

	(2)启动"net-test-linux"的网络名称空间的网卡
ip netns exec net-test-linux ping 127.0.0.1  # 未启动网卡,无法ping通自己。
ip netns exec net-test-linux ifconfig lo up
ip netns exec net-test-linux ping 127.0.0.1
	
	(3)宿主机创建网络设备对
ip link add veth100 type veth peer name veth200
ip a   # 会多出来2块网卡,即veth100,veth200。

	(4)将"veth200"设备关联到咱们自定义的"net-test-linux"网络名称空间
ip link set veth200 netns net-test-linux
ip a  # 你会发现宿主机的veth200不见了

	(5)将"veth200"设备配置IP地址
ip netns exec net-test-linux ip a
ip netns exec net-test-linux ifconfig veth200 172.31.100.200/24 up
ip netns exec net-test-linux ip a

	(6)宿主机veth100也配置IP地址
ifconfig veth100 172.31.100.100/24 up
ifconfig veth100
ping 172.31.100.200

	(7)net-test-linux"的网络名称空间ping宿主机的IP地址
ip netns exec net-test-linux ping 172.31.100.100
ip netns exec net-test-linux ping 10.0.0.102  # 未添加网关,无法跨网段ping通
ip netns exec net-test-linux route add default gw 172.31.100.100  # 配置默认网关
ip netns exec net-test-linux ping 10.0.0.102  # Duang~可以ping通啦!
ip netns exec net-test-linux ping baidu.com  # 无法访问外网,这是正常的!此处建议pingIP地址,域名解析需要DNS。
tcpdump -i veth100 -nn icmp  # 宿主机可以抓取到数据报文。
ip netns exec net-test-linux iptables -vnL -t nat  # 如果想要连接外网,可以尝试手动配置NAT。

	(8)测试完成后,删除名称空间
ll /var/run/netns/   # 可以先查看挂载点文件是否存在
ip netns del net-test-linux  # 删除名称空间
ll /var/run/netns/
ip link del veth100    # 删除宿主机的虚拟网卡

标签:ip,Linux,Namespace,linux,test,netns,net
From: https://www.cnblogs.com/liuzhonghua1/p/18011039

相关文章

  • Linux常用命令全解析
    Linux是一个强大的操作系统,广泛应用于服务器、云计算、网络设备等领域。熟练使用Linux命令行是每一个IT专业人士必备的技能。本文旨在为大家提供一个Linux常用命令的快速参考指南,包括命令的基本用法、示例以及简短解释,帮助大家提高在Linux环境下的工作效率。文件和目录操作ls-列......
  • Linux常用命令全解析
    Linux是一个强大的操作系统,广泛应用于服务器、云计算、网络设备等领域。熟练使用Linux命令行是每一个IT专业人士必备的技能。本文旨在为大家提供一个Linux常用命令的快速参考指南,包括命令的基本用法、示例以及简短解释,帮助大家提高在Linux环境下的工作效率。文件和目录操作ls-列......
  • kubernetes---namespace(命名空间)
    1.查看namespace[root@k8s-master1~]#kubectlgetnamespaces#namespaces可以简写namespace或nsNAMESTATUSAGEdefaultActive130m #所有未指定Namespace的对象都会被默认分配在default命名空间kube-node-leaseActive130m kube-publ......
  • Linux下socket通信中的带外数据
    目录简介示例简介在Linux下的socket通信中,带外数据(Out-of-Band,简称OOB)是一种特殊的数据传输方式。通常,socket通信中的数据是按照顺序发送和接收的,即所谓的带内数据(In-Band)。然而,在某些情况下,可能需要发送一些紧急或重要的数据,这些数据不适合通过常规的带内数据传输方式发送,因为......
  • Linux 中 仅列出指定目录下的所有文件,但是不包括目录
     001、find命令仅仅列出文件,不包括目录a、[root@PC1test1]#ls##测试目录dir001dir002dir003file1.mapfile1.txtfile2.mapfile2.txt[root@PC1test1]#find-typef##仅仅列出文件./file1.txt./file2.txt./file1.map./file2.ma......
  • Linux下gdb如何调试coredump文件
    目录简介示例简介在Linux下,你可以使用GNU调试器(GDB)来调试coredump文件。Coredump文件是在程序崩溃时由操作系统生成的,它包含了程序崩溃时的内存内容、寄存器状态和其他相关信息。下面是在Linux下使用GDB调试coredump文件的步骤:确保你的系统已经安装了GDB。如果没有安装,你......
  • Linux--signal
    Linux的signal.h头文件包含了一系列与信号处理相关的函数。以下是一些主要的函数及其简要描述:intsignal(intsignum,void(*handler)(int)):功能:为指定的信号注册一个处理函数。参数:signum是信号的编号,handler是当信号发生时被调用的函数。返回值:成功时返回之前的信号处理......
  • geoserver在linux上乱码
     windows下部署的中文正常,迁移到linux上后,出现中文乱码,后排查出是缺少中文字体。上传中文字体上传前可用字体 1.首先输入以下命令安装字体软件:yuminstall-yfontconfigmkfontscale2.然后创建存放字体库的文件夹:mkdir/usr/share/fonts/chinese&&cd/usr/share/fon......
  • 如何在Linux系统上正确的安装和替换特定版本的GCC
    以GCC9.2为例,下面是一个完整的下载源代码,编译,安装,配置的过程cd/usr/local/srcwgetftp://ftp.gnu.org/gnu/gcc/gcc-9.2.0/gcc-9.2.0.tar.xzxz-dgcc-9.2.0.tar.xztar-xfgcc-9.2.0.tarcdgcc-9.2.0./configure--disable-multilib--enable-languages=c,c++--prefix=/u......
  • 使用Almalinux 8 搭建NTP服务器chrony
    chrony官方网站https://chrony-project.org/1、更新系统sudodnfupdatesudodnfinstallepel-release2、在AlmaLinux上安装NTP服务器dnfinstallchronysystemctlenablechronydsystemctlstartchronyd3、配置服务器vim/etc/chrony.conf添加NTP服务器地址,如serverntp......