吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4540|回复: 22
收起左侧

[其他原创] Proxmox VE相关的各种一键脚本(一键安装PVE)一键开KVM/LXC的NAT服务器自带内外网转发

  [复制链接]
祈LHL 发表于 2023-5-4 21:26
本帖最后由 祈LHL 于 2023-8-18 15:23 编辑

PVE

感谢 Proxmox VE 的免费订阅支持

原始仓库:https://github.com/spiritLHLS/pve 说明文档:https://virt.spiritlhl.net/

由于个人精力有限,暂时只是在部分机器,比如腾讯云和国外部分大厂的服务器上测试过,其他的小厂或者阿里云等均未实机测试,有BUG随时提出来吧

目前已支持X86_64或ARM架构的服务器使用,甚至支持非Debian系统宿主机使用PVE,详见仓库说明自定义部分

前言

国内服务器请使用国内命令,国际服务器请使用国际命令

请确保使用前机器可以重装系统,不保证本套脚本不造成任何BUG!!!

如果服务器是VPS而不是独服,可能会出现各种各样的BUG,请做好部署失败重装服务器的准备!!!

待开发内容:

  • 文档以及脚本输出修改支持双语
  • 创建带IPV6独立地址的VM虚拟机或CT容器

目录

emm,不大会用论坛的目录写法,这个目录只是展示,真要点击还是点左下角那块的目录吧

系统要求与配置

各种要求

建议debian在使用前尽量使用最新的系统

当然不使用最新的debian系统也没问题,只不过得不到官方支持。只适配Debian系统(非Debian无法通过APT源安装,官方只给了Debian的镜像,其他系统只能使用ISO安装)

  • 系统要求:Debian 8+
  • 最低的硬件要求:2核2G内存服务器硬盘至少20G
  • 可开KVM的硬件要求:VM-X或AMD-V支持-(部分VPS和全部独服支持)

遇到选项不会选的可无脑回车安装,所有脚本内置国内外IP自动判断,使用的是不同的安装源与配置文件,有使用CDN加速镜像下载

检测硬件环境

  • 本仓库脚本执行前务必执行本脚本检测环境,如果不符合安装PVE的要求则无法使用后续的脚本
  • 检测硬件配置是否满足最低要求
  • 检测硬件环境是否可嵌套虚拟化KVM类型的服务器
  • 检测系统环境是否可嵌套虚拟化KVM类型的服务器
  • 不可嵌套虚拟化KVM类型的服务器也可以开LXC虚拟化的服务器
bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/check_kernal.sh)

国内:

bash <(wget -qO- --no-check-certificate https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/check_kernal.sh)

PVE基础安装说明

  • 安装的是当下apt源最新的PVE
  • 比如debian10则是pve6.4,debian11则是pve7.x
  • /etc/hosts文件修改(修正商家hostname设置错误以及新增PVE所需的内容)
  • 已设置/etc/hosts为只读模式,避免重启后文件被覆写,如需修改请使用chattr -i /etc/hosts取消只读锁定,修改完毕请执行chattr +i /etc/hosts只读锁定
  • 检测是否为中国IP,如果为中国IP使用清华镜像源,否则使用官方源
  • 安装PVE开虚拟机需要的必备工具包
  • 替换apt源中的企业订阅为社区源
  • 打印查询Linux系统内核和PVE内核是否已安装
  • 查询网络配置是否为dhcp配置的V4网络,如果是则转换为静态地址避免重启后dhcp失效,已设置为只读模式,如需修改请使用chattr -i /etc/network/interfaces.d/50-cloud-init取消只读锁定,修改完毕请执行chattr +i /etc/network/interfaces.d/50-cloud-init只读锁定
  • 检测/etc/resolv.conf是否为空,为空则设置检测8.8.8.8的开机自启添加DNS的systemd服务
  • 新增PVE的APT源链接后,下载PVE并打印输出登陆信息
  • 配置完毕需要重启系统加载新内核

一键安装PVE

curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/install_pve.sh -o install_pve.sh && chmod +x install_pve.sh && bash install_pve.sh

国内:

curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/install_pve.sh -o install_pve.sh && chmod +x install_pve.sh && bash install_pve.sh
  • 安装过程中可能会退出安装,需要手动修复apt源,如下图所示修复完毕后再次执行本脚本

图片

图片

预配置环境

  • 创建资源池mypool
  • 移除订阅弹窗
  • 尝试开启硬件直通
  • 检测AppArmor模块并试图安装
bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/build_backend.sh)

国内

bash <(wget -qO- --no-check-certificate https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/build_backend.sh)

自动配置IPV4的NAT网关

  • 使用前请保证重启过服务器且此时PVE能正常使用WEB端再执行,重启机器后不要立即执行此命令,至少等几分钟待WEB端启动成功后再执行
  • 这一步是最容易造成SSH断开的,原因是未等待PVE内核启动就修改网络会造成设置冲突,所以至少等几分钟待内核启动也就是WEB端启动成功后再执行
  • 创建vmbr0,母鸡允许addr和gateway为内网IP或外网IP,已自动识别,测试腾讯云可用
  • 创建vmbr1(NAT网关)
  • 开NAT虚拟机时网关(IPV4)使用172.16.1.1,IPV4/CIDR使用172.16.1.x/24,这里的x不能是1,当然如果后续使用本套脚本无需关注这点细枝末节的东西
  • 想查看完整设置可以执行cat /etc/network/interfaces查看
  • 加载iptables并设置回源且允许NAT端口转发
bash <(wget -qO- --no-check-certificate https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/build_nat_network.sh)

国内

bash <(wget -qO- --no-check-certificate https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/build_nat_network.sh)

一键生成KVM虚拟化的NAT服务器

使用前记得执行本仓库的第一个个命令,那个检测硬件环境的命令,展示如下

图片

查询如上的只需使用下面的一键脚本自动创建虚拟机即可,无需手动再修改WEB端设置

图片

查询如上的在使用后续脚本创建了虚拟机后,需要手动修改WEB端设置,需要关闭对应每个虚拟机的硬件嵌套虚拟化,如下图

图片

先停止虚拟机再修改,修改完后再开机才能使用NOVNC,不关闭可能导致这个虚拟机有BUG无法使用,如果强行安装PVE开KVM,启动不了的也可以关闭这个虚拟化试试能不能启动虚拟机

单独生成KVM虚拟化的VM

  • 自动开设NAT服务器,默认使用Debian10镜像,因为该镜像占用最小
  • 可在命令中自定义需要使用的镜像,这里有给出配置好的镜像,镜像自带空间是2G硬盘,所以最少需要在命令中设置硬盘到3G
  • 自定义内存大小推荐512MB内存,需要注意的是母鸡内存记得开点swap免得机器炸了开SWAP点我跳转
  • 自动进行内外网端口映射,含22,80,443端口以及其他25个内外网端口号一样的端口
  • 生成后需要等待一段时间虚拟机内部的cloudinit配置好网络以及登陆信息,大概需要5分钟
curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm.sh -o buildvm.sh && chmod +x buildvm.sh

国内

curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm.sh -o buildvm.sh && chmod +x buildvm.sh

单个生成的使用方法

  • 系统支持:详见 跳转 中列出的系统,使用时只需写文件名字,不需要.qcow2尾缀
  • 注意这里的用户名不能是纯数字,会造成cloudinit出问题,最好是纯英文或英文开头
./buildvm.sh VMID 用户名 密码 CPU核数 内存 硬盘 SSH端口 80端口 443端口 外网端口起 外网端口止 系统

示例

测试开一个NAT服务器

以下示例开设VMID为102的虚拟机,用户名是test1,密码是1234567,CPU是1核,内存是512MB,硬盘是5G,SSH端口是40001,80端口是40002,443端口是40003

同时内外网映射端口一致的区间是50000到50025,系统使用的是ubuntu20

./buildvm.sh 102 test1 1234567 1 512 5 40001 40002 40003 50000 50025 ubuntu20

开设完毕可执行

cat vm102

查看信息

删除示例

删除端口映射,删除测试的虚拟机和log文件

