Homelab AIO 及网络配置
经历了将近一年的时间,我不断对 Homelab 进行修改,最终变成了像图片里这个样子的 All in One/Boom!
配置清单
- NUC9 i7:成品机,可插 3 块 PCIE 固态硬盘,另有两个 PCIE 插槽
- CPU:i7-9850H
- 内存【加装】:64GB
- 硬盘【加装】:3 x 4T 固态硬盘
- 网卡【加装】:EB-LINK intel 82599芯片PCI-E X4 10G万兆单光口光纤网卡X520-DA1
- AIO 主力机,组装而成
- CPU:AMD 7950x3D
- 内存:64GB
- 主板:X670E
- 散热:AXP90
- 硬盘:2T 固态 + 之前买的不同容量的机械硬盘
- 网卡:10G + 2.5G
- ArmKVM:成品
- 交换机:4x2.5G + 2x10G 光口
网络
入户宽带是 1G 的,且家里现有网络环境均是 1G 的,已经足够日常使用了,但是考虑到 AIO 与 Nas 的数据访问备份速度,最终还是在 AIO 与 Nas 之间通过万兆交换机相连,尽可能小范围的调整了网络环境。
但是还有一个比较重要的问题,这边移动家庭宽带虽然给 IPV6 公网,但是一个入户只能给共计 8 个 IP 地址,超过 8 个就会面临着不可控的断网等问题,因此没有办法简单粗暴的直连所有设备。
考虑到 PVE 中并不是所有的虚拟机都需要公网 IPV6,配置 NAT 成为了必要。
PVE 配置 NAT
总体可以分为以下步骤:
1. PVE Host 添加用于 NAT 的网卡
默认情况下会有 vmbr0 与 Host 的网卡绑定,我们只需要添加新的 vmbr1 网卡,并将 vmbr1 的网络流量全部通过 vmbr0 对外即可:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
auto vmbr1
# 下面是 IPV4 配置,10.10.0.1/24 替换成自己的即可
iface vmbr1 inet static
address 10.10.0.1/24
bridge-ports none
bridge-stp off
bridge-fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up iptables -t nat -A POSTROUTING -s '10.10.0.0/24' -o vmbr0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s '10.10.0.0/24' -o vmbr0 -j MASQUERADE
# 下面是 IPV6 配置,2001:db8:1::1/64 替换成自己的即可
iface vmbr1 inet6 static
address 2001:db8:1::1/64
post-up sysctl -w net.ipv6.conf.all.forwarding=1
post-up ip6tables -t nat -A POSTROUTING -s 2001:db8:1::/64 -o vmbr0 -j MASQUERADE
post-down sysctl -w net.ipv6.conf.all.forwarding=0
post-down ip6tables -t nat -D POSTROUTING -s 2001:db8:1::/64 -o vmbr0 -j MASQUERADE
2. PVE 虚拟机配置网络
以 Ubuntu 为例。首先需要将 vmbr1 网络添加到虚拟机中,之后修改配置文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
# 网卡 ens19 替换成对应的名称
network:
ethernets:
ens19:
addresses:
- 10.10.0.202/24
- 2001:db8:1::2/64
nameservers:
addresses: [2400:3200::1]
routes:
- to: default
via: 10.10.0.1
version: 2
由于没有配置 DHCP,每台虚拟机的 ipv4 和 ipv6 地址均需要手动配置才可以。
3. 宿主机配置 DHCP
首先安装 dhcp-server:
1
sudo apt install isc-dhcp-server
其次编辑配置文件/etc/dhcp/dhcpd.conf
:
1
2
3
4
5
6
7
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.200;
option routers 192.168.1.1;
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
}
同时修改配置文件/etc/default/isc-dhcp-server
:
1
INTERFACESv4="vmbr1"
4. 简单一点的方法
- PVE 宿主机确保有两个网口,没有就加装一个
- 网口一直接接入光猫,自动获取 IPV6,所有需要 IPV6 公网的虚拟机全部添加该网卡
- 网口二直接接入家中的二级路由器/WIFI等,不需要公网的虚拟机添加该网卡即可
家庭服务器
- Nas:主要存储、备份重要数据
- 所有跑在 AIO 中的、有价值的 docker 数据等
- 目前绝大部分的服务我都是用 docker + 映射存储目录运行的,可以很方便的直接将映射的存储目录打包压缩并备份到 Nas 上
- PVE 虚拟机备份,为了防止某一天 PVE 系统无法启动等问题,每天凌晨定时备份虚拟机到 Nas 上
- 重要文件单独备份,包括 KodBox 的网盘文件、immich 的相册文件等
- MacBook 的时间机器备份盘
- 运行这一些比较重要且不需要经常调整的服务
- AdGuard-Home,家里的 WIFI 目前都是接入它了
- tailscale,异地组网
- 所有跑在 AIO 中的、有价值的 docker 数据等
- AIO:各种虚拟机,硬盘是单独穿透到每个虚拟机的(硬盘可以选择是否被备份)
- Windows 11 + 4060 passthrough:应对日常需要 Windows 的场景,还能玩一玩植物大战僵尸
- Ubuntu + 4060 passthrough:应对需要显卡的服务,如 emby、immich 等;还有其他大部分服务都在这里
- Ubuntu:跑了一些关键的、需要稳定一点的服务,如 JumpServer 等
- ArmKVM:直连 AIO,专门负责控制 AIO 服务器,防止机器故障需要人工介入、调整 BIOS 等情况
现在还存在的一些问题
- Truenas 部分:
- 重启后经常无法一次性启动成功,需要再启动一次才行,后续还需要想办法解决一下
- AIO 部分:
- 功耗实在有些高,日常低负载情况下 120w 左右,算上 Truenas 部分,全部功耗到 150w 了,但是目前也没什么好办法降低一下功耗,尽管电费也不要多少就是了
- 积热问题有些严重,装机器的时候失误用了 AXP90,但是实际上可以上 AXP120 的,导致日常低负载情况下 CPU 温度 50 度,PVE 用 stress 跑满 CPU 长时间顶温度墙,且全核仅能维持在 4.0 GHZ,用 GeekBench 6 跑分单核/多核和一般跑分比低了至少 8% 左右,而且主板上的各个散热装甲完全无法得到有效散热,每次停机拆机维护的时候装甲都很烫手,还有中间那块显卡,温度甚至会隔着空气传到机箱外壳 =.=
- 正中间的那个 PCI 挡板,由于下面主板的散热装甲,实际上啥也不能装,本来是想装一个抽风风扇的,结果装不上,只能换到两块显卡之间
- 机箱:
- 前方三个 8cm 风扇受限于大小风量有限,CPU 附近的热量基本吹不开
- 机箱正面的 USB 及 typec 的线,c 口线与 USB 线是一根,且两个接口之间的线长大概也就 10cm左右,主板上 USB 接口及 c 接口需要在一起才能插上,否则只能舍弃其中一个
- 机箱外壳在底部还有两个螺丝,每次拆外壳都需要把机器翻过来才能拆开
未来
- 显卡虚拟化:需要一个能够虚拟化的显卡同时穿透到多个虚拟机里。目前两块 4060 说实话有点用不太上
- 散热改进:准备换 12cm 撒热风扇,看看能不能好一些
- 备份 NAS:单有一个 NAS 不太够,准备再整一个配置低一些的 NAS 做异地备份
本文由作者按照 CC BY 4.0 进行授权