Bootstrap

模拟两台计算机的通讯-启动虚拟机(brctl+qemu组网)

1. VPCS解释

上文我们利用GNS3 组了一个基本的网络:模拟两台计算机的通讯-GNS3仿真-CSDN博客。其中利用VPCS来做一个网络。我们本次的目标是:vm-交换-vm。

本次会用到一个新的虚拟网卡类型:TAP虚拟网卡,或者叫NIC、网络接口本质相同。这是一个更加接近真实计算机里用的网卡的虚拟网卡类型。

另外还会用到qemu,来模拟一个虚拟机。qemu也是一种模拟工具,其主要模拟计算机部分。这次我们将只用简单的qemu功能,聚焦于组网络。

 

2. 组网思路:

1. 安装qemu

2. 创建2个TAP虚拟网卡;

3. 创建一个虚拟交换;

4. 挂载两个TAP网卡;

5. 启动2个VM分别使用两个TAP;

6. ping测试;

3. 实践步骤:

1. 安装qemu

ubuntu直接安装:

sudo apt install qemu qemu-kvm

centos可以编译安装:

# 编译工具等
yum install -y yum-utils epel-release wget netcat htop tcpdump zip telnet seabios
yum group install -y "Development Tools"
yum install -y git glib2-devel libfdt-devel pixman-devel zlib-devel bzip2 \
	elfutils-libelf-devel libpcap-devel cmake glibc-static \
	python3 python3-pip python3-devel python3-tools python3-setuptools


wget https://download.qemu.org/qemu-4.2.0.tar.xz
tar xvJf qemu-4.2.0.tar.xz
cd qemu-4.2.0
./configure
make

测试是否成功:


 

注意,如果你用的是虚拟机,需要先开启嵌套虚拟化,vmware如下(其他virtualbox等工具类似,都是在处理器设置):

开启后/dev/kvm会出现一个文件

tree@ubuntu:~/Desktop$ ls /dev/kvm
/dev/kvm

2. 创建2个TAP虚拟网卡;

sudo ip tuntap add dev tap1 mode tap

sudo ip tuntap add dev tap2 mode tap

3. 创建一个虚拟交换;
 

sudo ip link add br0 type bridge

4. 挂载两个TAP网卡;



sudo ip link set tap1 up

sudo ip link set tap2 up

sudo ip link set tap2  master br0

sudo ip link set tap1  master br0

sudo ip link set  br0 up



5. 启动2个VM分别使用两个TAP;

启动一个窗口运行以下命令:

sudo qemu-system-x86_64 -m 256m -device virtio-net-pci,netdev=network0,mac=52:54:00:21:34:56 -netdev tap,ifname=tap1,id=network0,script=no cirros-0.6.2-x86_64-disk.img

启动第二个窗口运行以下命令:

sudo qemu-system-x86_64 -m 256m -device virtio-net-pci,netdev=network0,mac=52:54:00:21:34:57 -netdev tap,ifname=tap2,id=network0,script=no cirros-0.6.2-x86_64-disk.img

注意其中修改了mac地址和tap2。

6. ping测试;

进入虚拟机内,给两台虚拟机分别添加IP地址。分别执行:

ip add add 10.10.1.1/24

ip add add 10.10.1.2/24

在宿主机上开启转发:

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1


保存执行:

sysctl -p 

ping 测试

;