Site Overlay

Operation Reloaded

总览

Operation Reloaded是对家庭网络环境改造的一系列任务的总称,主要任务目标如下:

  1. 清理客厅电视柜区域的线缆与设备,降低清洁难度。
  2. 通过VLAN的方式复用客厅的网口,实现网络电视和互联网同时工作。
  3. 使用一台服务器取代之前分散的NUC和群晖,作为基础设施承载业务。
  4. 使用部署在服务器上的OpenWRT作为接入的主路由器,并且部署更加易用的IPv4+IPv6防火墙。

现有组网环境

  1. 弱电箱内有电信光猫,设置为桥接模式,光猫具有千兆口一个、百兆口两个、iTV口一个。
  2. 弱电箱内有两根已经接好的网线,分别对应客厅阳光房的网口和客房的网口,另有三根未做水晶头的网线,但是从其他房间的网口使用寻线仪均无法找到对应点。
  3. 目前光猫千兆口连接阳光房的网口,然后连接电视柜上的主路由器拨号上网,基本所有有线接入的设备均放置于电视柜上,方便与路由器连接。
  4. 电信给的iTV盒子处于空置状态,之前乱玩ADB装了一堆软件,现在不知道开不开的了机,就算开了机也没有能接入的网口。
  5. 光猫是2020年疫情期间换的新产品,由于实在太新,网上的破解教程都不适用了,暂时没法获取管理员密码。

初步计划

目前的打算是:

  1. 借iTV开不了机为借口(适配器弄丢了当然开不了机)请电信师傅上门改一下光猫的配置,把iTV和上网业务用VLAN的形式复用一下,一起送到阳光房的网口。
  2. 在阳光房放一个机柜,机柜里放淘来的一台PowerEdge R720和一台Quidway S5318,通过VLAN的方式将交换机的接口划为数组,分别承担上联、iTV、局域网的不同任务。R720中部署一个OpenWRT作为主路由器,日后可以把其他的业务也迁移到R720上。

Day 1: 出师不利

电信师傅拿了一个适配器直接开机iTV,发现还能开机,不过对于调VLAN的事情,师傅表示“难办”,说“现在上面不给我们权限了”。我更倾向于认为确实是这样,因为之前帮忙改桥接和公网IP的时候师傅都很爽快,而且确实有传闻说现在不给改公网IP了,鉴于国企一贯的层层加码风格,师傅这个说法也算可信。

于是师傅重置了一遍iTV盒子,然后帮忙测了测网线,直接连接光猫iTV口是可以看电视的,师傅的建议是利用另一个通往客房的网口放路由器。

同时根据目测,阳光房放机柜似乎在空间上不够现实,我和我爹也更倾向于把机柜放在客房阳台上。既然这样的话,就有必要重新规划一下。

重新规划

光猫密码?

如果要在不改动光猫的基础上实现单线复用的话,那么肯定要在弱电箱里面再塞下一个网管交换机,而弱电箱的容量不太够用,所以优先想到的还是怎么破解光猫的密码。

目前网上能找到的方法利用的漏洞均被修复了,但是参考中的两篇文章还是给了我一定的启发,比如恩山论坛的那篇提到了利用文件管理的漏洞拷贝romfile.cfg文件找密码,虽然我这个版本的光猫已经找不到这个文件了,不过还是能通过这个方法去访问其他目录,在/var目录下乱翻的时候我找到了好几个.passwd文件,里面就有MD5加密之后的各个密码,其中能验证的是普通用户的密码和光猫标签上的密码是相符的。

对于这类形如/etc/shadow的文件,Linux下有一个程序john可以用于破解,Kali中甚至附带了一个对应的图形化界面Johnny,所以我尝试了使用爆破的方式去获取这个密码。

但是在用笔记本连续爆破了三天后,还是没能算出原始密码,同时因为另外一些后文会提到的因素,在弱电箱里面塞一个交换机似乎是必不可少的了,因此就暂停了爆破(john还支持断点续算),等之后服务器部署好了用服务器接着算,应该会快一些。但是总体上看,我觉得这个方案还是可行的。

