一、搭建背景
Eve-ng/pnetlab是集成度高,功能丰富的模拟器软件,支持iol、qemu、dynamips等虚拟化/模拟器软件,是IT工作者在学习/研发/实施/排障等方面的得力助手。该软件运行过程中依赖相关镜像以及yml配置文件、图标等资源,需要从网络上搜索。对于初入者,以及重度使用者的使用增加了复杂度,消耗了精力。近期,发现在国外的LabHub团队,其对资源进行了梳理,并编写ishare2脚本用于下载和部署,类似Unbuntu的apt以及CentOS的yum系统软件管理软件,使得效果良好,效率得到提升。LabHub团队及iShare2软件、镜像仓库均在国外,国内下载以及使用起来会有些许问题。由此,萌生了在国内搭建的念头。
为提高国内使用模拟器软件效率,经过对LabHub的iShare2软件和镜像仓库运行方式分析,并与该团队成员Alex进行讨论后,对方表示支持并将其内容通过Google Drive网盘的形式共享与我。对方十分高兴有人能够在China部署该镜像站点,并提供了一系列的帮助。主要是提供了镜像同步方案:
- 对方将文件内容以Google Drive的形式共享。
- 本地将使用rclone的方式对其进行同步并定期同步至本地网盘(暂定123pan,有直链功能,速度快)。
- 修改ishare2插件中的镜像站点位置,并分享与国内小伙伴使用。
二、与labhub组织沟通并获得镜像仓库源站访问权限
Google Drive共享文件夹
三、克隆源站数据到本地
wget https://downloads.rclone.org/v1.64.2/rclone-v1.64.2-linux-amd64.zip
unzip -d . rclone-v1.64.2-linux-amd64.zip
cp ./rclone-v1.64.2-linux-amd64/rclone /bin/
配置
rclone config
# 18 for google drive
# 35 for ssh
配置rclone同步google drive这块还是有点窍门,当输入rclone config
后,先选择18 google drive,然后慢慢敲回车,不用配置advance高级选项,当转到google web页面认证之后,会提示是不是开启team drive,这个是我们需要的,然后选择1个。
同步过程中,首先选择同步1.2TB的UNETLAB II,选择ssrdog 75块企业每月850GB流量,中间还剩大概5GB流量的时候,进行了68元的流量重置,又获得了850GB流量。而ssrrdog所产生的socks代理没有直接给rclone使用,而是使用proxycap为rclone提供socks代理服务。整个同步过程花费33小时。'
当我在11月18日上午同步UNETLAB II成功后,继续同步500GB左右的UNETLAB I。但是同步了2个文件后,突然报大量文件找不到。经过google drive后台查看,美国方面Alex取消了共享权限,而且也没有邮件通知。于是我给Alex留了言,大概2个小时候左右,Alex回复说是不小心取消了,然后恢复了访问权限。继续同步。
这次同步由于ssrdog流量已不多,于是采用ssh生成socks端口的形式,从香港作为中继拉取数据。分别测试了限制香港出口带宽50Mbps、100Mbps和300Mbps,结果大概稳定在80Mbps。但是有一个问题,就是同步大概100GB文件会导致ssh打出的socks代理端口异常。然后使用killall ssh;ssh -NfD 0.0.0.0:9999 root@xxx
的形式,同时rclone和proxycap无需变化,同步会自动继续。
后来发现,Google Drive对于同步是有限制的。
整理同步命令:
cd /Volumes/labhub/; rclone sync unetlab2: "local:UNETLAB II" --log-level INFO
cd /Volumes/labhub/; rclone sync unetlab1: "local:UNETLAB I" —log-level DEBUG
四、同步镜像数据到123pan
UNETLAB II的数据与国内之前接触到的数据差不多,同步时大多文件校验后直接秒传,大概几个小时就完成。
UNETLAB I的数据则新增较多,上传持续将近2天。
五、国服:修改官方ishare2软件适应国内环境
该部分内容由我在服务端操作,定期与源站同步,并适配国内仓库地址。
如果想自建ishare2仓库,供参考。
#!/bin/bash
cd /www/wwwroot/labhub.sddts.cn/
## 从官方下载ishare2文件
wget -O ishare2 https://raw.githubusercontent.com/ishare2-org/ishare2-cli/alpha/ishare2
## 修改json文件下载地址为国内地址
sed -i 's#https://raw.githubusercontent.com/ishare2-org/mirrors/main/index.gd.json#https://labhub.sddts.cn/index.gd.json#g' ishare2
sed -i 's#https://raw.githubusercontent.com/ishare2-org/ishare2-cli/$CHANNEL/sources.list#https://labhub.sddts.cn/sources.list#' ishare2
## 修改官方脚本中定位template文件错误的bug
sed -i '498c\ data=$(mysql -uroot -ppnetlab -D pnetlab_db -N -e "SELECT control_value FROM control WHERE control_value>1;" 2>/dev/null)' ishare2
sed -i '500c\ pnetlab_version=${data}' ishare2
## 从官方下载json数据文件,并修改内容中涉及的镜像仓库地址为国内地址
wget https://raw.githubusercontent.com/ishare2-org/mirrors/main/index.gd.json -O index.gd.json
sed -i 's#https://drive.labhub.eu.org/0:#https://vip.123pan.cn/1815238395/UNETLAB%20I#g' index.gd.json
sed -i 's#https://drive.labhub.eu.org/1:#https://vip.123pan.cn/1815238395/UNETLAB%20II#g' index.gd.json
## 此处用处不大,对于一般使用不涉及,只是也修改成国内下载地址。并将获取相关github文件时增加国内ghproxy头部。
wget -O sources.list https://raw.githubusercontent.com/ishare2-org/ishare2-cli/alpha/sources.list
sed -i 's#https://raw.githubusercontent.com/#https://ghproxy.sddts.cn/https://raw.githubusercontent.com/#' sources.list
sed -i 's#https://labhub.eu.org/api/raw/?path=#https://vip.123pan.cn/1815238395#' sources.list
六、用户:终端下载与使用方法
大家可以在pnetlab 4.2.10中测试使用,对eve-ng暂时没有进行测试。另外,大家也可以直接访问123pan的镜像仓库,按需下载使用。
目前采用的 版本是3.2-alpha,由Alex近期完善,并在TG群进行内测。
(1) 修改本地apt仓库
sed -i 's#vn.archive.ubuntu.com#mirrors.ustc.edu.cn#g' /etc/apt/sources.list
sed -i 's#repo.pnetlab.com#mirrors.sddts.cn/repo.pnetlab.com#g' /etc/apt/sources.list
sed -i '/i-share.top/d' /etc/apt/sources.list
rm -f /etc/localtime ; ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
apt update -y
apt install -y jq curl tree unrar qemu-tools
(2) 下载ishare2
rm -rvf /opt/ishare2/cli/*;rm -rvf /usr/sbin/ishare2 ; wget --no-check-certificate -O /usr/sbin/ishare2 https://labhub.sddts.cn/ishare2 && chmod +x /usr/sbin/ishare2 ; mkdir -p /opt/ishare2/cli/tmp ; wget --no-check-certificate -O /opt/ishare2/cli/tmp/ishare2.json https://labhub.sddts.cn/index.gd.json
(3) 配置ishare2
ishare2 config
一路回车,最后来个y
(4) 使用ishare2下载
ishare2 search huawei # 搜索华为镜像
ishare2 pull qemu 525 # 下载华为镜像
自制镜像
(1)华为usg镜像
调整启动项为serial,也就支持了telnet协议,而不是默认的vnc
# 在pnetlab里面直接修改qcow2文件,实现huaweiusg6kv-usg可以使用telnet登录
# 下载镜像
ishare2 search huaweiusg6kv-usg
ishare2 pull 529
# 挂载并修改
# virt-filesystems -a /opt/unetlab/addons/qemu/huaweiusg6kv-usg/hda.qcow2
guestmount -a /opt/unetlab/addons/qemu/huaweiusg6kv-usg/hda.qcow2 -m /dev/sda1 /mnt/
cat /mnt
sed -i 's:DEFAULT normal:DEFAULT serial:g' /mnt/boot/extlinux/extlinux.conf
#sed -i 's:DEFAULT serial:DEFAULT normal:g' /mnt/boot/extlinux/extlinux.conf
umount /mnt
# 修改模版镜像文件
sed -i 's#console: vnc#console: telnet#g' /opt/unetlab/html/templates/intel/huaweiusg6kv.yml
(2)OpenEuler镜像
制作OpenEuler22.03 sp3镜像。账号root,密码Lab_1314
# 使用virtualbox安装openeuler 22.03 sp3
# 关机
cd /mydata/virtualbox/openeuler
rm -f openeuler.vdi.img hda.qcow2
VBoxManage clonehd --format RAW openeuler.vdi openeuler.vdi.img
qemu-img convert -f raw openeuler.vdi.img -O qcow2 hda.qcow2
更新记录
- 2024/02/26: 同步镜像,无新增/变更。
- 2024/05/11:同步镜像,更新PNETLab 6.0.0-56、PNETLab-6.ova、PNET_4.2.10.ova、PNetLab-v.4.2.10、PNetLab-v.5.3.13、RG-NSE-Switch-V1.03、RG-NSE-Route-V1.03等。
4 条评论
很不错。除了那个qemu-tools
会考虑关停服务么。。如果不考虑可以支持你
ishare2 config 这一步过不去,卡在了“Unable to locate package qemu-tools”
这个是由于本地apt install无法安装qemu-tools。因为pnetlab或者eveng使用的虚拟机的ubuntu版本已经过期等原因导致。可以修改系统更新源,然后手动安装apt-get install qemu-tools试试。