在U-NAS下配置虚拟机建立旁路由

2019-12-05 13:35:24 29点赞 268收藏 26评论

背景介绍

  前段时间被各种油管主播和B站UP主种草软路由,上至N系、J系各类X86架构小主机,下至树莓、友善之臂各类Arm架构的“派”,不一而足。看着家里的就靠一台老旧的R6300v2作为主路由来撑着,不禁又动心起来,构思了好些方案,无奈囊中羞涩,迟迟没能下手。

  在软路由的CPU推荐图和各类评测中,J3455是个出现频率较高的CPU,同时支持VT-D和AES指令集,一直是相对比较受到关注的。突然想起,之前矿难捡的暴风云就是J3455的啊,现在是刷回万由自己的 U-NAS OS 系统来当做NAS使用,没有什么特殊4K解码之类的需求,性能对于我个人的日常使用其实是过剩了的。

  当初捡回来之前也在网上看过作为路由之类的应用,但是以前我想的是它才一个网口,做路由再怎么也需要2个网口才能当路由器吧,所以之后就再也没想过这方面的事了。

  这次除了建了一个虚拟旁路由之外,还顺便把几个月前淘的交换机也顺便换上了,虽然没什么大用,就相当于拓展了一些网络口来为以后做预留吧。

对“旁路由”的浅见

  其实之前对于什么叫“旁路由”完全没有什么概念,包括看各个大神的理解也各自不一样,我自己对它的浅见就是:它就是一台网关服务器,跟网页服务器、储存服务器等没有区别,只是它的功能仅仅是提供网关转发,由它来决定以它作为网关的设备该走什么线路,或者说交换什么数据。

  这样来理解就比较好解释为什么只需要一个网口也能工作,因为它是服务器而不是“路由”,所以本身并不区分什么Wan或者Lan,只是由于大部分这种“旁路由”都是采用基于Openwrt的系统,才在这些系统上区分Wan口Lan口。经过我在自己的网络环境下测试,不管那个网口是使用所谓的Wan口还是Lan口,只要它能够**直接**被指向它的设备发现,就能使用。即它跟网关指向它的设备之间是在拓扑结构上可以是平级的,而不像路由器那样是上下级的结构。

改造前拓扑结构

改造前拓扑结构改造前拓扑结构

  改造之前基本上所有的活都交给一个主路由来进行,主路由是二手的 R6300v2,虽然无线方面的表现已经足够家用,但是跑的插件多了CPU负载还是挺高的,温度高、效率低。

改造后拓扑结构

改造后拓扑结构改造后拓扑结构

  改造之后就是在U-NAS上建立了一台虚拟的网关服务器(旁路由),然后把需要用到“你懂的”那些功能的设备再将各自的网关指向这个虚拟网关。好处是不会影响其他不需要的设备,劣势是每个设备都要手动设置一次。

UNAS安装虚拟机

  我安装的 UNAS 系统是以前安装的 3.11 的版本,在APP管理器中有2个虚拟机APP,1个是VirtualBox、1个是“虚拟机”,这个“虚拟机”其实就是 Qemu-KVM,并且还搭配了一个 Wok+Kimchi插件 的Web管理后台,对于使用来说是相当方便了。

VirtualBox虚拟机

  VirtualBox方案在我的UNAS上没法运行,无法启动,在命令行下查看了一下报“The vboxdrv kernel module is not loaded.”错误,按照提示用`/etc/init.d/vboxdrv setup`命令重新编译内核,无法成功编译。

  后来分析了一下,猜测是我更新到了3.11版本,基于Debian8,采用Linux4.9内核。可能早期的 UNAS OS 3 的版本是基于Debian 7的,而官方APP源里面的VirtualBox版本是4.2,内置的内核头文件是 Linux 4.3版本的内核,所以无法编译到 4.9版本的内核中。

  解决方法也很简单,手动安装5.0版本的VirtualBox,再另外自行安装一个PHPVirtualBox来进行Web管理就行了,但这个不是本文的重点。到了 UNAS 4 的版本中没这个问题了,UNAS 4的APP源里面的VirtualBox已经是6.0的版本了。

