PVE 中安装 openwrt 虚拟机
我的网络拓扑图在布置完之后是这样的,非常简单:
光猫 → AC86U → openwrt in PVE → AP / Switch / PC / vm in PVE
介绍一下我的网络环境和这样布置的理由:
- AC86U: 由于我有公网,并且我的光猫不支持端口转发,就需要在路由器拨号,光猫设置桥接。
- 为了避免所有虚拟机都在 PVE 中造成 All in boom,我拿出了退休已久的 AC86U 用来拨号和端口转发,性能足够跑满千兆宽带了,重活都交给 PVE 上的 openwrt 来做(比如 openclash)。
- openwrt 的 lan (出网口) 桥接到物理网口,这样可以下级设备和 PVE 上的其他虚拟机都可以用此物理网口
我的 PVE 主机是双网口的,我先将其中一个网口和 AC86U (192.168.2.1) 连接,另外一个网口先不连网线。
下载 PVE 镜像 安装,安装完后 PVE 宿主机的管理界面为 https://192.168.2.8:8006
PVE 中新建网卡桥接
在 PVE 的网络管理界面可以看到第一个插入的网络接口名为 enp6s0
, 并且已经帮我建好了桥接 vmbr0
, 我新建了一个 Linux bridge 桥接到刚才没插网线的 enp5s0
, 名字叫 vmbr1
, 点击 Apply Configuration
即可生效。
配置 openwrt 虚拟机
配置磁盘
我们新建 openwrt 虚拟机时先不选择系统镜像, 建完后在 Hardware 界面并删掉磁盘,在宿主机上用 qm importdisk 100 /var/lib/vz/template/iso/openwrt-x86-64-generic-ext4-combined-efi.img local-lvm
命令来导入 openwrt 镜像,然后在 Hardware 界面编辑一下磁盘选为 SATA, 然后
在 Options 界面 Boot order 里只勾选 SATA。
配置网络
然后在 Hardware 界面添加 Network device vmbr1, 此时我们的 openwrt 有两个网口, 因为vmbr0 桥接的物理网卡连了上级路由 AC86U, 所以用 vmbr0 来做 wan, vmbr1 用来做 lan.
点击启动后, 通过 /etc/config/network
和 ip a
查看 mac 地址, 发现 lan 和 wan 和我们预想的是相反的,我们需要将他们对调一下
此时无法访问 opewnrt 的 luci 界面, 通过 PVE 在 openwrt 的 busybox shell 里手动设置一下 IP 就可以在 AC86U 的网络中访问了
1 | ifconfig br-lan 192.168.2.122 |
打开 http://192.168.2.122 后
- 在 Network → Interfaces → Interfaces: WAN 点击 Edit 将 eth1 改为 eth0 并保存
- 在 Network → Interfaces → Devices: br-lan 点击 Configure 将 eth0 改为 eth1 并保存
- 保存并应用
在 openwrt shell 里用 reboot
重启后即可正常使用
使用
- 通过网线连接 lan 口即可从 openwrt 获取网络.
- 想要在 PVE 虚拟机中使用 openwrt 的 lan 口, 只需在对应虚拟机的设置里将网卡改为 lan 口对应的桥接网卡
vmbr1
转发 openwrt luci
openwrt 默认不允许 wan 口访问, 如果想从 wan 口访问 openwrt, 转发 80 或者 22 到 wan 即可
20220903 edit:
我已经不使用 AC86U 了,现在将 PVE 的管理口改为了 lan 口。如果要修改 PVE 管理口的 IP 或者绑定的网口,修改 vmbr0
即可。