MoeCEO

MoeCEO

飞牛虚拟机使用默认NAT网络

2025-02-10

前言

此倒腾在一般家庭网络环境下其实用不上。因为NAS可以随时通过DHCP获取到内网IP,不存在什么IP资源缺乏的情况。

我之所以这么倒腾纯粹是因为我在我的闲置VPS服务器上使用DD方案刷入了飞牛OS。在创建虚拟机的时候虚拟机无法联网。因为我的VPS就只有一个IP。这个IP给的飞牛OS后,虚拟机是没有IP资源的,这一点可以通过Windows虚拟机的网络问题检测得到。飞牛的qemu按道理是可以使用多种网络模式的,然而飞牛OS现在的虚拟机默认就只有桥接这一个。所以无法在虚拟机管理里修改网络模式。我们只能通过SSH去修改配置文件了。

流程

首先我们需要按照正常流程创建一个飞牛虚拟机。此时可以选择不用启动它。如果已经启动且正在配置系统安装也没关系,安装完成再关闭虚拟机即可。

然后我们通过SSH登录到飞牛NAS。这里推荐使用【Xterminal】客户端。

# 首先提权
sudo -s

我们进入到目录/etc/libvirt/qemu。在这里可以看到虚拟机的配置文件。此时在【Xterminal】内双击编辑是无用的,因为虚拟机配置文件默认的是【600】权限。所以我们需要对虚拟机配置文件权限进行修改。

# 将虚拟机配置文件权限改为 777
sudo chmod 777 /etc/libvirt/qemu/vm_name.xml

反正是自己用,无所谓,直接【777】即可。

如果不知道虚拟机真实名字的可以一个个配置文件找,配置文件内的<title>Window 11 LTSC</title> 字段是飞牛虚拟机中创建虚拟机时的名字。

这种方法是不是很蠢,其实有简短的方法。回到飞牛虚拟机的管理页面,我们在进入虚拟机管理后,通过【F12】来打开浏览器的开发者模式。选择网络,你可以看到不停刷新的一个请求类似于【http://192.168.1.9:5666/vm/api/v1/domain/status?names=oo1pptlw,c26vc9ti】。这最后的names字段跟着的参数就是虚拟机里的所有虚拟机真实名称。案例为【oo1pptlw,c26vc9ti】。此时找到你要修改的虚拟机,点击编辑。你将会看到一个新的请求类似于【http://192.168.1.9:5666/vm/api/v1/domain/info?name=c26vc9ti】。这时后面跟着的名字就是我们要改的虚拟机的真实名字了。

现在回到打开虚拟机的配置文件。你会看到类似于以下的一个片段:

    <interface type='bridge'>
      <mac address='ba:c6:8a:28:bb:f4'/>
      <source bridge='enp9s0-ovs'/>
      <virtualport type='openvswitch'>
        <parameters interfaceid='dca46eda-15a9-456e-937e-ebda1078b6ba'/>
      </virtualport>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x07' slot='0x00' function='0x0'/>
    </interface>

这里就是此虚拟机的网络配置部分。我们需要将其改为如下案例:

<interface type='network'>
  <mac address='0c:a7:f1:44:57:a2'/>
  <source network='default'/>
  <model type='e1000'/>
  <address type='pci' domain='0x0000' bus='0x06' slot='0x01' function='0x0'/>
</interface>

其中的mac地址等无需进行修改。这些均采用最开始创建虚拟机的时候的设置。

虚拟机的网络配置部分需要修改的其实对比上面两个片段就可以知道。

  1. <interface type='bridge'> 更改为 <interface type='network'>

  2. 移除 <source bridge='enp9s0-ovs'/> 行,因为它指定了桥接的网络接口。

  3. 移除 <virtualport> 相关的配置,因为NAT不需要这个。

  4. 添加 <source network='default'/> 行,其中 default 是默认的NAT网络名称。

保存配置文件即可。配置文件权限此时也可以改回去了。

至于默认的NAT网络配置文件位置则在 /etc/libvirt/qemu/networks/default.xml 。此文件同样是【600】权限,如需编辑,也需要进行权限修改。此处用不上,不做相关介绍。

此时我们需要定义编辑后的配置文件。这会告诉 libvirt 使用更新后的配置文件。

virsh define /etc/libvirt/qemu/vm_name.xml

现在仍然不能启动虚拟机,因为我们还未配置完成。

在飞牛OS中,默认的NAT网络并没有启用。我们可以使用如下命令查看:

root@fnOS:/home/yourname# virsh net-list --all
 Name      State      Autostart   Persistent
----------------------------------------------
 default   inactive   no          yes

所以我们需要如下命令去启动它,也把在系统启动时自动启动也打开。

virsh net-start default
virsh net-autostart default

此时你就可以回到飞牛OS管理页面的虚拟机处重新启动它了。此时的虚拟机就可以使用默认的NAT网络共享宿主机网络联网。