在Proxmox VE中安装Openwrt作为软路由

最近一直种草软路由,从j1900看到i5 7200u,无奈囊中羞涩,最便宜的也得500以上,于是打算把大学时用的旧笔记本利用起来,i7 4702mq的处理器即使放到今天也不算过时(感谢牙膏厂)。但如果只是安装一个Openwrt的话,有点太浪费硬件性能,于是打算在Proxmox VE中安装Opnewrt虚拟机。

安装Proxmox VE

  1. 进入PVE下载页面,下载最新的iso镜像

  2. 使用ultraISO将ISO写入U盘,注意写入方式需要选择RAW,Linux用户可以直接使用dd命令

  3. 将U盘插入电脑,并从U盘引导系统

  4. 选择安装到哪个硬盘,注意硬盘数据会被全部清除

  5. 设置PVE的后台管理IP地址,这是一个静态地址,最好选择一个不容易冲突的,比如我设置的192.168.1.100

  6. 安装完成后,使用另一台设备接入相同的网络,打开https://192.168.1.100:8006,进入PVE的后台管理界面

安装Openwrt

首次打开时,将在左侧看到一个pve节点以及local和local-lvm这两个存储设备,其中

  • local:存储虚拟机之外的数据,以文件形式存在于pve的文件系统之中,如iso镜像
  • local-lvm:存储虚拟机磁盘文件,当为虚拟机分配磁盘后,相应的磁盘文件存储于此

设置桥接

在安装之前,我们首先要设置网卡桥接,因为虚拟机将会使用物理网口对应的网桥作为虚拟网口,从而实现网卡的虚拟化。

  1. 选择pve节点,再选择System->Network,检查是否每个网卡都有对应的网桥

  2. 如果有未设置桥接的网卡,需要手动创建桥接,选择Create->Linux Bridge,在Bridge ports中填入对应的物理网卡的名字,如enp3s0

创建虚拟机

由于Openwrt固件通常以image镜像的形式存在,因此并不能直接启动,我们首先要进入到一个LiveCD当中,然后把Openwrt的镜像写入到虚拟磁盘,LiveCD可以选择WinPE或者Linux,这里我选择Ubuntu Desktop。

  1. 上传LiveCD,选择local->Content,点击Upload,选择镜像文件,并上传

  2. 点击Create VM,在第二步选择LiveCD的镜像,其它步骤按提示进行

  3. 创建完成后,在左侧的pve节点下即可看到对应的虚拟机,点击Start启动虚拟机,选择左侧的Console,即可进入LiveCD

  4. 进入LiveCD后下载所需的Openwrt固件,使用dd命令写入虚拟磁盘即可,例如

    1
    dd if=openwrt.img of=/dev/vda bs=4MB && sync
  5. 重启虚拟机,即可进入Openwrt

配置Openwrt

我们首先来看一下网络拓扑结构,方便下一步的设置

为了方便使用软路由,要求至少有两张物理网卡,这里我使用一个USB网卡作为第二张网卡。

  1. 在Console中修改/etc/config/network,将192.168.1.1修改为192.168.50.1,避免与光猫的IP冲突

  2. 为Openwrt的虚拟机配置两个网卡,因为Openwrt默认会将第一张网卡作为lan口,第二张网卡作为wan口,所以根据图示,需要将第一张网卡连接到bridge1,第二张网卡连接到bridge0,这样Openwrt的wan口就可以从光猫获取IP,而所有连接到bridge1,即Openwrt的lan口的设备,都会从Openwrt获取IP

  3. 将安装PVE的电脑的eth1,即Openwrt的lan口连接路由器的wan口,另一台电脑连接路由器,此时即可通过192.168.50.1这个IP地址进入Openwrt的后台

后续操作

PVE不仅可以运行Openwrt,比如我还安装了一个ubuntu server作为开发服务器,通过桥接bridge1从而与Openwrt的lan口连接,甚至还可以再安装一个windows作为下载机。

开发的时候需要很多硬盘空间,可以将物理硬盘直接映射进虚拟机,通过下面这个命令实现

1
qm set VM-ID --virtio0 /dev/disk/by-id/DISK-ID

其中VM-ID是虚拟机的编号,比如100;**–virtio**是映射类型,0是一个编号;最后一个参数是待映射的磁盘的ID。