qm stop 102
qm destroy 102
iptables -t nat -F
iptables -t filter -F
service networking restart
systemctl restart networking.service
rm -rf vm102

相关qcow2镜像

  • 已预安装开启cloudinit,开启SSH登陆,预设值SSH监听V4和V6的22端口,开启允许密码验证登陆,开启允许ROOT登陆

https://github.com/spiritLHLS/Images/releases/tag/v1.0

批量开设NAT的KVM虚拟化的VM

  • 初次使用前需要保证当前PVE未有任何虚拟机未有进行任何端口映射,否则可能出现BUG
  • 开设前请使用screen挂起执行,避免批量开设时间过长,SSH不稳定导致中间执行中断,推荐使用PVE自带的Shell操作母鸡
  • 可多次运行批量生成VM,但需要注意的是母鸡内存记得开点swap免得机器炸了开SWAP点我跳转
  • 自动开设NAT服务器,默认使用Debian10镜像,因为该镜像占用最小
  • 自动进行内外网端口映射,含22,80,443端口以及其他25个内外网端口号一样的端口
  • 生成后需要等待一段时间虚拟机内部的cloudinit配置好网络以及登陆信息,大概需要5分钟
  • 默认批量开设的虚拟机网络配置为:22,80,443端口及一个25个端口区间的内外网映射
  • 可自定义批量开设的核心数,内存大小,硬盘大小,记得自己计算好空闲资源开设

使用方法

curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_vm.sh -o create_vm.sh && chmod +x create_vm.sh && bash create_vm.sh

国内

curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_vm.sh -o create_vm.sh && chmod +x create_vm.sh && bash create_vm.sh

开设完毕可执行

cat vmlog

查看信息

删除所有虚拟机

删除所有nat的端口映射并重启网络,删除所有虚拟机和log文件

for vmid in $(qm list | awk '{if(NR>1) print $1}'); do qm stop $vmid; qm destroy $vmid; rm -rf /var/lib/vz/images/$vmid*; done
iptables -t nat -F
iptables -t filter -F
service networking restart
systemctl restart networking.service
rm -rf vmlog

注意事项

PVE修改虚拟机配置前都得停机先,再修改配置,修改完再启动,免得出现配置重载错误

一键生成单个CT也就是LXC虚拟化的NAT容器

LXC虚拟化的容器-自带内外网映射

  • 初次使用前需要保证当前PVE未有任何虚拟机未有进行任何端口映射,否则可能出现BUG
  • 开设前请使用screen挂起执行,避免批量开设时间过长,SSH不稳定导致中间执行中断,推荐使用PVE自带的Shell操作母鸡
  • 自动开设NAT服务器,默认使用Debian11镜像,也可自定义系统
  • 自动进行内外网端口映射,含22,80,443端口以及其他25个内外网端口号一样的端口
  • 生成后需要等待一段时间虚拟机内部配置好网络以及登陆信息,大概需要3分钟
  • 默认开设的虚拟机网络配置为:22,80,443端口及一个25个端口区间的内外网映射
  • 可自定义开设的核心数,内存大小,硬盘大小,记得自己计算好空闲资源开设
  • 开设的CT默认已启用SSH且允许root登陆,且已设置支持使用docker的嵌套虚拟化
curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildct.sh -o buildct.sh && chmod +x buildct.sh

国内

curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildct.sh -o buildct.sh && chmod +x buildct.sh

如何使用

  • 系统支持:debian10,debian11,ubuntu18,ubuntu20,ubuntu22
  • 其他系统可能支持可能不支持,自行测试
  • 默认用户名是root
./buildct.sh CTID 密码 CPU核数 内存 硬盘 SSH端口 80端口 443端口 外网端口起 外网端口止 系统

CT示例

测试开一个NAT的LXC虚拟化的容器

以下示例开设CTID为102的容器,用户名是root,密码是1234567,CPU是1核,内存是512MB,硬盘是5G,SSH端口是20001,80端口是20002,443端口是20003

同时内外网映射端口一致的区间是30000到30025,系统使用的是debian10

./buildct.sh 102 1234567 1 512 5 20001 20002 20003 30000 30025 debian10

