找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5|回复: 0

Proxmox PVE上安装Openwrt的几个重点:VM or LXC? 哪个镜像? 网卡直通? 一键安装?

[复制链接]

69

主题

0

回帖

227

积分

管理员

积分
227
发表于 5 天前 | 显示全部楼层 |阅读模式
如果你的x86 Mini PC迷你主机有超过一个网口,那么用来玩Openwrt就不要错过,尤其是 Openwrt这么轻量级的路由网络系统,不用 Proxmox 虚拟机来运行太浪费。 本文继续是20分钟快文一篇,总结Proxmox PVE上安装Openwrt的几个重点、常见问题、以及如何极速安装的方法。

如果你还不知道Proxmox:他是一个免费开源的Linux虚拟机系统,可以模拟出多种系统(包括Windows)并让他们同时运行,实现硬件利用率最大化、用途多样化、价值最大化。
roxmox 上安装OpenWRT的三大思路
根据网上的分享,在Proxmox上安装OpenWRT有三大思路:
  • VM (Virtual Machine)虚拟机
  • CT (Container, 或称LXC Linux Container) 容器
  • Docker 容器
装Openwrt,要 Create VM 还是 Create CT?
按小U的主观分析,第一方案VM (Virtual Machine)虚拟机 是最优解。 虽然VM理论上运行效率不及容器,但是在INTEL 12代N100 X86这种高性能平台,效率的差异微乎其微。 而且VM有着 LXC和Docker 不能媲美的两大优点:
VM的内核是独立的:才能实现完整的Openwrt
「正宗」Openwrt (就是在无线路由器上刷机的) 的Linux Kernel 内核,和mainline主线的Kernel内核并不完全等同。 Openwrt有着很多为了网络效率、网络功能而做的Kernel Patches。 因此,只有用VM运行的Openwrt,才是“真正”的Openwrt。 LXC和Docker的Openwrt,因为内核是共享PVE HOST宿主主机,也就是PVE的Debian线Kernel。
VM实现直通十分简单
硬件直通(passthrough)是虚拟机系统中的重要概念(和玩法)。 理论上,直通可以实现硬件的效率最大化和隔离(也就是只有直通的那个系统可以“碰到”直通的硬件)。 这在网络安全理论上十分重要,例如,WAN接口是要做到绝对的隔离防火墙,所以WAN的网口用直通隔离十分合适。 但是如果在虚拟层面上,是利用Linux Bridge 虚拟网桥来做WAN,就增加了主机会被暴露的风险,人为或BUG导致本身应该处于内网的虚拟机或宿主机串到了WAN上就麻烦了。 VM上直通硬件用鼠标点几下就可以了,CT(LXC)中要用修改文档的方法把权限授予 Container,新手作比较困难。
因此,Ups-N100 也是选用Proxmox的VM虚拟机来运行Openwrt,这是多数人最佳的选项。
Openwrt x86系统镜像的选择
确定了 Openwrt的安装思路后,到Openwrt 的官网关于 x86的安装wiki页面:[OpenWrt Wiki] OpenWrt on x86 hardware (PC / VM / server) 介绍到 Openwrt 的镜像有好多选择:
X86 Openwrt 镜像的下载页面 (23.05.4例) Index of /releases/23.05.4/targets/x86/ (openwrt.org)
首先是系统架构有四种:
  • 64: 现行绝大多数x86主机都是64位的,选这个
  • Generic: 32位主机的,例如Pentium四代
  • Legacy: 超级老爷机 Pentium MMX, i586 等等
  • Geode:没听说过的上古平台
然后到文件系统,这一步我们在刷Openwrt时候会比较常遇到:
Openwrt不同文件系统(File System)的镜像
  • ext4-combined-efi.img.gz 这个磁盘映像使用单一的可读写 ext4 分区,而不使用只读的 squashfs 根文件系统。 因此,根分区可以扩展以填满大型硬盘(例如 SSD/SATA/mSATA/SATA DOM/NVMe 等)。 由于需要只读的 squashfs 分区才能运作,功能如安全模式或出厂重置将无法使用。 该映像包含启动分区和根分区以及更新的 GRUB2 的主启动记录(MBR)区域。
  • ext4-combined.img.gz 这个磁盘映像与上述相同,但它旨在使用 PC BIOS 而非 EFI 启动。
  • ext4-rootfs.img.gz 这是一个仅包含根分区的分区映像。 它可用于安装 OpenWRT,而不覆盖启动分区和主启动记录(MBR)。
  • squashfs-combined-efi.img.gz 这个磁盘映像使用传统的OpenWRT布局,包含一个只读的squashfs根文件系统和一个可读写分区,用于存储设定和安装的软件包。 由于这个映像的组装方式,你将只有不到 100MB 的空间来存储额外的软件包和配置,且 extroot 不起作用。 它支持从 EFI 启动。
  • squashfs-combined.img.gz 这个磁盘映像与上述相同,但它旨在使用 PC BIOS 而非 EFI 启动。
  • squashfs-rootfs.img.gz
  • kernel.bin Openwrt 的内核
  • rootfs.tar.gz 这个压缩包包含来自根分区的所有文件。 可以将其解压到根文件系统上,而不需要覆盖分区。 为避免冲突,强烈建议备份任何旧文件,并将此文件解压到一个空文件系统上。