参考:ZNHG600光猫最新破解超级密码方法详解
兆能ZNHE600超级密码获取

主路由位置

另一个关键的问题是主路由的位置,根据计划,保证IPv6可以从外部访问是Operation Reloaded的主要目标之一,这就要求部署在R720上的OpenWRT必须作为主路由工作,而由于R720必须要搬到客房阳台上,因此主路由到光猫的连线会用到另一根弱电箱到客房的网线,同时不少上网设备仍然在客厅,所以这样布局必然会涉及到这两根线路的复用问题,也就是在原有的基础上,还需要添加交换机,确保弱电箱、阳光房、客房三处都各自有一个网管交换机。

Day 2: 弱电箱的问题

在清理了弱电箱里面用不到的同轴线缆的接线架后,弱电箱里面算是腾出了一个5口交换机的位置,接下来该纠结的是选哪个交换机了。阳光房交换机我选择的是TP-Link TL-SG2008D,原因是当时京东搞活动一个只要133是全场最便宜的网管交换机,但是这个八口的机器一方面塞不进弱电箱,另一方面弱电箱里面只有一个接好的双口插座,而且显然没有什么办法再塞一个插线板进去(更不要说插线板大多数都是三脚插头)。

鉴于快过年了估计找不到电工师傅来接线,我一开始的想法是找一个DC一拖二的适配器,这样就能满足两个设备的供电。不过显而易见,这种做法需要两个设备电源参数相同。

物理接口方面,光猫用的是5.5*2.1的DC圆口,这个与绝大多数的桌面网络设备一样,但是光猫的适配器是12V1A的,而TP-Link TL-SG2008D的适配器是9V的,TP-Link的5口交换机则是5V,都不符合要求,找了一圈,只有NETGEAR的GS105E是用的12V输入,但是京东价要309,最后在下班前找到了一个还在发货的淘宝店,加钱发顺丰花了200,算是正常价格吧。

然后我想着去本地电脑城淘一根一拖二的DC适配器,因为淘宝卖家基本上都回家过年了,而本地电脑城卖家基本上都对监控业务有所涉猎,这种东西应该还是有的。

没想到电脑城js居然没有,不过他有一个售价15块做工简陋一看就没过3C认证的卡片大小的双口“魔方”插座,可以拓展出三个插座,倒是正好符合需求,拿回来电工胶带包一包放弱电箱里,正好够用。
(以后补图)

这样准备工作应该算是齐全了,明天就能开始正式配置了。

Day 3: 越级打怪不可取

结果我还是高估了自己的数通基础,华为的这台S5318有很多优点,洋垃圾的价格也颇为吸引人,但是我却不太会用,串口敲命令虽然我也会,但是若要实际配上一个production中的业务,我就心里不免有些胆怯,而web界面老是有一些奇奇怪怪的报错,提示一些明明不存在的占用错误,网上找到的解决方案看得出这些大神似乎从来不需要web界面这种东西,思考再三,我觉得依照我的水平,还是拿华为这个机器做点实验和小玩具比较合适,于是再买了一个TP-Link TL-SG2008D,作为客房网口使用的交换机。

Day 4: Halfway There

万事俱备了,是时候开始了。

交换机配置

网件交换机

本机IP:192.168.0.210/24
网关IP:192.168.0.239

密码必须大写+小写+数字

普联交换机

本机IP:10.18.18.x/24
网关IP:10.18.18.251

可以自己设置用户名,改完配置要点“配置保存”才会永久保存

VLAN规划

由于主路由要移至客房,而且光猫选用的是桥接模式,因此VLAN的结构相比普通的复用要更复杂一些,涉及到两根物理线路的复用。
总共有两条复用的物理线路:

  1. 弱电箱到客房:承载了光猫到路由器WAN口和路由器LAN口到上网设备这两项业务。
  2. 弱电箱到客厅:承载了光猫到iTV盒子和路由器LAN口到上网设备两项业务。