开设完毕可执行

cat ct102

查看信息

删除所有CT

以下命令将删除所有CT和所有的log文件,删除所有nat的端口映射并重启网络

pct list | awk 'NR>1{print $1}' | xargs -I {} sh -c 'pct stop {}; pct destroy {}'
rm -rf ct*
iptables -t nat -F
iptables -t filter -F
service networking restart
systemctl restart networking.service

批量开设NAT的LXC虚拟化的CT容器

  • 自带内外网映射
  • 可重复运行继承配置

一键命令

  • 初次使用前需要保证当前PVE未有任何CT容器未有进行任何端口映射,否则可能出现BUG
  • 开设前请使用screen挂起执行,避免批量开设时间过长,SSH不稳定导致中间执行中断,推荐使用PVE自带的Shell操作母鸡
  • 可多次运行批量生成CT容器,但需要注意的是母鸡内存记得开点swap免得机器炸了开SWAP点我跳转
  • 可自定义批量开设的核心数,内存大小,硬盘大小,记得自己计算好空闲资源开设
  • 开设的CT默认已启用SSH且允许root登陆,且已设置支持使用docker的嵌套虚拟化
curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_ct.sh -o create_ct.sh && chmod +x create_ct.sh && bash create_ct.sh

国内

curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_ct.sh -o create_ct.sh && chmod +x create_ct.sh && bash create_ct.sh

开设完毕可执行

cat ctlog

查看信息

免费评分

参与人数 12吾爱币 +17 热心值 +11 收起 理由
shangkouyou + 1 + 1 谢谢@Thanks!
iNIC + 1 + 1 谢谢@Thanks!
maomao23 + 1 太可爱了,一点目录跳转论坛首页去了- -!
BobCoder + 1 + 1 热心回复!
XiziyaUR + 1 + 1 我很赞同!
wushaominkk + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
泡泡汽水 + 1 + 1 谢谢@Thanks!
Liona + 1 + 1 谢谢@Thanks!
zhczf + 1 我很赞同!
rhol + 1 + 1 鼓励转贴优秀软件安全工具和文档!
十三2020 + 1 + 1 我很赞同!
huojingang + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 祈LHL 发表于 2023-10-4 10:47
国外大厂的服务器基本都测试完毕了,宿主机带至少/64的IPV6子网的也都接入了IPV6自动分配的功能,已经解决了大部分云服务器的IPV6子网需要MAC校验的问题

整合项目到

一键虚拟化项目

国内 https://virt.spiritlhl.net/

国际 https://www.spiritlhl.net/

这里了(国内国际不同CDN加速访问,自行尝试)
 楼主| 祈LHL 发表于 2023-5-5 12:18
Kls673M 发表于 2023-5-5 10:22
感谢分享,这是在服务器上开虚拟机吧

国内厂商卖的虚拟机基本不开嵌套虚拟化,只能开LXC的容器,开不来KVM的虚拟机

有开嵌套虚拟化的就能开KVM虚拟化的虚拟机了

两者差异知乎瞅瞅说的比我更好
 楼主| 祈LHL 发表于 2023-5-4 21:28
本帖最后由 祈LHL 于 2023-10-4 10:48 编辑

所有代码均开源,均使用官方源或清华镜像源的组件,欢迎提供PR

2023.10.03

系统要求:Debian 8~12
李佑辰 发表于 2023-5-4 21:31
祈LHL 发表于 2023-5-4 21:28
所有代码均开源,欢迎提供PR

牛啊 牛啊!
向大佬学习 发表于 2023-5-4 21:41
感谢大佬分享
ff963738610 发表于 2023-5-4 22:03
大佬,受教了
wan0 发表于 2023-5-4 22:11
谢谢分享,学习学习
fengliuyang 发表于 2023-5-4 23:28
做到挺厉害的
十三2020 发表于 2023-5-4 23:43
前排支持,学习了。。受教。
Kls673M 发表于 2023-5-5 10:22
感谢分享,这是在服务器上开虚拟机吧
lugoing 发表于 2023-5-5 10:31
已关注git。工具很好用。其他的东西也很好
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-3 11:14

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表