因为验证技术方案,需要用openwrt,记录下,部分参考自官方指南《OpenWrt on VirtualBox HowTo》
1 下载
官网下载固件,选择x64架构的ext4-combined,其他几个选项什么意思可以自己搜下,不再这里重复了
当前最新版本的链接是:https://downloads.openwrt.org/releases/24.10.2/targets/x86/64/openwrt-24.10.2-x86-64-generic-ext4-combined.img.gz
2 解压缩、扩容
解压缩
gunzip ./openwrt-24.10.2-x86-64-generic-ext4-combined.img.gz cp openwrt-24.10.2-x86-64-generic-ext4-combined.img openwrt.img
镜像文件扩容镜像文件
dd if=/dev/zero bs=1M count=1024 >> openwrt.img
扩容ext4分区,主要参考了这篇文章
sudo losetup -fP openwrt.img # find the loop path losetup .... /dev/loop39 0 0 0 0 /your_path/openwrt.img 0 512 # part fdisk /dev/loop39 # 这里39会变化,下面按需调整 # print p ... Disk /dev/loop39: 1.12 GiB, 1200095232 bytes, 2343936 sectors ... Device Boot Start End Sectors Size Id Type /dev/loop39p1 * 512 33279 32768 16M 83 Linux /dev/loop39p2 33792 246783 212992 104M 83 Linux # del partition 2 d 2 Partition 2 has been deleted. # create partition 2 n p 2 # 上面删除前的Start 33792 all Do you want to remove the signature? no 一定选no # save w # check again see volume is right lsblk ... loop39 7:39 0 1.1G 0 loop ├─loop39p1 259:10 0 16M 0 part └─loop39p2 259:11 0 1.1G 0 part ... # ext4 fix sudo partx -u /dev/loop39 sudo e2fsck -f /dev/loop39p2 sudo resize2fs /dev/loop39p2 # unmount sudo partx -d /dev/loop39 sudo losetup -d /dev/loop39
更新:据说也可以启动后再调整,我没有试过,供参考
opkg update opkg install parted losetup resize2fs BOOT="$(sed -n -e "\|\s/boot\s.*$|{s///p;q}" /etc/mtab)" DISK="${BOOT%%[0-9]*}" PART="$((${BOOT##*[^0-9]}+1))" echo fix | parted -l ---pretend-input-tty parted -s ${DISK} resizepart ${PART} 100% ROOT="${DISK}${PART}" LOOP="$(losetup -f)" losetup ${LOOP} ${ROOT} resize2fs -f ${LOOP} reboot
3 转化为vbox格式
VBoxManage convertfromraw --format VDI ./openwrt.img ./openwrt.vdi
4 创建vbox虚拟机
选择Linux x64、512内存、不使用uefi
网卡3个:
- eth0,host only,用作mng,这里需要提前在vbox中创建host only网络,我这里是192.168.56.1/24
- eth1,NAT,用作WAN口
- eth2,internal network owlan,模拟路由的lan口接入其他虚拟机
5 启用管理端口以及ssh
启动虚拟机,进入回车后自动获得root
建议先看下扩容是否成功
df -h
uci show network uci set network.lan.ipaddr='192.168.56.10' uci commit reboot
6 设置管理端口和wan口
重启后,可以从你的host上ssh了
ssh 192.168.56.10
注:如果不行,可能要去系统管理中,看下ssh中是否启用以及绑定的端口
批量设置wan口和mng口
uci batch <<EOF set network.mng=interface set network.mng.device='br-lan' set network.mng.proto='static' set network.mng.ipaddr='192.168.56.10' set network.mng.netmask='255.255.255.0' set firewall.@zone[0].network='mng' set firewall.@zone[0].name='mng' delete network.lan delete network.wan6 set network.wan=interface set network.wan.device='eth1' set network.wan.proto='dhcp' EOF
查看变更
uci changes firewall.cfg02dc81.network='mng' firewall.cfg02dc81.name='mng' network.mng='interface' network.mng.device='br-lan' network.mng.proto='static' network.mng.ipaddr='192.168.56.10' network.mng.netmask='255.255.255.0' -network.lan -network.wan6
提交应用
uci commit reboot
7 安装luci
echo "nameserver 8.8.8.8" > /tmp/resolv.conf opkg update opkg install luci
然后,就可以浏览器http://192.168.56.10访问管理openwrt了
8 配置WAN口
Network -> Interfaces -> wan -> Edit
Custom DNS servers: 8.8.8.8
9 配置LAN口
前面我们在vbox上配置的第3个网口,是LAN口
Network -> Interfaces -> Add new interface
- Name: LAN
- Protocol: Static IP
- Device: eth2
- IP我这里选192.168.3.1/24,可根据你的需求修改
- 打开DHCP Server
最后记得Save & Apply,效果截图如下:
如果其他虚拟机接上没有分配到IP,看一下高级中的强制链路是不是打开了(会无法识别链路上的设备),应该勾掉
10 配置防火墙
需要防火墙Zone才能使用
Network -> Firewall -> Add Zones
- Name: lan
- Input / Output / Intra zone forward: accept
- Coverd networks: LAN
- Allow forward to destionation zones: wan
- Allow forward from source zones: wan
最后记得Save & Apply,最后效果
11 测试
新建一个虚拟机,网卡Internal Network,名字owlan,开机后应该能自动获取192.168.3.x的IP地址,并能访问外网