从零开始的 All In One
我的All in one小主机是康耐信的n100,有四个网口,ETH0、ETH1、ETH2准备直通到OpenWrt中,ETH3作为PVE的管理口。
看前提示
本教程需要你会一点 Linux 基础,仅仅是对我这次折腾的一次记录,不太适合小白用户。
相关信息
再次阅读自己写的这篇文章,感觉写的很乱。所以本篇文章已于 2024年09月03日 重新写了一遍。
下面是一个大致的网络拓补图
1. 安装PVE
1.1 安装
准备工作:
- 一个U盘(注意会被格式化)
- 下载PVE镜像,下载地址
- 下载烧录软件,我用的是balenaEtcher
开始安装pve:具体过程参考这个B站视频 👉 【利用PVE虚拟机,来打造属于自己的All In One系统吧!】 【精准空降到 02:06】
看到 5分23秒 处即可结束,因为我后面要直通网卡到OpenWrt。
注意:在视频的 03:54 处,这里的DNS Server 要填一个有效的DNS服务器,不然后面PVE接入OpenWrt后还是上不了网,我这里填的 223.5.5.5
视频教程更加清晰明了,并不是因为我懒得写图文教程
1.2 修改镜像仓库
参考官方文档,编辑
/etc/apt/sources.list
文件,删除所有内容,添加以下内容:deb https://ftp.debian.org/debian bookworm main contrib deb https://ftp.debian.org/debian bookworm-updates main contrib # Proxmox VE pve-no-subscription repository provided by proxmox.com, # NOT recommended for production use deb http://download.proxmox.com/debian/pve bookworm pve-no-subscription # security updates deb https://security.debian.org/debian-security bookworm-security main contrib
参考官方文档,编辑
/etc/apt/sources.list.d/pve-enterprise.list
文件,在行开头添加#
禁用仓库:# deb https://enterprise.proxmox.com/debian/pve bookworm pve-enterprise
参考官方文档,编辑
/etc/apt/sources.list.d/ceph.list
文件,删除所有内容,添加下面内容:deb http://download.proxmox.com/debian/ceph-quincy bookworm no-subscription
1.3 配置ssh
用 vim 编辑 vim /etc/ssh/sshd_config
,修改下面的几个配置:
PasswordAuthentication no
PermitEmptyPasswords no
X11Forwarding no
PubkeyAuthentication yes
进入 /root/.ssh
目录,里面有 id_rsa
文件,下载到本地。
这样配置完成之后,pve的ssh就禁止使用密码登录,只能使用密钥连接了。
1.4 配置fail2ban
安装fail2ban为ssh和pve管理后台登录开启登录保护。
apt update
apt install fail2ban
到这里会发现,安装了fail2ban之后,fail2ban无法启动,因为 Debian12 的缘故,需要调整一个地方的设置。
创建一个 jail.local
文件:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
根据这个 https://github.com/fail2ban/fail2ban/issues/3292#issuecomment-1142503461 来设置一下,然后执行 systemctl restart fail2ban
就可以了。
参考官方文档,配置fail2ban为后台管理开启登录保护:
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
编辑 /etc/fail2ban/jail.local
文件在文件末尾写入:
[proxmox]
enabled = true
port = https,http,8006
filter = proxmox
backend = systemd
maxretry = 3
findtime = 1d
bantime = 7d
编辑 /etc/fail2ban/filter.d/proxmox.conf
,写入:
[Definition]
failregex = pvedaemon\[.*authentication failure; rhost=<HOST> user=.* msg=.*
ignoreregex =
journalmatch = _SYSTEMD_UNIT=pvedaemon.service
最后执行:
systemctl restart fail2ban
1.5 显示系统更多信息
参考恩山无线论坛帖子。
1.6 核显直通
写了一篇单独的教程,参见PVE8.2核显直通到Windows10
SR-IOV方案(废弃)
开启 SR-IOV
重要
用着不舒服,后面改成直接直通整个核显了,可以看看这篇文章 PVE8.2核显直通到Windows10
为了开启 SR-IOV
,我们需要切换内核,因为最新版本的PVE中使用的内核是6.8,但是 [i915-sriov-dkms](https://github.com/strongtz/i915-sriov-dkms) 只支持到了6.5。
安装内核
执行命令:
apt install proxmox-kernel-6.5.11-8-pve-signed proxmox-headers-6.5.11-8-pve
然后固定内核版本:
# 查看已安装的内核
proxmox-boot-tool kernel list
## 如果列表中没有刚才安装的内核,请执行下面的命令
proxmox-boot-tool kernel add 6.5.11-8-pve
proxmox-boot-tool refresh
# 固定内核版本
proxmox-boot-tool kernel pin 6.5.11-8-pve
如果要取消固定,可以执行命令:proxmox-boot-tool kernel unpin
。
开启
安装必要的依赖:
apt update
apt install mokutil sysfsutils build-* dkms
克隆仓库:
git clone https://github.com/strongtz/i915-sriov-dkms.git
cd i915-sriov-dkms
开始安装
KERNEL=$(uname -r); KERNEL=${KERNEL%-pve}
cp -a dkms.conf{,.bak}
sed -i 's/"@_PKGBASE@"/"i915-sriov-dkms"/g' dkms.conf
sed -i 's/"@PKGVER@"/"'"$KERNEL"'"/g' dkms.conf
cat dkms.conf
dkms add .
cd /usr/src/i915-sriov-dkms-$KERNEL
dkms status
dkms install -m i915-sriov-dkms -v $KERNEL -k $(uname -r) --force
dkms status
lspci | grep VGA
# 请记录当前的核显ID,修改下行的ID后执行下面的代码。
echo "devices/pci0000:00/0000:00:02.0/sriov_numvfs = 7" > /etc/sysfs.conf
cat /etc/sysfs.conf
mokutil --import /var/lib/dkms/mok.pub
注册 MOK、继续、是、<密码>、重新启动
reboot
编辑 /etc/default/grub 文件,在 quiet 后添加 intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7
update-grub
update-initramfs -u
reboot
如果使用 Proxmox 8.1 或更高版本并启用安全启动,则必须设置 MOK。在 Proxmox 主机重启时,监控启动过程并等待执行 MOK 管理窗口,出现 MOK 窗口,需要按任意键继续,不然就自动跳过了。选项依次为:Enroll MOK、Continue、Yes、输入设置的密码、Reboot。如果错过了第一次重启,则需要重新运行 mokutil 命令并再次重启。以后就不必了!
开启 SR-IOV 真的太折腾了😭,下次不搞了。
2. 安装OpenWrt
我用的是 koolcenter 编译的 iStoreOS ,选择你主机对应的系统架构的镜像下载,我选的是 x86_64_efi
。
首先在PVE中创建OpenWrt虚拟机,参考视频依旧是上面那个视频 👉 【利用PVE虚拟机,来打造属于自己的All In One系统吧!】 【精准空降到 05:47】
注意:本次教程我们用不到 "img2kvm" 这个脚本,只需要上传镜像文件即可,我们直接使用命令也能做到同样的效果
将镜像文件上传到pve中后我们执行下面这条命令:
qm importdisk <你的虚拟机id> <上传的镜像路径> local-lvm
导入成功后,继续按照视频中的教程设置虚拟磁盘和启动顺序。
2.1 配置SSH
取消这两个的勾选,禁止使用密码登陆
![](/assets/page-img/2024/20240613/3.webp)
添加ssh密钥
![](/assets/page-img/2024/20240613/4.webp)
2.2 配置HTTPS
OpenWrt默认支持https,但是使用的是自签证书,这里改成申请的ssl证书
下载证书,将 .key
和 .crt
格式的两个文件上传到 OpenWrt 系统中的任意位置,但是要记住。
使用 vim 修改 /etc/config/uhttpd
文件,将 /etc/uhttpd.crt
和 /etc/uhttpd.key
修改成你上传的文件路径,然后执行命令 /etc/init.d/uhttpd restart
,这样就算完成了。
3. 安装OpenClash
3.1 安装
安装所需依赖
opkg update && opkg install coreutils-nohup bash iptables dnsmasq-full curl ca-certificates ipset ip-full iptables-mod-tproxy iptables-mod-extra libcap libcap-bin ruby ruby-yaml kmod-tun kmod-inet-diag unzip luci-compat luci luci-base
下载安装包 https://github.com/vernesong/OpenClash/releases
打开OpenWrt后台按照如图所示的方法安装:
![](/assets/page-img/2024/20240613/2.webp)
3.2 配置
话不多说,直接跟着视频教程来吧 👉 油管 。
4. 后续
至此,All in one 的两个核心就算安装好了。接下来就是安装其它虚机机,比如 Debian、Ubuntu、Windwos等等。我的思路是,软路由就好好当软路由,不在上面搭建服务。准备安装一台 Debian 虚拟机将以前 树莓派 上的服务迁移到上面。