三个交换机:

  1. 入户交换机:连接光猫的千兆口和iTV口,并连接到客房和客厅的两根网线,选用NETGEAR GS105E。
  2. 客房交换机:连接入户交换机和路由器的WAN口、LAN口,选用TP-Link TL-SG2008D。
  3. 客厅交换机:连接入户交换机和iTV,以及其他设备如游戏机,选用TP-Link TL-SG2008D。

三个VLAN:

  • VLAN 10:光猫和路由器WAN口之间连接用的网络
  • VLAN 11:路由器LAN口和其他上网设备之间连接用的网络
  • VLAN 12:光猫和iTV盒子之间连接用的网络

整体自上而下的数据流梳理如下:

光猫输出的两路数据:

  1. 一路iTV在入户交换机处被打上12的VID送到客厅交换机,然后客厅交换机再通过2#口转发给iTV盒子。
  2. 一路网络信号在入户交换机处被打上10的VID送到客房交换机,客房交换机再通过2#口转发给主路由器,主路由器的LAN口输出则由3#口输入客房交换机,被打上11的VID送到该交换机的4-8#口,或者送回入户交换机。入户交换机将这些包送至4#口对应的客厅交换机,客厅交换机最终通过3-8#口转发给对应的终端设备。

PVID

数据帧该在哪个VLAN中进行交换?
前面提到,支持VLAN的交换机将数据帧限制在同一个VLAN中进行交换,那么数据帧到底该在哪个VLAN中交换呢?
如果收到的数据帧携带了VLAN信息 (通常称为’TAGED数据帧‘,前面已经介绍了带VLAN TAG的以太帧格式),该VLAN信息中的VLAN TAG就是交换该帧的VLAN。
如果收到的数据帧没有携带VLAN信息(通常称为‘UNTAGED’数据帧),收到该帧的端口的PVID就是交换该帧的VLAN。
该规则在2.2.3节中有详细的描述。
根据上面的原则,也定义了PVID的概念。当端口收到一个UNTAGED数据帧时,无法确定在哪个VLAN中进行交换,PVID定义了在这种情形下交换该帧的VLAN。从某种意义上讲,可以把PVID理解为端口的default VLAN。在支持VLAN的交换机中,每个端口都有一个PVID值,该值有一个缺省值,当然你也可以更改它。
https://blog.csdn.net/xiaohaijiejie/article/details/70208549

也就是说,按照这里的理论,

  1. 入户交换机的1#口和2#口应该分别具有10和12的PVID,因为这两个口是untagged的,而3#与4#口分别负责和客房交换机与客厅交换机的通信,配置的VLAN是tagged的,理论而言不会出现没有标注VID的包,因此应该不用配置PVID。但是在思考后,我给4#口配置了11的PVID,这是为了保证在客厅没有VLAN硬件的条件下,客厅设备依然能够上网(当然iTV就别想了)(比较奇怪的是,并不是所有的设备都能联网。笔记本可以,但是xbox和加速盒子都不行)。
  2. 客房交换机的1#口与入户交换机的3#口相连,都配置了tagged的VLAN,应该不用PVID,而2#和3#口对应主路由器的WAN和LAN口,是untagged的,需要配置10和11的PVID。
  3. 客厅交换机的1#口与入户交换机的4#口相连,都配置了tagged的VLAN,应该不用PVID,而其他的接口都是untagged的,应该需要配置PVID,其中2#口对应iTV,配置为12,其他口为上网设备,配置为11。

注意,配置PVID的时候,也要考虑到交换机的管理VLAN,根据端口配置合适的管理VLAN,为了内部维护的方便,我将管理VLAN设置成了11。

最终配置

家庭网络拓扑

入户交换机

Port untagged VLAN tagged VLAN PVID 备注
1 1,10 10 光猫千兆口
2 1,12 12 光猫iTV口
3 1 10,11 1 客房网口
4 1 11,12 1 阳光房网口
5 1 1 调试用

