veth

概述 veth是Linux的虚拟网卡,和其他虚拟网卡一样,它有两端。不同之处在于veth设备通常成对出现,成对的两个veth设备一端互相连接(类似于一条网线连接两块网卡),另外一端各自连接协议栈。 数据从协议栈流入veth设备后,将从另外一个与之相连的veth设备流出。 案例 veth设备通常用作容器中,实现容器连通外部网络,容器其实就是通过Namespace和CGroup技术实现进程隔离和限制的进程。 下面演示与主机不在同一个net namespace 的进程如何访问外部网络 若在虚拟机中操作,需要设置虚拟机管理软件网卡开启混杂模式,让目的非本机的mac地址通过虚拟机网卡。 方法1:通过bridge实现 网络示意图如下所示 netnamespace-01 以下操作均在net-namespace01中 创建网桥br0,并配置网络 ip link add br0 type bridge 启动网桥 ip link set br0 up 将物理网卡enp0s3加入网桥br0中,此时网络会中断,因为enp0s3 上原有的地址会消失,此时enp0s3的功能相当于一根网线,起到将br0与外界连接的作用。 ip link set enp0s3 master br0 br0相当于交换机和网卡的功能,可以在上面配置ip ip addr add 192.168.0.183/24 dev br0 配置网关地址,DNS,此处均为临时配置。 $ ip route add default via 192.168.0.1 $ echo 'nameserver 192.168.0.1' >> /etc/resolv.conf 此时可以正常访问外部网络 创建veth设备 ip link add veth1 type veth peer veth0 激活veth0,并加入网桥br0