Qemu-KVM虚拟机

  Qemu-KVM方案就简单了,在 UNAS 的APP管理器中安装“虚拟机”这个应用就行了。

UNAS的APP管理器UNAS的APP管理器

勾上开启并应用勾上开启并应用

Wok+Kimchi 后台Wok+Kimchi 后台

  安装好了之后重启一次在启动,就能进入 Wok+Kimchi 的Web管理后台,采用默认的“root/yutech”用户登录即可,在这里就可以直接添加ISO建立虚拟机来装系统了。在这个后台建立虚拟机的正常做法是先建立储存器,准备好ISO放入资源池中,然后建立相应的“模板”,再正式添加“Guest”虚拟机。比如我在这里面装了 Alpine 和 iKuai 等。

虚拟机安装LEDE

  在选择网关服务器的系统的时候,我分别尝试了L大的[LEDE](https://github.com/coolsnowwolf/lede/)和Koolshare的系统,最终为了方便采用了Koolshare。

1、建立虚拟网络

  在UNAS中安装好虚拟机后,默认建立了一个 nat 转发的虚拟网络,而我们需要让虚拟的旁路由直接被主路由进行管理,所以需要建立一个网桥连接的虚拟网络。

  在 Wok+Kimchi 后台建立网络很简单,找到“Virtualzation”→“网络”,点击“Add Network”按钮

建立网络建立网络

  然后起好名字(我这里是“vnet”),选择网络类型为“bridge”再创建即可。

选择网络类型选择网络类型

2、准备系统镜像

  虚拟机安装LEDE不需要通过镜像来引导安装,只要直接把镜像转换格式成为虚拟磁盘映像作为虚拟机的“硬盘”就可以了。系统镜像可以在[这里](https://firmware.koolshare.cn/LEDE_X64_fw867/虚拟机转盘或PE下写盘专用/)下载,注意要选择“虚拟机转盘或PE下写盘专用”下面的版本。

  先用SSH登录UNAS,进入“储存器”中建立的路径,我这里直接采用默认的“/var/lib/libvirt/images”目录,用“wget”命令下载“.img.gz”格式的镜像,大约40多MB。

3、转换镜像格式

  下载完镜像后,先用`gzip -d openwrt-koolshare*`解压缩,解压出来一个“.img”格式的镜像,解压出来后一下就有700多MB了,其实是因为这个“硬盘”本身就是700多MB的空间,不管虚拟系统用没用到都占用完实际系统的这个空间。

  随后使用虚拟机管理的命令`qemu-img convert -O qcow2 openwrt-koolshare*.img koolshare.qcow2`把img格式的映像转换为qcow2格式,尺寸又回到原本的40多M了,之后虚拟系统用掉了多少空间这个文件就增大多少。

4、建立虚拟机

  建立好虚拟机用的硬盘之后,就可以建立虚拟机了,但是因为是直接用现有硬盘映像,所以只能手动创建 xml 文件来配置虚拟机,而不能直接再 Wok+Kimchi 后台进行了。

  用 SSH 连接到 UNAS,为了方便管理,我切换到默认的目录,并且建立一个 xml 配置文件。

cd /etc/libvirt/qemu

touch koolshare.xml

vim koolshare.xml

  然后把下列内容复制进去,可以自行生成[UUID](https://1024tools.com/uuid)和[MAC](https://www.osgeo.cn/app/s2907),网络配置记得改为此前建立的虚拟网络(`<source network='vnet'/>`)。

<domain type='kvm'>

<name>koolshare</name>

<uuid>ebaac289-7124-4476-92d3-2c9a2dda78d6</uuid>

<memory unit='KiB'>1048576</memory>

<currentMemory unit='KiB'>1048576</currentMemory>

<vcpu placement='static'>2</vcpu>

<os>

<type arch='x86_64' machine='pc-i440fx-2.1'>hvm</type>

<boot dev='hd'/>

</os>

<features>

<acpi/>

<apic/>

<pae/>

</features>

<clock offset='utc'/>

<on_poweroff>destroy</on_poweroff>

<on_reboot>restart</on_reboot>

<on_crash>restart</on_crash>

<devices>

<emulator>/usr/bin/kvm</emulator>

<disk type='file' device='disk'>

<driver name='qemu' type='qcow2' cache='none'/>

<source file='/var/lib/libvirt/images/koolshare.qcow2'/>

<target dev='hda' bus='ide'/>

<address type='drive' controller='0' bus='0' target='0' unit='0'/>

</disk>

<controller type='usb' index='0'>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>

</controller>

<controller type='pci' index='0' model='pci-root'/>

<controller type='ide' index='0'>

<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>

</controller>

<interface type='network'>

<mac address='88:3B:28:11:E3:72'/>

<source network='vnet'/>

<model type='e1000'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>

</interface>

<serial type='pty'>

<target port='0'/>

</serial>

<console type='pty'>

<target type='serial' port='0'/>

</console>

<input type='mouse' bus='ps2'/>

<input type='keyboard' bus='ps2'/>

<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>

<listen type='address' address='0.0.0.0'/>

</graphics>

<sound model='ich6'>

<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>

</sound>

<video>

<model type='cirrus' vram='9216' heads='1'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>

</video>

<memballoon model='virtio'>

<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>

</memballoon>

</devices>

</domain>

  建立 xml 配置文件后,将该文件引入虚拟机管理系统中。

virsh define koolshare.xml

  然后从该配置文件启动虚拟机

virsh create koolshare.xml

  因为是作为网关服务器,所以还是需要配置成开机自动启动。

virsh autostart koolshare

  此时已经可以在 Wok+Kimchi 后台看到这台新建的虚拟机,并且已经运行了。

启动虚拟机启动虚拟机

虚拟旁路由配置

1、配置底层网络

  刚安装好运行虚拟机有时候主路由并不会给它分配IP地址,所以直接在网页上想访问过去不一定成功。而采用 Wok+Kimchi 后台有一个好处是,可以直接用“查看控制台”功能通过网页版 VNC 控制虚拟机,所以可以再命令行下检查网络配置或者进行手动配置。

查看控制台查看控制台

  通过 VNC 连接到虚拟机后,先查看一下网络配置。

vi /etc/config/network

  我在这里直接给它分配了一个固定的静态地址,添加的配置如下:

config interface 'lan'

option ifname 'eth0'

option proto 'static'

option ipaddr '192.168.1.5'

option netmask '255.255.255.0'

option multipath 'off'

option gateway '192.168.1.1'

option dns '223.5.5.5 223.6.6.6 8.8.8.8 9.9.9.9'

  随后用`reboot`命令重启一下虚拟机,启动成功后就能在主路由上面看到这台虚拟旁路由了,此时在局域网上就能网页访问到它了。

2、后台配置

  在局域网的电脑中访问这台虚拟旁路由的地址,比如我这里是“192.168.1.5”,就可以进入网页后台了,默认密码是 koolshare,第一次登陆之后更改一下。

登录网络后台登录网络后台

  首先需要配置的是网络,找到“网络”→“接口”,由于我刚才手动配置的是“LAN”口,所以把“LAN”口之外的接口都删除掉,如果手动配置的是“WAN”口就把“WAN”口之外的接口都删除掉。

  然后点击“编辑”,把最下方的“DHCP 服务器”那里勾上“忽略此接口”,因为在这里不把它当路由使用,而是当作网关服务器,所以不需要由它分配地址给其他设备。

  到这里其实就算是配置完了,后续要安装各类插件就是其他方面的事情了。

安装各类插件安装各类插件

设备设置

  虚拟的网关服务器配置好之后,设备的配置非常简单,只要将设备的“网关”地址填写旁路由的地址即可,像电脑上是这样,其实DNS服务器部分我认为是可设可不设,各位大神的观点也不一致,以防万一我这里还是设置了。

客户端配置网关客户端配置网关

  设置完成后可以用路由追踪命令查看一下,出来的第一个是 192.168.1.5,第二个到主路由的 192.168.1.1,就说明已经把数据包先通过虚拟的网关服务器来走了,配置完成。

  如果局域网里面有二级路由或者AP之类的,只要把二级路由或者AP本身的网关指向这台虚拟旁路由,其下的所有设备不用设置也都能直接走它来做数据处理了。

后记

  其实整体的配置挺简单,关键在于怎么去理解“旁路由”,虽然我自己把“旁路由”理解为“服务器”的想法不一定是最精确的,但是这样去想比较方便我去理解每一步的设置是为什么。

  而 UNAS 系统作为一款基于 Debian 的国产NAS管理系统,在自由度很大的同时,也具备简单易用的特性,后续的发展也值得期待。至少在一水的“黑群晖”之下,多了个选择的空间。

展开 收起

U-NAS 万由电子 HS-401P 4盘位NAS(赛扬J4125、4GB)

U-NAS 万由电子 HS-401P 4盘位NAS(赛扬J4125、4GB)

1888元起

U-NAS 万由电子 HS-820 8盘位 NAS存储( N5105、4GB)

U-NAS 万由电子 HS-820 8盘位 NAS存储( N5105、4GB)

1998元

U-NAS 万由电子 HN-200 双盘位NAS(赛扬J3160、2GB)

U-NAS 万由电子 HN-200 双盘位NAS(赛扬J3160、2GB)

999元起

万由U-NAS 双盘UNAS整机 NS-202 低功耗NAS整机 J4125 四核四线程CPU 2G内存16G eMMC硬盘 4X2.5G网卡 4网口

万由U-NAS 双盘UNAS整机 NS-202 低功耗NAS整机 J4125 四核四线程CPU 2G内存16G eMMC硬盘 4X2.5G网卡 4网口

1680元起

万由U-NAS HS-201P双盘位J4125私有云网络存储器设备照片文件备份NAS主机整机家庭个人云盘NAS云存储服务器

万由U-NAS HS-201P双盘位J4125私有云网络存储器设备照片文件备份NAS主机整机家庭个人云盘NAS云存储服务器

1399元起

万由 U-NAS NS-810P 八盘位NAS主机 企业级网络私有家庭个人云存储服务器 双网口 黑色 内存4GB

万由 U-NAS NS-810P 八盘位NAS主机 企业级网络私有家庭个人云存储服务器 双网口 黑色 内存4GB

暂无报价

U-NAS 万由电子 万由U-NAS 四盘UNAS整机 NS-402 低功耗NAS整机 J4125 四核四线程CPU 4G内存16G eMMC硬盘 4X2.5G网卡 4网口

U-NAS 万由电子 万由U-NAS 四盘UNAS整机 NS-402 低功耗NAS整机 J4125 四核四线程CPU 4G内存16G eMMC硬盘 4X2.5G网卡 4网口

暂无报价

U-NAS 万由电子 HS-201P 2盘位NSA(J4125、2GB)

U-NAS 万由电子 HS-201P 2盘位NSA(J4125、2GB)

1399元起

万由U-NAS NS-812P 八盘位NAS主机 黑色 内存8GB

万由U-NAS NS-812P 八盘位NAS主机 黑色 内存8GB

暂无报价

U-NAS 万由电子 HS-401P 4盘位NAS(赛扬J4125、8GB)

U-NAS 万由电子 HS-401P 4盘位NAS(赛扬J4125、8GB)

暂无报价

NS-402四盘位 J4125 NAS文件存储服务器

NS-402四盘位 J4125 NAS文件存储服务器

暂无报价

U-NAS 万由电子 J4125 两盘位NAS 黑色 (赛扬J4125、4GB)

U-NAS 万由电子 J4125 两盘位NAS 黑色 (赛扬J4125、4GB)

暂无报价

万由U-NAS HS-201P 双盘位 J4125 NAS文件存储服务器私有云NAS存储 玫瑰金

万由U-NAS HS-201P 双盘位 J4125 NAS文件存储服务器私有云NAS存储 玫瑰金

暂无报价

UGREEN 绿联 DX4600 Pro 4盘位NAS(奔腾N6005、8GB)

UGREEN 绿联 DX4600 Pro 4盘位NAS(奔腾N6005、8GB)

1849元起

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

ZSpace 极空间 私有云 Z4Pro 8G版 4盘位NAS存储(N97、8GB)

2485.01元起

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

UGREEN 绿联 DX4600 四盘位NAS存储 (赛扬N5105、8GB)

1796元起
26评论

  • 精彩
  • 最新
  • DNS Server

    校验提示文案

    提交
    网关服务器跟DNS服务器还不大一样,DNS服务器仅仅是在服务器上解析IP地址,客户端把域名传递给DNS服务器,DNS服务器把解析出来的IP回复给客户端。

    校验提示文案

    提交
    收起所有回复
  • 想当年我像你一样各种折腾,而现在想着如何简化家里网络结构,看来是我老了

    校验提示文案

    提交
    不是老了,是现在有钱了,可以用一个贵的设备带起以前一堆便宜设备才干得动的活儿了

    校验提示文案

    提交
    以前恨不得所以设备都弄上,现在只有一个猫,感觉也够用 [喜极而泣]

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 大神,为什么我的u-nas进到kvm的web界面没有virtualization那个标签,我的CPU是g4600,我查了一下支持虚拟化,bios里virtualization的开关也开了

    校验提示文案

    提交
    我也遇到过,解决方法就是多进去几次 [尴尬]

    校验提示文案

    提交
    试了好多次,后来我选择放弃KVM了 [观察]

    校验提示文案

    提交
    收起所有回复
  • 家里有台淘汰的主机,能这样废物利用一下吗?

    校验提示文案

    提交
    可以啊,只要认为功耗可接受就行。

    校验提示文案

    提交
    收起所有回复
  • 我1037u组了套万由nas [皱眉] ,又用1037组了个软路由 [皱眉]

    校验提示文案

    提交
    1037u可以的,支持VT-x。虽然不支持VT-d和AES指令集在某些特殊用途上有些限制,但是超有性价比的!

    校验提示文案

    提交
    收起所有回复
  • wow, UNAS界面已经这么好看啦!

    校验提示文案

    提交
    嗯嗯,据说4.0的版本更好看

    校验提示文案

    提交
    收起所有回复
  • 这个比n1还是爽得多 mt7621我的主路由 总感觉响应速度不好 不知道是不是心理作用,开了硬件加速 跑300多M没问题。

    校验提示文案

    提交
    可是N1便宜啊,最低的时候才70多,我这个接近翻了十倍了。。。 [流泪]

    校验提示文案

    提交
    n1也就那样吧 我手头有一个 打算刷成盒子 然后入手n3150。

    校验提示文案

    提交
    收起所有回复
  • 读了这么多,都不知道这个旁路由有什么用?代理服务器吗?加这个东西,信息交换不是更延迟吗?

    校验提示文案

    提交
    您理解为代理服务器也没错,确实从数据交换的角度上来说多了一个层级,但是很多时候网关服务器做的数据交换并不仅仅是转发,而需要对数据进行加密打包、解包等运算操作,这种操作不是所有硬件的执行能力都一样的。所以有些特定环境专门增加一个设备来处理。仅从“交换数据”的角度上来说,会增加延迟,但是我们真正提到的网速上的延迟指的是“交换数据+处理数据”,通过处理数据时间的降低提升来弥补交换数据时间的极小上升,使得整体延迟降低。

    校验提示文案

    提交
    加密,解密应该是在终端<如pc).路由只负责分包和转发吧

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 看看,看看,看看

    校验提示文案

    提交
  • 楼主,我下载了U-NAS4.0.6安装在虚拟机中后,WOK页面没有Virtualzation页面,再次安装到一台I54460的机器上也是没有Virtualzation页面,最后按照你的版本下载了U-NAS3.1.1安装到这台机器上后终于有了Virtualzation页面。按照你的教程一步一步生成了xml文件,随机生成了UUID和MAC,但是在引入虚拟机管理系统中时提示error: Failed to define domain from koolshare.xml
    error: XML error: expected unicast mac address, found multicast '***'
    请问如何解决?

    校验提示文案

    提交
  • 查到原因了。原来生成的MAC是组播地址。改成单播就可以了。但是还有个问题。不管事3.1.1还是4.0.6,都遇到file资源管理器打开是空白的现象。

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章

candura

Ta还没有介绍自己

关注 打赏
最新文章 热门文章
268
扫一下,分享更方便,购买更轻松