是不是十分复杂? 小U帮大家梳理:
文件系统 EXT4 vs SquashFS vs 散件
用一个极度不严禁但容易理解的比喻:EXT4可以理解因为我们常见的Linux的NTFS,可以随意读写修改。 而SquashFS就像一个下了写保护的USB储存或者是CD,不能随意读写。 在「传统」的OpenWRT用途环境中,SquashFS更为主流,他将系统的最主要文件(出厂设定)写保护了起来,有事就同透过长按 RESET按钮,实现恢复到出厂设定。 但是SquashFS修改起来就十分困难。
因为我们使用 Proxmox VM虚拟Openwrt,Proxmox本身有着极其强大的虚拟机备份和快照功能。 这能够完全取代 SquashFS 的功能。 所以,x86上我们优先选择EXT4。
最后题外话的说一下“散件”。 镜像名称中有 combined和combined-efi的系统镜像,都是包含了启动分区以及系统分区(Linux的启动逻辑就不详细讲,有兴趣请留言)但散件就是自己来“组装”,最常见就是自己来搞定Kernel 的启动,然后把rootfs 放到一个分区中继续加载系统,LXC常见做法。
Combined vs Combined-EFI
传统和EFI的启动引导,Proxmox实际上两种都支持,EFI / UEFI 引导能支持更多种的硬盘分区和启动方式,黑群晖系统多数都选UEFI引导。 但是 OpenWRT 我个人认为没有必要那么花俏,选择 Combined , 用传统BIOS方法启动 即可。
综上所述,Ups-N100 是选用 x86/64/ext4-combined.img.gz 的镜像安装Openwrt。
极速安装 OpenWRT VM的方法
Proxmox用家一定要知道的一键脚本大全: Proxmox VE Helper-Scripts (tteck.github.io) 有着Openwrt的极速安装脚本,只需要在PVE SHELL中跟着指示输入:
bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/vm/openwrt.sh)"
然后按提示作即可。
两个要点:
  • 开始前先配置好两个虚拟网桥(后面可以修改)
  • 虚拟网桥的VLAN tag在启动后在 VM 的 Option 中删去。 不然会连不上。
最后不要忘了检查是否要把 rootfs分区拓展到 Proxmox 分配的大小。 不然你分了8GB给Openwrt他默认只有200MB: https://openwrt.org/docs/guide-user/installation/openwrt_x86#expanding_root_partition_and_filesystem
OpenWRT 网卡:直通 vs Linux Bridge虚拟网桥
最后说多网口的主机怎么把网卡(网口)交给Openwrt管理。 直通的好处,上文已经说过了,可以实现硬件的效率最大化和隔离。 而且,透过Linux Bridge交给Openwrt的Port Status永远是绿色Connected,而且没有连线速率。 直通的网卡就有正确显示:
eth0 eth1 是 Linux Bridge, eth2 和 eth3 是 网卡直通
但是如果把所有网口,例如Ups-N100上的4个2.5GBE网口都直通了给Openwrt,就会让PVE宿主主机没有了网卡,无法透过网络访问。 所以至少是要保留一个Linux Bridge虚拟网桥,这个网桥起码能连接着三个“东西”:
  • Proxmox Host宿主系统
  • 这个物理网卡网口
  • Openwrt系统
Ups-N100保留了两个 Linux Bridge,一个的IP CIDR是挂在和Openwrt同IP段。 一个是挂在上级路由器、惯用路由器的IP段上。 这是为了方便在OpenWRT或者Proxmox VM出现问题时候,还能够通过将计算机IP设为同IP段来访问到Proxmox。
由于Proxmox VM的硬件加载机制,Linux Bridge会首先加载,然后再到直通网卡。 所以为了保持 Openwrt里面的 eth0 eth1 eth2 eth3 顺序,和 Ups-N100 物理接口上的标注顺序一致,所以 eth0 和 eth1 设为 Linux Bridge,eth2 和 eth3 设为直通。 又由于理论上直通的网卡隔离性安全性最好,所以我把WAN口设定为直通的eth3接口(最边上的)。 这样就很好区分了。
如果你能看到这里,相信你也能开始把玩 x86 上的 Openwrt 虚拟机,体验强大的软路由能力。 如果你不知道我在写什么,太难了,可以考虑我的 Ups-N100 (毫不掩饰的业配)。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|图拉丁吧社区

GMT+8, 2025-7-21 01:51 , Processed in 0.067677 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表