客房交换机(Router Switch)

Port untagged VLAN tagged VLAN PVID 备注
1 1 10,11 1 连接弱电箱
2 1,10 10 路由器WAN口
3 1,11 11 路由器LAN口
4-8 1,11 11 上网设备

客厅交换机(EndPoint Switch)

Port untagged VLAN tagged VLAN PVID 备注
1 1 11,12 1 连接弱电箱
2 1,12 12 连接iTV盒子
3-8 1,11 11 上网设备

那么这样下来,Operation Reloaded任务算是完成了一半了,经过测试,iTV和LAN口上网均能正常工作,之后配置服务器的任务,年后继续吧。

Day 5: 跨入虚拟化

R720具有8个3.5寸硬盘位,因此最终的打算是使用两个4T的红盘组RAID 1,作为ESXi的安装盘和虚拟机的存储空间,同时用4个6T的洋垃圾SAS企业盘作为RAID 10,之后使用黑群晖或者FreeNAS作为NAS存储池使用。

值得一提的是,两个4T红盘是我刷紫荆的第一批装备,先后从DS214se换到DS218+,后来在我换了两个8T的HGST后卖给了CX,最后又买了回来放在工作室的黑群晖里面用,直到前几个月因为社团新人误操作需要恢复数据,因此借势把工作室的NAS换成了两个6T的企业盘,这两块红盘最终又回到了我手里。

想要看看怎么恢复btrfs的数据的,可以移步茶栗同学的博客

按照流程组完RAID,装完了ESXi后,就可以开始配置一些基础项目了。

主机名

ESXi的主机名可以在网络 -> TCP/IP 堆栈 -> 默认TCP/IP 堆栈 -> 基本 DNS 配置里面手动指定,只需要在原有基础上添加域名和搜索域为local或者lan就行,但是这样设置主机名意义不大,因为根本没办法访问。

实际上这个主机名是可以从DNS服务器获取的,因此需要借助dnsmasq,在此做个笔记,等OpenWRT安装好之后,再进行配置。

参考:为ESXi设置主机名 - WuSiYu Blog

虚拟交换机和端口组

可以有两种方法配置OpenWRT需要用到的网络接口。

  • 一种方法是将网卡直通进OpenWRT的虚拟机,这样的好处是在ESXi方面不需要任何额外的配置,只需要设置一下硬件直通就行,在OpenWRT里面也可以更加直观地管理一些硬件方面的参数,比如MAC地址之类的。
    但是硬件直通也有一些短处,比如强制锁定全部内存等,最致命的一点是由于OpenWRT是部署在ESXi上的,怎么连接管理ESXi的网卡到LAN上会比较麻烦,有可能需要硬件跳线解决。
  • 还有一种方法就是利用ESXi的虚拟交换机,把OpenWRT的WAN口和LAN口分别连接到不同的端口组和虚拟交换机,再通过虚拟交换机连接到不同的物理网卡上,我采用的就是这种方法。

需要添加两个虚拟交换机:

  1. Uplink Switch: 用于连接OpenWRT的WAN口和客房交换机的2号口,对应R720的1号物理网口。虚拟交换机的所有熟悉保持默认,但暂时不添加上行链路,因为1号口目前接入老路由器的LAN口作为ESXi的管理网络使用,还不能使用。
  2. LAN Switch: 用于连接OpenWRT的LAN口和客房交换机的3号口,以及其他的虚拟机,对应R720的2、3、4号物理网口。需要开启安全选项中的混杂模式、MAC 地址修改、伪传输,并添加对应的三个物理适配器作为上行链路。

两个端口组:

  1. OpenWRT WAN: 连接Uplink Switch。
  2. OpenWRT LAN: 连接LAN Switch。

值得一说的是,无论是ESXi的虚拟交换机,还是OpenWRT,都具备一定的VLAN组网功能,而且事实上,很多人就是使用的OpenWRT而不是另外购买的网管交换机完成的一些上文中提到的单线复用的工作。目前,出于“最小化单次改动”的考虑,此阶段的工作不会涉及在ESXi或者OpenWRT中实现VLAN组网的尝试,但是在全部工作完成后,条件允许的情况下也许会尝试一下,甚至可以试试udproxy来让LAN设备也能放IPTV。

