奇奇怪怪 VTTP-虚拟化拓扑测试平台 wyl 2026-02-06 2026-02-06 虚拟化拓扑测试平台 项目地址 1 https://github.com/wylgogogo/V-TopoTestingPlat
简单介绍 这玩意的背景是这样的,作为一个苦命的社畜,测试镜像的时候经常要跑到机房去接线做测试,突然有一天想到能不能做一个类似于ensp那样的模拟平台?!那岂不是嘎嘎方便,然后就有了这么个玩意🤭
简单演示 首先模拟一个场景,你需要使用某个防火墙镜像搭建一个双机环境,并且要基于这个防火墙使用IPSEC去连接两边的终端
可以在画布拖动设备,使他们对齐,点击可以对他们进行一个初始化配置
选中设备上下左右的端点,可以进行连线,可以模拟网线连接,这里我们将防火墙的eth2连起来,模拟公网
接下来我们添加模拟终端,点击左边PC终端,并调整位置与连线
现在整个项目的拓扑已经部署好了,我们点击左侧部署环境,后台会自动部署这些虚拟化设备
等待一会,环境就部署好了,这个时候可以点击右边的资源状态,查看部署的资源,已经cli管理等
可以看到分为虚拟机,容器,以及网络 👆,并且点击虚拟机或容器的终端,可以进入ssh/串口
这个时候就可以根据需求做测试了,整个虚拟环境已经部署好了 部署安装 一、部署的机器需要能够支持虚拟化,可以通过以下方法查看支不支持
如果显示
1 2 wyl@wyl-KVM:~$ ls /dev/kvm /dev/kvm
则说明支持虚拟化
二、网络配置 我们这边的测试环境网段是192.168.168.0/24并且宿主机上面的ens3配置了 192.168.168.160,为了实现虚拟机通网段管理,我们需要将ens3变成一个桥
1 2 3 4 5 6 7 8 9 10 11 12 # 创建管理桥 sudo ip link add br-mgmt type bridge sudo ip link set br-mgmt up # 把物理网卡塞进桥 sudo ip link set ens3 master br-mgmt sudo ip link set ens3 up # 把 Ubuntu IP 挂到桥上 sudo ip addr flush dev ens3 sudo ip addr add 192.168.168.160/24 dev br-mgmt sudo ip route add default via 192.168.168.1
三、dhcp服务器配置 为了不用手动去一个一个配置虚拟设备的管理IP,所以需要内置一个dhcp服务器
1 sudo apt install -y dnsmasq
1 sudo vim /etc/dnsmasq.d/mgmt.conf
1 2 3 4 5 interface=br-mgmt bind-interfaces dhcp-range=192.168.168.50,192.168.168.200,12h dhcp-option=3,192.168.168.1 dhcp-option=6,192.168.168.1
1 sudo systemctl restart dnsmasq
1 dnsmasq: syntax check OK.
四、创建一个libvirt直连网络 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo vim /tmp/br-mgmt.xml # 写入 <network> <name>br-mgmt</name> <forward mode="bridge"/> <bridge name="br-mgmt"/> </network> # 加载 sudo virsh net-define /tmp/br-mgmt.xml sudo virsh net-start br-mgmt sudo virsh net-autostart br-mgmt
五、将防火墙镜像(或者其他的镜像都行,格式是qcow2的,目前仅支持qcow2)放置在/img目录下
六、git项目到服务器并启动 1 git clone https://github.com/wylgogogo/V-TopoTestingPlat.git
1 2 cd V-TopoTestingPlat/ sudo sh start_all.sh
可以将这个start_all 注册到systemctl 中,通过systemctl start/stop/status 管理
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 root@wyl-KVM:/home/wyl/V-TopoTestingPlat# cat /etc/systemd/system/vttp.service [Unit] Description=vttp After=network.target libvirtd.service docker.service Requires=libvirtd.service [Service] Type=simple User=root WorkingDirectory=/home/wyl/V-TopoTestingPlat Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" Environment="SUDO_USER=wyl" # 启动命令 ExecStart=/bin/bash /home/wyl/V-TopoTestingPlat/start_all.sh # 重启策略 Restart=on-failure RestartSec=10s # 超时设置 TimeoutStartSec=60s TimeoutStopSec=30s # 标准输出和错误日志 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target