十八比特 十八比特
⚡ 18bit DNS (opens new window)
🏠 主页
  • 🌐 网站
  • 📦 资源
  • 📝 教程
  • 📐 制表符
  • 🗃️ 分类
  • 🏷️ 标签
  • 🗄️ 归档
📃 文章日志
ℹ️ 关于

十八比特

风带来故事的种子,时间使之发芽
⚡ 18bit DNS (opens new window)
🏠 主页
  • 🌐 网站
  • 📦 资源
  • 📝 教程
  • 📐 制表符
  • 🗃️ 分类
  • 🏷️ 标签
  • 🗄️ 归档
📃 文章日志
ℹ️ 关于
  • 从零开始的 All In One
    • 1. 安装PVE
    • 2. 安装Openroot
    • 3. OpenWrt中安装OpenClash
    • 4. 后续
  • All In One
秋澪冬安
2024-06-14
目录

从零开始的 All In One

我的All in one小主机是康耐信的n100,有四个网口,ETH0、ETH1、ETH2准备直通到OpenWrt中,ETH3作为PVE的管理口。

看前提示:本教程需要你会一点 Linux 基础,仅仅是对我这次折腾的一次记录,不太适合小白用户。

下面是一个大致的网络拓补图

网络拓扑

# 1. 安装PVE

# 1.1 安装

准备工作:

  • 一个U盘(注意会被格式化)
  • 下载PVE镜像,下载地址 (opens new window)
  • 下载烧录软件,我用的是balenaEtcher (opens new window)

开始安装pve:具体过程参考这个B站视频 👉 【利用PVE虚拟机,来打造属于自己的All In One系统吧!】 【精准空降到 02:06】 (opens new window)

视频教程更加清晰明了,并不是因为我懒得写图文教程

⚠️注意:在视频的 03:54 (opens new window) 处,这里的DNS Server 要填一个有效的DNS服务器,不然后面PVE接入OpenWrt后还是上不了网,我这里填的 223.5.5.5

看到 5分23秒 处即可结束,因为我后面要直通网卡到OpenWrt。

# 1.2 配置

# 1.2.1 配置ssh

用 vim 编辑 vim /etc/ssh/sshd_config ,修改下面的几个配置:

PasswordAuthentication no
PermitEmptyPasswords no
X11Forwarding no
PubkeyAuthentication yes

进入 /root/.ssh 目录,里面有 id_rsa 文件,下载到本地。

这样配置完成之后,pve的ssh就禁止使用密码登录,只能使用密钥连接了。

# 1.2.2 配置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 (opens new window) 来设置一下,然后执行 systemctl restart fail2ban 就可以了。

然后配置fail2ban为后台管理开启登录保护:

编辑 /etc/fail2ban/jail.local 文件在文件末尾写入:

[proxmox]
enabled = true
port = https,http,8006
filter = proxmox
backend = systemd
maxretry = 3
findtime = 2d
bantime = 1h

在用vim编辑 vim /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.2.3 优化

  1. 显示系统更多信息:https://www.right.com.cn/FORUM/forum.php?mod=viewthread&tid=6754687 (opens new window)

  2. 修改 CPU 调度模式

    apt install cpufrequtils
    vim /etc/default/cpufrequtils
    

    写入内容:

    GOVERNOR="ondemand"
    

    重启服务:

    systemctl restart cpufrequtils
    

# 1.3 开启 SR-IOV

为了开启 SR-IOV ,我们需要切换内核,因为最新版本的PVE中使用的内核是6.8,但是 [i915-sriov-dkms (opens new window)](https://github.com/strongtz/i915-sriov-dkms) 只支持到了6.5。

# 1.3.1 安装内核

执行命令:

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 。

# 1.3.2 开启

安装必要的依赖:

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. 安装Openroot

我用的是 koolcenter 编译的 iStoreOS (opens new window) ,选择你主机对应的系统架构的镜像下载,我选的是 x86_64_efi 。

首先在PVE中创建OpenWrt虚拟机,参考视频依旧是上面那个视频 👉 【利用PVE虚拟机,来打造属于自己的All In One系统吧!】 【精准空降到 05:47】 (opens new window)

⚠️注意:本次教程我们用不到 "img2kvm" 这个脚本,只需要上传镜像文件即可,我们直接使用命令也能做到同样的效果

将镜像文件上传到pve中后我们执行下面这条命令:

qm importdisk <你的虚拟机id> <上传的镜像路径> local-lvm

导入成功后,继续按照视频中的教程设置虚拟磁盘和启动顺序。

# 3. OpenWrt中安装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 (opens new window)

打开OpenWrt后台按照如图所示的方法安装:

image-20240613150044187

# 3.2 配置

话不多说,直接跟着视频教程来吧 👉 油管 (opens new window) 。

# 3.3 设置SSH和HTTPS

# 3.3.1 SSH密钥

取消这两个的勾选,禁止使用密码登陆

image-20240613194121754

添加ssh密钥

image-20240613194219045

# 3.3.2 HTTPS

OpenWrt默认支持https,但是使用的是自签证书,这里改成申请的ssl证书

下载证书,将 .key 和 .crt 格式的两个文件上传到 OpenWrt 系统中的任意位置,但是要记住。

使用 vim 修改 /etc/config/uhttpd 文件,将 /etc/uhttpd.crt 和 /etc/uhttpd.key 修改成你上传的文件路径,然后执行命令 /etc/init.d/uhttpd restart ,这样就算完成了。

# 4. 后续

至此,All in one 的两个核心就算安装好了。接下来就是安装其它虚机机,比如 Ubuntu、Windwos等等。

我的思路是,软路由就好好当软路由,不在上面搭建服务。安装一台 Ubuntu Server 将以前 树莓派 (opens new window) 上的服务迁移到上面。

#Linux#PVE#OpenWrt#SSH#SSL#fail2ban
上次编辑: 2024/08/30, 16:21:31
最近更新
01
SSH跳板机访问内网服务
06-16
02
GPG 导出导入命令
06-16
03
续期过期的GPG密钥
05-23
更多文章>
Theme by Vdoing | Copyright © 2020-2025 十八比特 | 蜀ICP备2022002410号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式