参考:ESXI 安装&配置 OPENWRT – Lindaivd

制作OpenWRT镜像

制作镜像使用了StarWind V2V Converter,镜像一开始选用了coolsnowwolf定制的LEDE R21.21.21版本,但是经过好几次折腾都没办法连接上IPv6,所以最终用了kiddin9定制的OpenWRT

原则上讲,使用任何第三方制作的镜像都会对网络安全性有所损害,官方编译的版本或者自己编译的版本相对安全一些(但是实际上,开源软件的安全性并非人们想象中的那样有保障)。

先在ESXi上创建一个虚拟机,要注意的是虚拟机的引导要改成EFI,因为使用的LEDE镜像已经改成了EFI引导,然后用StarWind V2V Converter添加虚拟磁盘。

这样OpenWRT虚拟机的配置就完成了。

Day 6: 配置OpenWRT

连接方式

OpenWRT虚拟机启动后,就可以通过虚拟控制台使用配置文件或者ifconfig的方式配置WAN口的DHCP,并从而通过原有的路由器连接到OpenWRT进行配置,不过,我打算采用一种更加偷懒的方式:通过虚拟交换机连接。

根据虚拟交换机的原理,由于OpenWRT的LAN口已经连入了OpenWRT LAN端口组,其他虚拟机只要连上这个端口组,就相当于通过虚拟交换机连接上了OpenWRT的LAN口。因此只需要再创建一个虚拟机,就可以在那个虚拟机里面直接通过192.168.1.1访问OpenWRT的管理界面完成配置。这样既可以避免反复配置OpenWRT的WAN口,又不用搬笔记本去怼服务器的网口,除了由于没有硬件加速比较卡之外,可以算是比较省事的做法了。

在开始连接之前,最好检查OpenWRT内部对于eth0和eth1的自动配置是否符合其实际连接的虚拟交换机(常常不是),如果不是,可以在/etc/config/network修改,或者直接修改虚拟网卡的端口组。后者通常更加简单。

网口配置

WAN口

打开wan接口的配置,更改协议为PPPoE,输入宽带账号和密码并保存。
wan6接口不需要进行配置,也用不上。

LAN口

修改IP地址为10.0.0.1,掩码长度为8。

试运行

迁移ESXi

接下来,需要测试OpenWRT能否正常连接外网,为此首先需要将ESXi的管理网络迁移到新的局域网内。

在ESXi中新建一个端口组,端口组属性照抄原先的Management Network端口组(不抄其实也能用),然后新建一个VMKernel网卡,连接到这个新的端口组,VMkernel网卡的“服务”一栏需要包含“管理”。

稍等片刻,就可以在页面上看见新的VMKernel网卡对应的管理地址。

重新接线

将原先路由器的WAN口和LAN口网线分别连接到R720的1号和2号网口,然后通过新的管理IP登陆ESXi,将1号物理网卡从原先的虚拟交换机删除,并分配给Uplink Switch。

稍等片刻,即可看见OpenWRT拨号成功,且IPv6工作正常。

参考:doc.openwrt.cc

小功能配置

这是部署中修改的一些配置,记录下来可能会有用。

软件包

安装了open-vm-tools

主机名和固定IP

在网络->DHCP/DNS->静态地址分配和网络->主机名映射里分别指定需要固定的IP。

现在可以让ESXi自动获取主机名了。

ByPass插件

(数据删除)

部署vSphere Center

为了将原先NUC上的虚拟机迁移到R720上,同时也为了方便管理,需要部署vSphere Center Appliance虚拟机到ESXi上。

Day 7: FreeNAS Synology Forever

在仔细纠结了0.114514分钟后,最后准备试试用TrueNAS Scale作为主存储服务器,毕竟吹的神乎其神的ZFS一直想亲眼见识下。

