OpenWrt之虚拟机安装篇

因为验证技术方案,需要用openwrt,记录下,部分参考自官方指南《OpenWrt on VirtualBox HowTo》

1 下载

官网下载固件,选择x64架构的ext4-combined,其他几个选项什么意思可以自己搜下,不再这里重复了

VirtualBox虚拟机安装openwrt

当前最新版本的链接是: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

VirtualBox虚拟机安装openwrt

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,效果截图如下:

VirtualBox虚拟机安装openwrt

如果其他虚拟机接上没有分配到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,最后效果

VirtualBox虚拟机安装openwrt

11 测试

新建一个虚拟机,网卡Internal Network,名字owlan,开机后应该能自动获取192.168.3.x的IP地址,并能访问外网

Leave a Reply

Your email address will not be published. Required fields are marked *