被我整坏的路由器和服务器

为了搭建 PalWorld 的私服,我又一次踏上了折腾之旅,并成功将路由器和家里的服务器都搞崩了。

好在最后两台设备都恢复如初。我就想来做一下这次“事故”的复盘。

我的设备

本次操作的有两台设备,一台是 x86 软路由,运行 Openwrt;一台是配置比较奇怪的 x86 服务器,运行 PVE。

Openwrt 的网络隔离配置

说在前头,我对 Openwrt 的操作真的是一窍不通。网络相关的知识兴许懂一些,但一到实操环境就纰漏百出了。

由于 PalWorld 服务端启动后便会在游戏的服务器列表公开自己的 IP,且无法关闭这个功能,有比较大的安全隐患。在配置好 PalWorld 服务端所运行的虚拟机后,我决定将这台虚拟机的网络与局域网内其他设备隔离。这也是所有折腾的起源。

配置 VLAN 导致的失联

我能想到的第一个方案便是,给这台虚拟机分配一个与当前局域网不同的网段,并将两个网段隔离。

VLAN 我还是知道的,便着手开始创建新的 VLAN,并保存…连不上路由器了。

急了啊,创建了 VLAN 就代表开启网桥的 VLAN 过滤。目前这个 VLAN 没有分配给任何一个接口,自然是啥都连不上了。好在 Openwrt 有自动回滚的功能,90 秒若设备连不上路由器,便会将刚刚的更改回滚…但不是每次都能成功。

有反复折腾了几次:创建 VLAN、创建接口、创建防火墙的 Zone,分配来分配去,中途也搞砸了几次,配置也都回滚了,直到最后一次尝试,luci 弹出了令人感到安心的“正在回滚配置”的提示,然后就…卡住了。

考虑到 Openwrt 使用的是 squashfs,怀疑是设备上的设置确实回滚了,但内存中的配置没能正确地回去,我将设备断电重启。果不其然,配置回到了应用前的样子。

在尝试配置 VLAN 数次后,我放弃了。即使给虚拟机分配了新网段,也设置好了防火墙规则,虚拟机依旧可以访问到内网网段的设备。

目前我还没有闲心思慢慢研究 Openwrt 的种种配置,便打算换一个方式实现。

配置 PVE 防火墙

第二个方案便是,在 PVE 的防火墙中禁止虚拟机连接内部网段的其他设备了。

启动 Datacenter 防火墙但没有添加允许规则导致的失联

我启用了虚拟机的防火墙,发现配置并没有生效。简单查询后发现,需要将 Datacenter 的防火墙启用,VM 防火墙才有效果。我便看也没看地就开启了 Datacenter 防火墙,发现管理后台页面无法刷新了。此时我才看到屏幕上 Datacenter 防火墙的默认配置 —— IN: DROP.

这下好了,外部连接统统被阻断,也就无谈通过控制面板将防火墙再关闭。

这台服务器是无头的,安装有一张 P100 显卡,但没有显示输出。所以在不动硬件的情况下,我没法通过显示器访问终端的。

通过检索,我了解到了好几种奇技淫巧来关闭 PVE 的防火墙。

挂载并修改 crontab

正好手上有一个硬盘盒,我就将系统盘取下,通过硬盘盒连接到了软路由,尝试修改系统盘里的文件。

使用 fdisk 查看这块系统盘的分区情况,但没有看到熟悉的 ext4 字样。取而代之的是 Linux LVM。LVM 相当于是 Linux 对磁盘进行了再一次的分区,因此挂载就不能是简单的 mount,得用 lvm2 工具。

再敲了几个命令后,我成功将 PVE 分区的 root 文件夹挂载,并在 crontab 中添加了关闭 PVE 防火墙相关的命令。

umount,取下系统盘并装回服务器,开机…没有任何反应,依旧打不开管理面板。是教程给的方法有误吗?

遂又取下盘,挂载到软路由上,却提示该分区忙…我是相当忌惮挂载并修改分区的,生怕损坏了分区,服务器的数据可就全丢了。不敢再继续操作,我得另想出路。

连接显示器,但还是个瞎子

现在能做的就是在服务器上通过 PVE 的 rescue terminal,来修改防火墙的配置了。

我关闭了服务器,取下 P100,换上了 R7 240 这张十年老兵,插上了便携显示器…

error: No suitable video mode found. Booting in blind mode.

你这不是输出字了吗,怎么就进瞎子模式了???

经过查询,我了解到系统正在寻找到显示模式,正是古早电脑终端使用的 80-Column 这样的显示模式。

至于什么是 Blind Mode,我尝试在 GRUB 和 Linux 源码中搜索,都没有结果;为什么 PVE 系统找不到我的 R7 240,可能是缺少驱动吧,现在也无处知晓。

按照网上的教程尝试在 GRUB 引导系统启动时添加显示模式的支持,并没有效果;当我尝试打印支持的显示模式时,发现根本不存在正常的显示模式,故只能放弃直接启动 PVE 的 rescue terminal.

还是得靠救援盘

给服务器插上救援盘,我先是打开了基于 Windows 的 PE 系统,发现显卡是有输出的,但分辨率非常低,且只有黑白画面。看来这张老显卡与这块寨板的相性真的不大好。

在确认 Windows PE 系统下什么都做不了,操作还及其不便,我便退出了 PE 系统,打开了 Ubuntu LiveCD。

这回,显卡倒是可以正常运行。以 80-Column 模式输出文字还是可以轻松办到的。有了命令行,操作也简单了不少。

同为 Linux,操作 LVM 就简单了许多。使用 lvm2 挂载 PVE 的系统分区,并用 chroot 将用户空间切换至 PVE 系统,直接用 systemctl disable pve-firewall 把防火墙关了。

再次进入 PVE,这下开机防火墙就不会启动,赶紧进 Datacenter 防火墙设置里还原误操作的配置。

事后的反思

VLAN 配置的失误

我对 VLAN 配置没有经验,便想着参考网上其他人的配置方法来做。但我查到的都是创建访客 Wi-Fi 这类的配置教程。与我的网络环境的差异在于,访客 Wi-Fi 用的 Interface 与 LAN 不一样,而我需要在 LAN 下配置两个 VLAN,配置方法就有些不同,不能直接搬配置。

我应当要找的是较为通用的,同一个 Interface 下 VLAN 的配置教程(可能单臂路由配置和这个就有些像),再迁移到 Openwrt 上进行配置。

由于软路由只有两个网口,也没法像有四五个网口的路由器一样留下一个作为”不死“的管理口,以降低把路由器配置挂掉的风险。

PVE 原本可以修得更快

原本在将 PVE 系统盘挂载到软路由时,便可以用 systemd 停掉 pve-firewall 但当时我看到 PVE 论坛里有人说在 crontab 里加上 PVE 关闭防火墙的指令便能访问控制面板了,也有人附和说可以用。但我实际操作后发现并没有效果。

而再次尝试挂载 LVM 时,提示分区忙让我不敢继续操作。虽然在服务器上用 LiveCD 直接挂载并没有出现分区忙的情况。


被我整坏的路由器和服务器
https://blog.udon.eu.org/archives/7777583b.html
作者
Kare Udon
发布于
2024年2月12日
许可协议