部署

部署过程主要参考了司波图的视频,虽然视频用的版本比我用的老,但是基本设置是一致的,除了ACL权限设置界面做了一点改动,新版的更直观,但是要手动设置一下mask,否则添加自定义用户权限会报错。另外,POSIX和NFSv4的ACL似乎没必要改,因为改了好像还是POSIX。

Mask就是自定义权限的上限限制,设置超过mask的权限会被强制拉平。

安装应用

Plex的安装视频里面讲了,而安装Transmission我选择了用第三方truecharts提供的catalog。

参考:01 - Adding TrueCharts to SCALE

安装的时候要设置用户名密码、给config和存储分别指定一个宿主机目录,而且似乎光设置uid和gid还不够获得访问权限,所以索性勾选Security and Permissions->Show Advanced Security Settings->Privileged mode和Allow Privilege Escalation。

但是我还没有找到如何给Transmission提供IPv6连接的方法,除非直接用命令行启动docker,否则在网页界面上找不到以bridge方式配置docker网络的方式。查阅资料得知,TrueNAS为了scalable,docker本身是使用k8s作为基础实现的,因此需要用NodePort之类的方式配置网络,但是如果要使用双栈网络,同时也要修改k8s的配置,由于之前从来没有接触过这方面的知识,这对于我来说确实有一定的难度,而司波图提供的方法又太不优雅,所以暂时把Transmission部署在其他虚拟机上使用。

配置NFS

按照流程来,要把可访问的网段设为局域网,把MAPALL的user和group设置为主用户。

MAPROOT和MAPALL:
看起来MAPALL是把用户映射为当前机器的指定用户,而MAPROOT则是限制root为当前机器的指定用户,这两个只能选择其中一个设置,如果都设置了,系统会用MAPALL覆盖MAPROOT。

但是还是访问不了。

我必须承认,如果遇到困难就打退堂鼓,那就很难进步,而且TureNAS的界面看起来比群晖老土的界面好看多了,更何况在虚拟机上装黑裙确实不算特别光彩特别正确的事情。但是一天下来我确实被这个新人类的Web界面折腾的心累,为啥我在Ubuntu Server用vi都能搞好的配置在这个Web界面却这么难。我承认我对NFS和ACL的机制了解的也不透彻,黑裙也有一些vmware tools没法用之类的短处,但是当务之急是把能用的NAS搭起来,所以暂时转战黑群晖吧。

安装群晖

准备黑群晖的的引导镜像和PAT系统文件(我在这里下的),准备对应的MAC和SN。

  1. 用OSFMount或者DiskGenius打开引导镜像,定位到分区1的boot/grub目录,把grub.cfg拷出来,修改MAC和SN码,然后再拷回去。
  2. 有教程说最好先去群晖账户里面添加一下SN码,再继续。
  3. 在ESXi中创建一个新的虚拟机,先不要添加硬盘,并确认引导方式为BIOS。
  4. 然后用StarWind V2V Image Converter把引导镜像挂载给虚拟机,并在虚拟机设置里添加一个SATA控制器,把新添加的硬盘挂到SATA控制器下。
  5. 使用Synology Assistant扫描,如果在上述步骤都执行了的情况下还是无法识别,可以尝试把网卡改成E1000e再试试,有的人并不需要这样就可以成功启动,但我显然不在此列。(注意,终端窗口不会有任何输出,正常启动也是什么都没有)
  6. 在初始化界面上传系统文件,完成安装。

之前几次安装失败了,表现在装完系统文件重启之后和没装一样,换了个引导镜像之后正常了,为了求稳,我额外放了一个100G的硬盘给群晖。

参考:群晖DSM7.0新特性介绍及在ESXI 虚拟机上安装群晖 7.0 (DSM7.0.1)教程

用了一天,结果发现有的时候会突然失联,有的时候重启了也不能正常启动,在网上搜索,有人说是因为引导镜像里面驱动有冲突,所以去找了一个给ESXi定制的引导镜像,目前正常了。

参考:【12月11日更新】ESXI专用群晖7.0.1 42218引导vmxnet3
镜像下载:https://co.ruixuncloud.com:5239/群晖/引导文件/虚拟机

安装iDRAC模块(未完成)

https://www.dell.com/support/manuals/zh-cn/idrac-service-module-v3.0.1/ism_3.5.1_users_guide/installing-the-idrac-service-module-on-vmware-esxi?guid=guid-fabf906b-b741-4bd2-a7b2-1675a86338d0&lang=en-us

Day 8: 虚拟机迁移

本来以为这会是一次简单的任务,毕竟之前在Operation Rebirth已经成功利用vSphere的迁移功能迁移了好几个虚拟机,基本上都是点几下鼠标的事情,结果没想到会是相当曲折的一段尝试。

vSphere

用官方工具直接在R720上部署VSCA虚拟机,添加R720的时候很顺利,结果添加NUC的时候就卡住了,然后提示超时。

我的猜想是VSCA的版本是6.5,而NUC上的ESXi版本是6.7,所以因为版本不兼容添加不上。

直接注册虚拟机

既然没办法直接迁移,那可以试试从vmx文件注册虚拟机,我的做法是在两个ESXi上挂载同一个群晖的NFS,利用这个把虚拟磁盘传过去。

结果注册虚拟机的时候报错,显示说虚拟机的硬件架构版本14不受支持,版本14对应的应该就是ESXi6.7,而ESXi6.5则是版本13,所以注册了虚拟机之后没法更改配置,也没法启动。

仅迁移虚拟磁盘

既然没法直接注册虚拟机,那就只能选择放弃快照,把虚拟磁盘拷过来重新配置虚拟机。但是ESXi默认是使用多个分散的vmdk文件组织虚拟磁盘的,这就需要先把这些文件合并起来。

网上我找到的教程基本都是用的vmware-vdiskmanager.exe这个VMware WorkStation自带的工具程序,通过一句命令行转换,但是不知道是不是我的参数输入错了,本来100GiB的磁盘转出来只有3.8GiB,这显然不对,放进WorkStation也开不了机,所以这个方法被我放弃了。

我最后选择,而且验证可行的方案,是使用StarWind V2V Converter进行转换,StarWind V2V Converter可以选择ESXi中的虚拟机作为源磁盘,也可以选择ESXi中的虚拟机作为目标磁盘,那么把两个选项结合起来,就可以实现在不同版本的ESXi之间迁移虚拟磁盘的目标。StarWind V2V Converter还会自动将目标虚拟机的硬件配置设置为源虚拟机的配置。

善后

在迁移后,可能需要重新配置一下网卡,可以用ifconfig -a命令查看新网卡的名字

Day 9: 防火墙与外部访问

防火墙

IPv4的端口转发很简单,只需要在OpenWRT的端口转发应用里面配置内部和外部端口就行,但是IPv6的端口转发有一些陷阱:

在配置防火墙规则的时候,需要放行的端口必须填写在“目标端口”一栏,而“源端口”不能填写任何内容,只有这样才能正常访问。因为这里的源端口和端口转发的源端口并不同,端口转发有两个端口需要设置是因为有wan侧和lan侧,相当于是外侧端口和内侧端口,而防火墙设置的两个端口相当于是客户端的源端口和服务器的目标端口,显然源端口是建立连接时由客户端操作系统指定的,不会和目标端口一样,因此在防火墙里面应该设置为任意。

iptables -Lip6tables -L查看当前iptables配置项。

参考:Openwrt/LEDE打开防火墙指定IPV6端口,不全部打开,让你的网络更安全

SSL证书

听说zerossl挺不错的,先试试,肯定不是因为教程用的是zerossl。

先ssh进去配置一下acme的注册账号

sudo docker run --rm -v "/volume1/docker/acme":/acme.sh --net=host neilpang/acme.sh --register-account --server zerossl --eab-kid "REPLACE_ME" --eab-hmac-key "REPLACE_ME"

然后写一个脚本,注册为计划任务就行

export DOMAIN=域名

docker run --rm \
-v "/volume1/docker/acme":/acme.sh \
-e DP_Id="REPLACE_ME" \
-e DP_Key="REPLACE_ME" \
--net=host \
neilpang/acme.sh \
--issue --dns dns_dp --dnssleep 60 -d "${DOMAIN}" -d "*.${DOMAIN}" --server zerossl

docker run --rm \
-v "/volume1/docker/acme":/acme.sh \
-e SYNO_Username="username" \
-e SYNO_Password="password" \
-e SYNO_Certificate="" \
--net=host \
neilpang/acme.sh \
--deploy -d "${DOMAIN}" -d "*.${DOMAIN}" \
--deploy-hook synology_dsm

新建了计划任务之后,可以点设置按钮设置输出结果的保存位置,不用手动写了。

参考:使用 acme.sh 直接部署 SSL 到群晖 - 靛青K
群晖 dsm7 的问题

Day 10: 对象存储和Seafile

部署Seafile

MinIO按参考部署。

在用户里面,创建一个用户seafile,分配readwrite的policy给他。
创建三个存储桶seafile-commit-objects、seafile-fs-objects和seafile-block-objects。

用官方脚本部署seafile,然后在/opt目录下创建seafile.conf,编辑内容如下

[commit_object_backend]
name = s3
bucket = seafile-commit-objects
key_id = ACCESS_KEY
key = SECRET_KEY
host = 10.10.10.10:9000
path_style_request = true
memcached_options = --SERVER=localhost --POOL-MIN=10 --POOL-MAX=100

[fs_object_backend]
name = s3
bucket = seafile-fs-objects
key_id = ACCESS_KEY
key = SECRET_KEY
host = 10.10.10.10:9000
path_style_request = true
memcached_options = --SERVER=localhost --POOL-MIN=10 --POOL-MAX=100

[block_backend]
name = s3
bucket = seafile-block-objects
key_id = ACCESS_KEY
key = SECRET_KEY
host = 10.10.10.10:9000
path_style_request = true
memcached_options = --SERVER=localhost --POOL-MIN=10 --POOL-MAX=100

其中ACCESS_KEY和SECRET_KEY为上一步创建的用户名和密码。

然后根据Seafile的迁移指南,执行以下步骤。

/opt/seafile/seafile-server-latest/migrate.sh /opt

/opt/seafile/seafile-server-latest/seahub.sh stop
/opt/seafile/seafile-server-latest/seafile.sh stop

/opt/seafile/seafile-server-latest/migrate.sh /opt

我对手册里“最后需要先停止seafile服务,再做一次增量迁移。”的理解就是停止之后再migrate一遍,不一定对,但我这边成功了。

最后把新增的配置加到/opt/seafile/conf/seafile.conf的最后,然后启动seafile即可(可能需要切换到seafile用户启动)。

/opt/seafile/seafile-server-latest/seafile.sh start
/opt/seafile/seafile-server-latest/seahub.sh start

参考:拥有自己的MinIO对象存储服务器
Seafile 安装脚本
Seafile 用户手册

SSL支持和企业微信集成

更改NGINX里面配置的主机名,然后安装certbot

前面的都照wildcard教程走,安装插件时装certbot-dns-dnspod,然后sudo snap connect certbot:plugin certbot-dns-dnspod,并创建一个配置文件,参考GitHub页面设置对应的凭据。

凭据文件要chown给root,并且chmod 600.

运行certbot时加上-i nginx,可以自动配好证书。

sudo certbot -i nginx -a dns-dnspod --dns-dnspod-credentials /home/minaduki/dnspod-credentials.ini -d your.doamin -d "*.your.domain"

参考https://github.com/EricZhang456/certbot-dns-dnspod

企业微信需要设置正确的回调地址,否则没法扫码登录

发表评论

您的电子邮箱地址不会被公开。

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据