Compare commits

..
529 Commits
Author SHA1 Message Date
CallMeR 4a53123479 优化文案描述 2026-08-18 02:23:21 +08:00
CallMeR 99b82b452b 优化文案描述 2026-08-18 01:44:05 +08:00
CallMeR cf082486fa 更新文案描述 2026-08-18 01:39:31 +08:00
CallMeR e87732ed00 优化软件包顺序 2026-08-16 18:50:08 +08:00
CallMeR 0d97a04ea9 更新虚拟机创建截图 2026-08-16 18:03:17 +08:00
CallMeR 517def1376 移除 PVE 服务器定时重启内容 2026-08-15 10:22:05 +08:00
CallMeR a0a3a02a18 更新文案描述 2026-08-14 23:38:13 +08:00
CallMeR 2fadc58a84 更新 Cronie 定时任务配置方法 2026-08-14 23:35:07 +08:00
CallMeR 9beb1fba6a 更新文案描述 2026-08-14 17:48:54 +08:00
CallMeR abccbcad01 更新文案描述 2026-08-14 17:42:30 +08:00
CallMeR a7bf1b06eb 调整文案描述 2026-08-14 15:21:54 +08:00
CallMeR e6aab0f222 修复 tee 命令兼容性问题,并优化 Dnsmasq 配置 2026-08-14 14:43:08 +08:00
CallMeR fcc5c2b019 优化 PVE Ceph 软件源配置脚本 2026-08-14 01:20:39 +08:00
CallMeR e37d437f0f 更新配置文件创建方法 2026-08-14 00:55:51 +08:00
CallMeR 14595919e4 更新自建系统服务描述 2026-08-13 22:49:13 +08:00
CallMeR 88e6f8b867 优化服务创建命令 2026-08-13 19:00:02 +08:00
CallMeR 079898b167 脚本重命名 2026-08-13 16:17:15 +08:00
CallMeR 345001bb14 更新系统组件 2026-08-13 15:51:38 +08:00
CallMeR 12b5a4aec4 更新脚本名称 & 备注信息 2026-08-11 22:37:07 +08:00
CallMeR a41bd56bc3 更新截图 2026-08-10 11:53:24 +08:00
CallMeR f8cc6a7689 更新文案描述 2026-08-10 11:39:07 +08:00
CallMeR 966660a77f 更新文案描述 2026-08-10 11:38:49 +08:00
CallMeR 7ebf3c80c8 更新截图 2026-08-10 01:01:59 +08:00
CallMeR fbd1e44d11 更新截图 2026-08-10 00:16:31 +08:00
CallMeR f991ec8525 更新文案描述 2026-08-09 02:47:40 +08:00
CallMeR 996959f740 更新系统配置 2026-08-07 17:33:47 +08:00
CallMeR ed7f9c5fc9 精简 TS 防火墙配置 2026-08-04 17:31:19 +08:00
CallMeR 730225be93 更新 SmartDNS 配置 2026-07-31 00:56:53 +08:00
CallMeR e29dc62978 修订 SmartDNS 更新命令 2026-07-27 01:08:26 +08:00
CallMeR 13b46590d0 修订 SmartDNS 配置命令 2026-07-27 01:05:01 +08:00
CallMeR 1984f7689e 精简 SmartDNS 配置 2026-07-27 00:45:41 +08:00
CallMeR 698969cadb 更新虚拟机设置和截图 2026-07-26 19:17:14 +08:00
CallMeR 47ebcd6628 修复 omz 清理命令 2026-07-13 12:38:18 +08:00
CallMeR 190342575e omz 使用官方镜像 2026-07-11 12:29:54 +08:00
CallMeR 68dcf6ab21 简化 TS 安装步骤 2026-07-05 23:07:05 +08:00
CallMeR 0a926f1bae 更新 sysctl 参数 2026-07-05 01:54:21 +08:00
CallMeR 5ce44529bb 更新 SmartDNS 版本 2026-07-02 17:36:21 +08:00
CallMeR 67378607b3 更新 SmartDNS 版本 2026-06-07 14:53:50 +08:00
CallMeR df1b4e8907 更新图片 2026-05-25 23:48:53 +08:00
CallMeR 3989c31582 更新 SmartDNS 版本 2026-05-21 00:25:30 +08:00
CallMeR f5d82f7435 更新 dnsmasq 配置:no-round-robin 2026-02-08 04:26:52 +08:00
CallMeR 1794aa74fa 更新文案描述 2025-12-27 19:08:37 +08:00
CallMeR fce332798e 更新磁盘扩容命令 2025-12-27 19:03:52 +08:00
CallMeR 4a77288f57 更新磁盘扩容命令 2025-12-27 18:55:24 +08:00
CallMeR 4ddcd01688 更新 SmartDNS 配置 2025-12-09 23:38:36 +08:00
CallMeR ea2221c54c 更新 SmartDNS 配置 2025-12-09 17:21:27 +08:00
CallMeR b9473852b9 更新截图 2025-12-08 11:47:23 +08:00
CallMeR 8b8fc3e773 修复格式问题 2025-12-05 14:33:35 +08:00
CallMeR d2203618af 更新文案描述 2025-12-05 12:13:34 +08:00
CallMeR 96a23ad48f 优化文案描述 & 新增 TS UDP 优化 2025-12-04 18:22:56 +08:00
CallMeR 9f6a2fe42d 更新 sysctl 参数 2025-12-01 13:49:52 +08:00
CallMeR 55a391f95d 修正网卡名称 2025-11-29 20:29:26 +08:00
CallMeR 68ae3b55eb 更新截图 2025-11-29 20:25:03 +08:00
CallMeR edcefa98b3 更新截图 2025-11-29 18:41:05 +08:00
CallMeR 96356ac5d1 更新 SmartDNS 配置 2025-11-23 17:42:18 +08:00
CallMeR e0ccdbd5db PVE 9.1 更新 2025-11-20 12:49:49 +08:00
CallMeR 0b4d71977f 更新 SmartDNS 配置 2025-11-19 14:33:40 +08:00
CallMeR 93ffd7b960 新增 SmartDNS 更新命令 2025-11-10 12:25:16 +08:00
CallMeR bf387d1584 更新 SmartDNS 版本 2025-11-09 15:41:56 +08:00
CallMeR ae92d79d83 新增重置 machine-id 命令 2025-11-02 22:38:55 +08:00
CallMeR 44a1ee787c 改进虚拟机使用 EFI 模式引导 2025-10-24 16:24:29 +08:00
CallMeR 578d953950 增加 360 DoH 以提高可用性 2025-10-02 16:50:23 +08:00
CallMeR 792ce9e9e0 PVE 增加 kdig 工具 2025-09-23 11:49:46 +08:00
CallMeR df3cf10287 简化 SmartDNS 配置 2025-09-23 11:12:06 +08:00
CallMeR 63316af2d6 优化配置说明 2025-09-19 12:05:28 +08:00
CallMeR 77a41c719a SmartDNS Release 47 2025-09-19 05:04:38 +08:00
CallMeR 5efe450d78 更新 Dnsmasq 参数注意事项 2025-09-07 11:41:07 +08:00
CallMeR 2131e6ae58 修复参数一致性 2025-09-05 03:53:21 +08:00
CallMeR aefb7ceb00 更新截图 2025-08-29 12:19:33 +08:00
CallMeR c6ebb95ed3 优化 SmartDNS 插件脚本兼容性 2025-08-28 13:18:04 +08:00
CallMeR 4aaa101400 更新 SmartDNS 插件脚本 2025-08-28 12:21:07 +08:00
CallMeR 85c2d70b81 更新脚本存放路径 2025-08-28 09:59:15 +08:00
CallMeR ade7a53cad 优化部分文案 2025-08-27 23:18:26 +08:00
CallMeR c1812b2a45 修复 PVE 手动设置 IPv6 地址 2025-08-27 19:38:12 +08:00
CallMeR c9aa60ecfd 修复安全启动描述 2025-08-27 19:20:03 +08:00
CallMeR d912edeb89 优化部分文案 2025-08-27 19:16:19 +08:00
CallMeR 115cbb68fc 优化部分文案 2025-08-27 19:06:56 +08:00
CallMeR 9082083465 优化部分文案 2025-08-27 18:44:31 +08:00
CallMeR 3921329fe2 更新截图 2025-08-27 18:05:50 +08:00
CallMeR 31be875c67 更新示例输出 2025-08-27 15:38:33 +08:00
CallMeR 626dca3fd9 更新截图 2025-08-27 14:37:33 +08:00
CallMeR 1ad903bf10 更新截图 2025-08-27 13:29:45 +08:00
CallMeR c7c5270356 适配 trixie 版本 2025-08-18 12:33:52 +08:00
CallMeR d4f8fe6b52 适配 trixie 版本 2025-08-17 15:58:39 +08:00
CallMeR 9013217734 更新备注 2025-08-15 18:10:51 +08:00
CallMeR 9995008d1d 修复遗漏的命令提示符标记 2025-08-15 17:28:55 +08:00
CallMeR 63c299f206 更新示例输出 2025-08-12 17:32:17 +08:00
CallMeR 6f19505b83 更新示例输出 2025-08-12 17:29:55 +08:00
CallMeR 53221483fd 更新示例输出 2025-08-12 17:15:54 +08:00
CallMeR b0ede429fc 适配 trixie 版本 2025-08-12 02:40:53 +08:00
CallMeR c1446daf89 适配 trixie 版本 2025-08-11 13:12:21 +08:00
CallMeR 5b80990bd5 更新网络结构图 2025-08-11 12:51:21 +08:00
CallMeR 117020b8b4 适配 trixie 版本 2025-08-11 12:45:21 +08:00
CallMeR d49c98b6df 更新 PVE 软件安装描述 2025-08-11 01:31:32 +08:00
CallMeR 264bb156ff 更新 PVE 软件源配置方法 2025-08-11 01:19:06 +08:00
CallMeR 07efdcb28f 开始 PVE 9.0 系列 2025-08-06 00:41:56 +08:00
CallMeR fb78eec84e 精简 Dnsmasq 参数 2025-06-12 01:42:08 +08:00
CallMeR f5e85ddbc2 精简 Dnsmasq 参数 2025-05-27 01:44:54 +08:00
CallMeR 97ffd13089 更新 TS 防火墙 2025-05-20 22:46:34 +08:00
CallMeR 8f08c4af81 更新 TS 服务器配置 2025-05-20 00:18:27 +08:00
CallMeR 1edfd2c06f 更新 TS 服务器 qdisc 参数 2025-04-28 23:34:33 +08:00
CallMeR fc27f25f94 更新 TS 服务器 sysctl 参数 2025-04-26 23:31:18 +08:00
CallMeR 5f8f9603dc 精简 DNS 服务器 sysctl 参数 2025-04-26 11:26:37 +08:00
CallMeR c768194983 精简 SmartDNS 配置 2025-04-18 16:13:37 +08:00
CallMeR 509e328c03 更新 TS 防火墙 2025-04-18 09:57:03 +08:00
CallMeR 1dd2c5ae24 更新 sysctl 参数 2025-04-17 15:17:49 +08:00
CallMeR ea74679b4a 更新防火墙备注 2025-04-16 18:07:10 +08:00
CallMeR 8a6bdbe207 更新 TS 防火墙 2025-04-16 17:46:22 +08:00
CallMeR 7c6c92d7ed 更新 TS 防火墙配置 2025-04-16 17:03:38 +08:00
CallMeR 01f00f4bc7 更新 TS 防火墙配置 2025-04-16 14:08:04 +08:00
CallMeR 6d5693a73a 更新防火墙流表设置 2025-04-16 01:03:48 +08:00
CallMeR a0c8b88bab Revert 更新 TS 防火墙配置 2025-04-15 23:56:33 +08:00
CallMeR 1fe6812f30 更新 TS 防火墙配置 2025-04-15 23:20:36 +08:00
CallMeR 19f5d89152 更新 TS 防火墙配置 2025-04-15 17:29:38 +08:00
CallMeR 5e228452ec 更新 SmartDNS 参数 2025-04-03 17:31:56 +08:00
CallMeR 1e52d61178 更新文案描述 2025-03-28 23:31:32 +08:00
CallMeR d425c1275b 更新 sysctl 生效命令 2025-03-28 22:29:53 +08:00
CallMeR b129dd215d 更新 SmartDNS 参数 2025-03-28 15:52:58 +08:00
CallMeR 613c562c1c 更新软件包描述 2025-03-17 02:56:59 +08:00
CallMeR 184508f0fd 调整 Bing 搜索链接 2025-03-16 23:42:50 +08:00
CallMeR 2b24267c0c 调整 Bing 搜索链接 2025-03-16 23:29:57 +08:00
CallMeR b5a44c52b2 更新软件包描述 2025-03-16 22:51:48 +08:00
CallMeR 1606e0c74b 更新系统 sysctl 参数 2025-03-14 14:38:27 +08:00
CallMeR 5293258eb8 更新 DNS 拦截列表 2025-03-06 00:58:04 +08:00
CallMeR 1c88c7327f 更新 SmartDNS 版本 2025-03-04 01:56:52 +08:00
CallMeR b3fb776f91 跟进 neodevhost 列表上游修改 2025-03-02 00:34:24 +08:00
CallMeR c69fedc984 更新截图 2025-02-02 21:58:17 +08:00
CallMeR 1915273f81 更新截图 2025-02-02 21:34:44 +08:00
CallMeR 8a72ccebbe 更新截图 2025-02-02 21:19:19 +08:00
CallMeR 4600694a36 更新截图 2025-02-02 21:02:06 +08:00
CallMeR fad611823f 更新上游 DNS 2025-02-01 02:16:40 +08:00
CallMeR f13d108c7b 更新文案描述 2025-01-24 23:08:13 +08:00
CallMeR cb205dda2f 更新文案描述 2025-01-20 18:55:03 +08:00
CallMeR d613ea63a1 更新截图 2025-01-20 18:22:16 +08:00
CallMeR 664bf13a20 更新截图 2025-01-20 17:56:45 +08:00
CallMeR ccd3942725 调整部分时间相关参数 2025-01-18 09:26:33 +08:00
CallMeR 573468ca94 调整 Nftables MTU Fixing 2025-01-17 01:34:54 +08:00
CallMeR 2c22ba9212 更新 TS 服务器参数 2025-01-16 17:57:50 +08:00
CallMeR c1c6282713 更新系统软件 2025-01-16 13:08:52 +08:00
CallMeR 8cca306890 调整 Nftables Offload 2025-01-15 21:38:01 +08:00
CallMeR 6b49519190 精简 SYSCTL 参数 2025-01-15 18:21:03 +08:00
CallMeR 688d6e0809 精简 SYSCTL 参数 2025-01-15 17:45:48 +08:00
CallMeR ad51e789de 调整 Nftables Offload 2025-01-15 15:00:05 +08:00
CallMeR 0a7fda4e15 更新 Dnsmasq 参数 2025-01-14 15:25:36 +08:00
CallMeR 100c012314 更新系统软件 2025-01-14 14:55:13 +08:00
CallMeR 945b25304d 简化 oh-my-zsh 安装 2025-01-14 10:42:58 +08:00
CallMeR 82066a8a21 更新备注 2025-01-13 18:02:25 +08:00
CallMeR f8b3bfd75e 更新备注 2025-01-13 17:56:11 +08:00
CallMeR 36d4809b37 调整 Dnsmasq 参数 2025-01-13 16:18:32 +08:00
CallMeR b7e6978342 更新文案描述 2025-01-13 15:39:58 +08:00
CallMeR 03ee8135c8 Fix newline ( 2025-01-08 22:28:27 +08:00
CallMeR 1ce40c7a36 更新内核参数 2025-01-08 22:13:00 +08:00
CallMeR 8d2f3e98de 调整域名顺序 2025-01-08 17:57:25 +08:00
CallMeR c3e0205fdf 调整 SmartDNS 内网域名策略 2025-01-08 17:51:51 +08:00
CallMeR a606d3f6e4 调整 Dnsmasq 内网域名策略 2025-01-08 17:46:19 +08:00
CallMeR 42e0359d03 更新内核参数 2025-01-08 12:09:16 +08:00
CallMeR 0377b500b6 跟进 ICANN | SAC113 调整内网域名 2025-01-07 22:34:03 +08:00
CallMeR 90c7adc62d 精简 TS 防火墙 2025-01-07 13:25:40 +08:00
CallMeR 17c0a3f87d 优化文案描述 2025-01-06 23:48:33 +08:00
CallMeR 3143d46834 更新文案描述 2025-01-06 23:37:32 +08:00
CallMeR 4dda73f087 更新文案描述 2025-01-06 23:29:04 +08:00
CallMeR 45bcf699d9 更新文案描述 2025-01-06 23:18:07 +08:00
CallMeR d153773b1f 更新清理目录 2025-01-06 18:09:39 +08:00
CallMeR 7d8da1f68e 更新清理命令 2025-01-06 18:01:14 +08:00
CallMeR 641aa555b9 更新清理命令 2025-01-06 17:54:23 +08:00
CallMeR 34e55b8daa 更新文案描述 2025-01-06 17:25:31 +08:00
CallMeR 777e4bb9d7 更新清理命令 2025-01-06 17:23:57 +08:00
CallMeR 7dceb23655 更新清理命令 2025-01-06 17:19:22 +08:00
CallMeR 81c5c3456a 整理文档结构 2025-01-06 17:11:27 +08:00
CallMeR 0731dd1fde 更新 Dnsmasq 参数 2025-01-06 02:12:11 +08:00
CallMeR 7e62ab3012 更新 TS 防火墙 2024-12-29 22:52:52 +08:00
CallMeR 14022aebbf 更新 TS 防火墙 2024-12-29 01:51:28 +08:00
CallMeR 8738625ad9 更新文案描述 2024-12-26 13:22:46 +08:00
CallMeR 51a6d0005d 更新文案描述 2024-12-26 13:20:10 +08:00
CallMeR f3a4231218 调整 TS 服务器 Dnsmasq 配置 2024-12-26 12:42:03 +08:00
CallMeR 422384497c 修复描述错误 2024-12-03 13:41:33 +08:00
CallMeR 8c26dd2569 更新广告列表 2024-11-26 12:50:51 +08:00
CallMeR ae963404b7 更新广告列表 2024-11-24 22:16:03 +08:00
CallMeR 96f89812de 更新版本号 2024-11-24 17:28:13 +08:00
CallMeR 968d0637dd 更新截图版本 2024-11-24 17:23:44 +08:00
CallMeR 1166516576 更新 DNS sysctl 参数 2024-11-02 15:37:49 +08:00
CallMeR f664975bcc 更新 DNS sysctl 参数 2024-10-29 14:01:39 +08:00
CallMeR 26fa0b0c10 修复描述错误,Fix: https://gitee.com/callmer/routeros_toss_notes/issues/IB0HER 2024-10-29 13:26:00 +08:00
CallMeR ac2740f888 更新系统 sysctl 参数 2024-10-28 00:32:12 +08:00
CallMeR aa1a12757b 更新系统 sysctl 参数 2024-10-24 18:23:26 +08:00
CallMeR ccef3195ff 更新系统 sysctl 参数 2024-10-23 10:12:01 +08:00
CallMeR dd3bda21f5 更新系统 sysctl 参数 2024-10-22 15:28:58 +08:00
CallMeR 547389c182 更新系统 sysctl 参数 2024-10-22 14:18:09 +08:00
CallMeR ace58ce24d 更新 TS 服务器流控算法 2024-10-21 23:30:53 +08:00
CallMeR adaeb4a650 新增 BTRFS 调整内容 2024-10-19 02:26:04 +08:00
CallMeR fa29b0d633 更新系统 sysctl 参数 2024-10-17 12:57:46 +08:00
CallMeR 94273ae2b6 RFC 9460
Service Binding and Parameter Specification via the DNS (SVCB and HTTPS Resource Records)
2024-10-14 17:53:10 +08:00
CallMeR 2d32561415 更新 SmartDNS 过期缓存 2024-10-13 17:06:50 +08:00
CallMeR 0dcfa86d11 更新 SmartDNS 加速脚本 2024-10-13 16:32:44 +08:00
CallMeR 557ae16217 更新清理缓存命令 2024-10-09 23:43:17 +08:00
CallMeR 49083bf184 更新 SmartDNS 清理缓存 2024-10-08 23:48:01 +08:00
CallMeR 9634a10686 更新清理命令 2024-10-08 23:30:52 +08:00
CallMeR 6f7c78b749 更新清理命令 2024-10-08 23:16:46 +08:00
CallMeR 04fc40c8e1 更新清理命令 2024-10-08 23:08:24 +08:00
CallMeR 05ba8586ae 更新 SmartDNS 参数 2024-10-08 22:56:27 +08:00
CallMeR e8cb9b14f4 更新示例输出 2024-10-07 18:08:24 +08:00
CallMeR 7b794c11e4 更新 NTP 服务器 2024-10-07 18:04:33 +08:00
CallMeR d4673a204a 更新实例输出 2024-10-07 18:00:03 +08:00
CallMeR 95913b4d0d 更新 NTP 服务器 2024-10-07 17:52:02 +08:00
CallMeR 964fc699e3 Revert 更新 SmartDNS 参数 2024-10-05 17:44:11 +08:00
CallMeR b3b147ab37 更新 SmartDNS 广告列表 2024-09-27 23:05:48 +08:00
CallMeR cdcc71462b 更新 SmartDNS 参数 2024-09-27 16:05:05 +08:00
CallMeR 999a06f938 更新 Nftables 规则 2024-09-27 14:30:48 +08:00
CallMeR 4bf1e1d523 更新 Nftables 规则 2024-09-27 14:01:18 +08:00
CallMeR ddc60fd6f1 更换 SmartDNS 广告列表 2024-09-19 15:44:11 +08:00
CallMeR c94872a931 更新 SmartDNS 缓存参数 2024-09-15 12:20:03 +08:00
CallMeR d09bd30a25 更新上游 DNS 2024-09-05 13:55:10 +08:00
CallMeR cc5ec05502 更新 SmartDNS 上游 DNS 2024-09-03 13:59:54 +08:00
CallMeR e0894f3e13 更新 PVE 版本 2024-08-24 19:44:32 +08:00
CallMeR 360d5b6cab 更新 DNS 缓存参数 2024-08-24 03:23:26 +08:00
CallMeR 8d2cab7155 更新备注 2024-08-17 22:37:05 +08:00
CallMeR afb5a5859c 更新 Dnsmasq 配置 2024-08-15 19:07:27 +08:00
CallMeR 53c3fe877a 更新 SmartDNS 上游 DoT / DoH 服务器 2024-08-14 21:40:22 +08:00
CallMeR 835cbf9b43 更新上游 DNS 服务器 2024-08-07 22:52:54 +08:00
CallMeR 1b97935413 更新 SmartDNS 插件 2024-08-07 13:30:38 +08:00
CallMeR fc67f6f575 更新 SmartDNS 上游 DNS 2024-08-07 13:22:22 +08:00
CallMeR bc5ea890ad 更新 Dnsmasq 参数 2024-08-02 20:14:17 +08:00
CallMeR fefcd16f82 更新 SmartDNS 参数 2024-08-02 20:10:24 +08:00
CallMeR 10050fa7ff 更新 SmartDNS Plugin 2024-08-02 10:46:49 +08:00
CallMeR 20086c63f7 调整 Dnsmasq 配置 2024-08-02 10:29:56 +08:00
CallMeR 619b96a6fc 调整 SmartDNS 参数 2024-08-02 00:37:42 +08:00
CallMeR 4fbb729d85 关闭 SmartDNS 过期缓存并调整响应 TTL 2024-07-29 01:13:05 +08:00
CallMeR 78fd87188c 停用 Dnsmasq 的 negative 缓存 2024-07-27 11:23:48 +08:00
CallMeR 8a737cfb34 优化 SmartDNS 配置 2024-07-24 23:31:45 +08:00
CallMeR fcfd177593 移除 SmartDNS EDNS 参数 2024-07-24 21:53:31 +08:00
CallMeR 1336af517e 更新 DNS 服务器流控算法 2024-07-22 17:12:01 +08:00
CallMeR b0beb5177f 更新 DNS 服务器流控算法 2024-07-19 12:37:05 +08:00
CallMeR 921bd8bb31 更新 TS 服务器流控算法 2024-07-19 12:35:08 +08:00
CallMeR ff1a1a43a7 更新截图 2024-07-02 15:23:20 +08:00
CallMeR 9a9173df92 更新系统更新命令 2024-07-02 11:01:58 +08:00
CallMeR e9ca2b5cda 更新备注信息 2024-06-28 15:33:05 +08:00
CallMeR 0695f8b6b9 Revert 替换广告屏蔽列表 2024-06-28 12:31:22 +08:00
CallMeR 1657411b7e 更新备注信息 2024-06-28 00:14:16 +08:00
CallMeR 14007e78b8 替换广告屏蔽列表 2024-06-27 16:56:10 +08:00
CallMeR 7318726847 修复段落标题 2024-06-26 15:05:08 +08:00
CallMeR 374c55cbb3 修复目录路径 2024-06-26 15:03:00 +08:00
CallMeR 7df6ea76b7 更新文案描述 2024-06-26 14:55:57 +08:00
CallMeR 5e0a8aac54 更新文案描述 2024-06-26 14:53:35 +08:00
CallMeR 8dd1f08f27 更新终端工具 2024-06-26 14:43:59 +08:00
CallMeR 9873dd74d1 更新 SmartDNS 版本 2024-06-13 11:29:38 +08:00
CallMeR ffaa26a050 更新配置文件备注 2024-05-23 02:12:07 +08:00
CallMeR b17ef026ad 更新文案描述 2024-05-21 12:50:30 +08:00
CallMeR 808094ae3c 更新脚本文件命名 2024-05-20 22:17:58 +08:00
CallMeR 609fcf579b 更新配置文件命名 2024-05-20 21:32:38 +08:00
CallMeR 022da7d3f9 更新配置文件命名 2024-05-20 16:18:29 +08:00
CallMeR afb2678f68 使用 btop 代替 htop 2024-05-16 13:21:15 +08:00
CallMeR 4ed96a4d38 更新文案说明 2024-04-28 12:09:53 +08:00
CallMeR f7ff85a805 更新 PVE 版本号 2024-04-26 13:50:02 +08:00
CallMeR 101fc96feb 更新自动备份截图 2024-04-26 13:48:52 +08:00
CallMeR 01f39562ff 新增 sshguard 工具 2024-04-26 12:36:28 +08:00
CallMeR 933bdca053 更新部分截图 2024-04-26 11:56:14 +08:00
CallMeR 748faac28b 更换 SmartDNS 广告列表 2024-04-23 13:28:57 +08:00
CallMeR fe8fbff04c 更新 Dnsmasq 缓存设置 2024-04-23 10:39:00 +08:00
CallMeR 50f49ed956 更新 SmartDNS 缓存设置 2024-04-23 10:36:39 +08:00
CallMeR b809ecd035 更新 PVE 软件源替换命令 2024-04-21 21:12:55 +08:00
CallMeR eda1d36130 更新 Dnsmasq 配置 2024-03-21 10:52:33 +08:00
CallMeR c9bf9ae2fd 更新 Dnsmasq 配置 2024-03-20 22:41:13 +08:00
CallMeR 38ac1f9702 更新 Dnsmasq 配置 2024-03-19 18:36:36 +08:00
CallMeR f493c774ab 更新 SmartDNS 配置 2024-03-19 12:06:18 +08:00
CallMeR 09a35e9c31 关闭 Dnsmasq 缓存 2024-03-19 10:13:17 +08:00
CallMeR a1e992c956 更新 SmartDNS 配置 2024-03-19 10:04:27 +08:00
CallMeR 360542f9d4 更新 Dnsmasq 参数 2024-03-18 21:45:12 +08:00
CallMeR e5a8d8b491 更新截图 2024-03-18 14:14:47 +08:00
CallMeR 3ce5fdba6a 更新截图 2024-03-18 14:09:10 +08:00
CallMeR 5ec78ce639 更新 Debian 云镜像 2024-03-18 13:50:30 +08:00
CallMeR b597af908d 更新 SmartDNS 缓存参数 2024-03-16 13:34:26 +08:00
CallMeR 6f085030b3 更新 Dnsmasq 缓存参数 2024-03-16 13:25:07 +08:00
CallMeR 82497488ed 更新 TS 自动更新 2024-03-01 20:26:31 +08:00
CallMeR ee7b34ddf4 更新 SmartDNS 配置 2024-02-20 02:08:33 +08:00
CallMeR 353dc12fca 更新文案描述 2024-02-14 01:54:23 +08:00
CallMeR a410d925f4 更新清理命令 2024-02-13 22:35:06 +08:00
CallMeR 2c48e3a330 优化 ls 命令 2024-02-11 02:11:06 +08:00
CallMeR 2344cd77bf 更新 SmartDNS 参数 2024-02-11 01:55:18 +08:00
CallMeR aba1e70956 更新 SmartDNS 参数 2024-02-11 01:39:02 +08:00
CallMeR bbcbc9fe1e 更新 Dnsmasq 参数 2024-02-09 00:36:35 +08:00
CallMeR 5bce9e1d44 SmartDNS 配置重命名 2024-02-09 00:29:47 +08:00
CallMeR 80f7041632 更新 SmartDNS 参数 2024-02-09 00:27:03 +08:00
CallMeR ffcae17092 更新 SmartDNS 版本 2024-02-09 00:04:29 +08:00
CallMeR 0bd3a7cd36 整合清理命令 2024-01-30 18:17:58 +08:00
CallMeR eddc39bc40 修复 typo 2024-01-30 18:14:52 +08:00
CallMeR 564d56e56f 更新流表语法 2024-01-20 21:52:47 +08:00
CallMeR 80556cacaf 更新流表语法 2024-01-20 19:27:06 +08:00
CallMeR 2c8d775e9e 更新 README 2024-01-17 14:02:25 +08:00
CallMeR 19532baa21 更新 README 2024-01-17 13:59:58 +08:00
CallMeR 2ff27e96c3 默认不启用 IPv6 ULA 网络 2024-01-17 13:54:39 +08:00
CallMeR 979f03052e 修复 typo 2024-01-17 13:22:45 +08:00
CallMeR 3a7a506645 更新文案描述 2024-01-10 16:16:56 +08:00
CallMeR 62c55d9750 调整 Dnsmasq 配置 2024-01-10 15:13:49 +08:00
CallMeR 101b5c64b2 整理文档 2024-01-10 15:05:59 +08:00
CallMeR 497a8c0685 更新 Dnsmasq 配置 2024-01-10 14:46:26 +08:00
CallMeR 00e4fd27e5 调整 Dnsmasq 配置 2024-01-10 14:29:51 +08:00
CallMeR 85d5a3bee5 更新文案描述 2024-01-08 22:31:32 +08:00
CallMeR 2ae4bda8b3 调整 Dnsmasq 格式 2024-01-08 21:55:32 +08:00
CallMeR 12cadb86ad 更新说明 2024-01-08 21:46:38 +08:00
CallMeR 3c9927a362 关闭 TS 服务器 Dnsmasq 的 DNS 缓存 2024-01-08 21:40:23 +08:00
CallMeR d69101077b 更新 offload 匹配 2024-01-07 12:03:45 +08:00
CallMeR 6497efb00a 同步上游更新 2024-01-06 14:59:35 +08:00
CallMeR 79703f9d62 修改 systemd 服务路径 2024-01-05 21:46:56 +08:00
CallMeR 53994238c8 更新文案描述 2024-01-05 21:34:30 +08:00
CallMeR ddcdc18564 修复 Typo 2024-01-01 17:33:04 +08:00
CallMeR f505690ed6 更新文档 2024-01-01 16:29:11 +08:00
CallMeR 96cb5ddcdc 更新文档 2024-01-01 16:19:33 +08:00
CallMeR 2858ba97c4 更新文档 2024-01-01 14:07:06 +08:00
CallMeR 833817d85c 更新文档 2024-01-01 13:54:16 +08:00
CallMeR 7097fb5d73 更新文档 2024-01-01 13:49:38 +08:00
CallMeR 52f3be600b 更新文档 2024-01-01 13:36:04 +08:00
CallMeR 0a9a2ee8fe 更新文档 2024-01-01 13:13:36 +08:00
CallMeR ed3c106e27 更新文档 2024-01-01 13:10:07 +08:00
CallMeR c94d7d31fc 更新文档 2024-01-01 13:00:00 +08:00
CallMeR abf168587d 更新文档 2024-01-01 12:49:36 +08:00
CallMeR 3e9a8eae07 更新文档 2024-01-01 12:02:06 +08:00
CallMeR 090ab28970 整理文档 2023-12-31 22:07:01 +08:00
CallMeR 59ebf178c7 整理文档 2023-12-31 21:09:03 +08:00
CallMeR 249717ed89 更新 TS 测试配置 2023-12-30 22:16:07 +08:00
CallMeR 2520ce4839 更新 nf_conntrack 参数 2023-12-24 01:50:16 +08:00
CallMeR 5d5750f120 更新定时参数 2023-12-21 22:09:33 +08:00
CallMeR f90dd7a7c8 更新 resolv.conf 配置 2023-12-16 23:52:08 +08:00
CallMeR 730773e42b 更新 resolv 配置方法 2023-12-16 16:40:20 +08:00
CallMeR c00e178df3 新增 OVS 工具 2023-12-15 02:25:23 +08:00
CallMeR f8c7676c85 精简非相关配置 2023-12-14 11:32:51 +08:00
CallMeR 29592abb40 更换 SmartDNS 广告规则 2023-12-14 11:30:39 +08:00
CallMeR 62b2641413 更新命令备注 2023-12-14 00:29:13 +08:00
CallMeR 04023ac155 优化文案描述 2023-12-14 00:22:21 +08:00
CallMeR 4dcb3ff7a9 优化文案描述 2023-12-13 23:30:01 +08:00
CallMeR ca30a2f9e9 优化文案描述 2023-12-13 23:14:33 +08:00
CallMeR 88ea495d5a 优化文案描述 2023-12-13 23:12:03 +08:00
CallMeR d08a3acf74 优化文案描述 2023-12-13 20:59:27 +08:00
CallMeR d26f303437 优化文案描述 2023-12-13 20:51:04 +08:00
CallMeR ed0db21a9f 优化文案描述 2023-12-13 20:19:45 +08:00
CallMeR 18e02bc9c8 优化文案描述 2023-12-13 19:59:29 +08:00
CallMeR 6882b01afc 更新文件名 2023-12-13 16:55:19 +08:00
CallMeR fec6ae3e56 更新脚本 2023-12-13 14:45:57 +08:00
CallMeR 660551f2fc 更新 curl 参数 2023-12-12 21:32:02 +08:00
CallMeR 80afa7dfe7 更新 SmartDNS 下载链接 2023-12-12 20:05:34 +08:00
CallMeR 509b344c69 更新 systemd-resolved 配置 2023-12-11 13:22:00 +08:00
CallMeR 3b3a3361fa 更新 curl 参数 2023-12-11 09:47:01 +08:00
CallMeR fba7575503 更新 curl 参数 2023-12-11 02:55:16 +08:00
CallMeR 4d77f0415e 更新 curl 参数 2023-12-11 02:27:42 +08:00
CallMeR 8b35afeec5 修复 curl 命令 2023-12-11 01:12:27 +08:00
CallMeR e0c69c3fa5 统一 crontab 时间 2023-12-10 23:32:46 +08:00
CallMeR 410f6e8d2e 替换 wget 命令 2023-12-10 22:55:40 +08:00
CallMeR 56d9125152 替换 wget 命令 2023-12-10 22:47:21 +08:00
CallMeR 779b75f3a8 更新 SmartDNS 定时器 2023-12-10 19:19:46 +08:00
CallMeR b0c7a2d4ce 优化文案描述 2023-12-10 18:39:15 +08:00
CallMeR b84dbe3872 优化文案描述 2023-12-10 18:31:43 +08:00
CallMeR 1555ec02ca 更新 SmartDNS 配置 2023-12-10 18:00:16 +08:00
CallMeR 906db9eac4 更新脚本变量 2023-12-09 21:17:31 +08:00
CallMeR 0d091d93c1 更新脚本变量 2023-12-09 21:10:04 +08:00
CallMeR b347128ec5 更新脚本变量 2023-12-09 20:58:20 +08:00
CallMeR 1e5a55de64 更新说明信息 2023-12-09 15:22:57 +08:00
CallMeR d052923897 更新文件名 2023-12-09 01:32:16 +08:00
CallMeR ba0afba7eb 更新 SmartDNS 插件脚本 2023-12-08 23:49:03 +08:00
CallMeR 6aa24ecb61 更新 SmartDNS 插件脚本 2023-12-08 23:42:25 +08:00
CallMeR 454ae86aba 更新 SmartDNS 配置 2023-12-08 13:03:17 +08:00
CallMeR 24b087aa1e 更新 SmartDNS 默认端口 2023-12-02 12:22:57 +08:00
CallMeR 56317210a6 更新 lsof 参数 2023-12-02 01:11:16 +08:00
CallMeR d8e7753112 更新 TS 测试配置 2023-12-02 00:44:34 +08:00
CallMeR 4700bc1c52 更新截图 2023-12-01 23:47:29 +08:00
CallMeR 29f6296a1c 更新 TS 测试配置 2023-12-01 18:54:38 +08:00
CallMeR 891d8ef2f6 更新 TS 测试配置 2023-12-01 13:47:44 +08:00
CallMeR e4117816c5 更新 TS 测试配置 2023-12-01 13:30:52 +08:00
CallMeR b109b0d840 更新 TS 测试配置 2023-12-01 00:40:19 +08:00
CallMeR 8bc4dd8587 更新 dnsmasq 配置 2023-11-30 23:20:51 +08:00
CallMeR eef810d850 更新截图 2023-11-30 17:41:18 +08:00
CallMeR 752c233013 更新安装截图 2023-11-30 15:29:44 +08:00
CallMeR 8b62f62420 更新模板虚拟机配置 2023-11-30 12:47:45 +08:00
CallMeR 46d0e0ce4a 更新截图 2023-11-30 12:21:27 +08:00
CallMeR f643128cf5 更新截图 2023-11-30 10:48:20 +08:00
CallMeR 165f6ea9dc 更新 TS 防火墙备注 2023-11-29 14:06:15 +08:00
CallMeR 7fc7ab2466 更新 TS 防火墙备注 2023-11-29 14:01:12 +08:00
CallMeR 2407555015 更新 TS 防火墙 2023-11-29 13:48:55 +08:00
CallMeR 5b65602c07 更新 TS 防火墙 2023-11-28 21:59:39 +08:00
CallMeR a2b1278038 更新备注 2023-11-28 21:52:29 +08:00
CallMeR 07d5ea174a 更新 TS 测试配置 2023-11-28 19:01:35 +08:00
CallMeR 554b2bd6d4 整理文件名 2023-11-28 18:35:55 +08:00
CallMeR 145328fb3c 更新 LXC 文案 2023-11-27 18:00:16 +08:00
CallMeR 9691336e5c 更新 LXC 文案 2023-11-27 17:53:56 +08:00
CallMeR f7ce11e99d 更新 LXC 文案 2023-11-27 17:51:16 +08:00
CallMeR eb631a1cdc 更新 LXC 文案 2023-11-27 14:36:30 +08:00
CallMeR 46ce4e4ee3 更新 SmartDNS 配置 2023-11-27 13:24:28 +08:00
CallMeR 0bd03af309 更新文件名 2023-11-27 12:56:34 +08:00
CallMeR 767c31694d 更新文件名 2023-11-27 12:54:07 +08:00
CallMeR b27372c20d 更新虚拟机 DEB822 配置 2023-11-26 20:58:59 +08:00
CallMeR b830088e5e 更新 PVE 版本 2023-11-25 22:24:54 +08:00
CallMeR 9f5884befb 优化 sysctl 配置 2023-11-24 12:07:45 +08:00
CallMeR 8af7ef896b 更新 dnsmasq 配置 2023-11-18 16:37:19 +08:00
CallMeR 09a60d3ae4 Dnsmasq 插件设置 2023-11-13 12:31:57 +08:00
CallMeR 830655bd52 更新定时任务 2023-11-13 12:21:25 +08:00
CallMeR 95023d68d3 回滚 SmartDNS 配置 2023-11-08 11:55:55 +08:00
CallMeR d8e6a50166 更新 dnsmasq 配置 2023-11-08 11:47:01 +08:00
CallMeR e6d805fba5 更新 SmartDNS 配置 2023-11-07 13:47:34 +08:00
CallMeR 9386f961d1 整理文档 2023-10-29 10:28:30 +08:00
CallMeR b84666a6b6 修复备注信息 2023-10-14 23:34:52 +08:00
CallMeR 07526b9ada 修复备注信息 2023-10-14 23:17:07 +08:00
CallMeR e31338113d 修复 cpupower 文案 2023-10-14 22:36:54 +08:00
CallMeR 7eda1b4eef 更新 SmartDNS 缓存参数 2023-10-10 22:10:45 +08:00
CallMeR 3b1a9e4f00 替换 ldnsutils 2023-10-07 01:45:36 +08:00
CallMeR 7288a7ba8b 更新 N6005 CPU 调度器输出 2023-09-15 14:48:52 +08:00
CallMeR 63631e6ad3 优化 CPU 调度器配置 2023-09-13 13:48:05 +08:00
CallMeR 5ed5ac768b 更新系统默认 qdisc 2023-09-10 16:32:42 +08:00
CallMeR ae5b3e1e82 更新本地域名后缀 2023-09-09 19:17:40 +08:00
CallMeR b7857fcd66 更新本地域名后缀 2023-09-09 19:03:26 +08:00
CallMeR 81101cde20 更新本地域名后缀 2023-09-09 18:30:25 +08:00
CallMeR 99e4a94a9f 更新安装截图 2023-09-09 16:45:06 +08:00
CallMeR c4294612eb 更新安装截图 2023-09-09 16:13:54 +08:00
CallMeR 38df9bd3e4 更新本地域名后缀 2023-09-07 22:36:50 +08:00
CallMeR 0019ac0fbc 修复时间参数说明 2023-08-18 14:32:13 +08:00
CallMeR 1b8caefe58 修复时间参数说明 2023-08-18 14:25:41 +08:00
CallMeR 9804c8964e 修复时间参数说明 2023-08-18 14:20:31 +08:00
CallMeR 861e468aa6 修复定时重启时间 2023-08-18 14:15:36 +08:00
CallMeR 90bc8f942b 修复定时重启时间 2023-08-18 14:12:26 +08:00
CallMeR 09f4738295 更新 SmartDNS 版本 2023-08-13 17:05:53 +08:00
CallMeR ea71df8c8c 更新说明信息 2023-08-07 21:35:47 +08:00
CallMeR 1a8c107333 更新 PVE 官网截图 2023-08-07 21:29:53 +08:00
CallMeR c40ba60a6e 更新 PVE 官网截图 2023-08-07 21:26:36 +08:00
CallMeR 9494d82747 更新 PVE 官网截图 2023-08-07 21:22:59 +08:00
CallMeR f89c38f8d8 更新 PVE 官网截图 2023-08-07 21:14:57 +08:00
CallMeR 6a9202a62b 更新示例 2023-08-01 13:39:06 +08:00
CallMeR 8a10db07d1 更新示例 2023-08-01 13:30:56 +08:00
CallMeR 17ab25b998 统一时间规划 2023-07-26 14:57:51 +08:00
CallMeR 17ae656734 更新 SmartDNS 配置 2023-07-25 18:31:52 +08:00
CallMeR b28bb464c1 更新 SmartDNS 配置 2023-07-23 13:39:18 +08:00
CallMeR 0fd5dc83f2 更新 SmartDNS 配置 2023-07-23 03:28:02 +08:00
CallMeR ee64d1e961 更新 SmartDNS 描述 2023-07-16 23:55:33 +08:00
CallMeR 636bbfb62b 更新 Adguard Home 描述 2023-07-16 23:49:43 +08:00
CallMeR bb19e4f7dd 更新 SmartDNS 测试配置 2023-07-16 20:14:59 +08:00
CallMeR b8a0db90a3 更新 SmartDNS 测试配置 2023-07-16 04:29:23 +08:00
CallMeR ec7034f2f1 更新代码编辑器 2023-07-16 01:59:58 +08:00
CallMeR 60f0b0940c 更新 SmartDNS 配置 2023-07-16 01:52:45 +08:00
CallMeR a8da3fa115 更新 SmartDNS 配置 2023-07-16 01:48:13 +08:00
CallMeR 37373fbdcd 更新 SmartDNS 配置 2023-07-16 01:34:05 +08:00
CallMeR e96b379620 更新 PVE 制作虚拟机模板 2023-07-16 01:23:04 +08:00
CallMeR 4795c730c9 更新文案描述 2023-07-06 18:05:56 +08:00
CallMeR bf4d22b10b 更新代码编辑器 2023-07-01 21:54:05 +08:00
CallMeR 22806b5657 修复文案描述 2023-06-29 17:45:25 +08:00
CallMeR 9f86e73f61 更新 PVE 虚拟机克隆 2023-06-28 13:04:33 +08:00
CallMeR fdceec75ba 更新 PVE 制作虚拟机模板 2023-06-28 00:30:32 +08:00
CallMeR 182a939f5e 更新 PVE 系统调整 2023-06-28 00:24:19 +08:00
CallMeR b71d013431 更新 PVE 虚拟机克隆 2023-06-28 00:12:07 +08:00
CallMeR e64d6f9b7f 更新 PVE 创建模板虚拟机 2023-06-27 22:32:10 +08:00
CallMeR 5c71c12916 更新 PVE 虚拟机克隆 2023-06-27 17:17:46 +08:00
CallMeR 56cf129f79 更新 PVE 制作虚拟机模板 2023-06-27 17:07:42 +08:00
CallMeR 452ce84b1e 更新 PVE 创建模板虚拟机 2023-06-27 16:47:55 +08:00
CallMeR 4359c9f07e 更新 PVE 创建模板虚拟机 2023-06-27 16:39:05 +08:00
CallMeR 7d03feae01 更新 PVE 初始化配置 2023-06-27 15:51:33 +08:00
CallMeR ded81638c7 更新 PVE 初始化配置 2023-06-27 15:47:44 +08:00
CallMeR dfdc931239 更新 PVE 虚拟机克隆 2023-06-27 15:34:24 +08:00
CallMeR 4d5ca028cd 更新 PVE 虚拟机自动备份 2023-06-27 15:31:32 +08:00
CallMeR a4d9985094 更新 PVE 虚拟机克隆 2023-06-27 14:43:14 +08:00
CallMeR 00fa47d9ba 更新 PVE 创建模板虚拟机 2023-06-27 14:26:32 +08:00
CallMeR bbfec4df8f 更新 PVE 初始化配置 2023-06-27 13:08:33 +08:00
CallMeR f92cd8ed93 更新 PVE 虚拟机克隆 2023-06-27 01:43:46 +08:00
CallMeR 5400e733d2 更新 README 2023-06-27 01:41:24 +08:00
CallMeR fd80ec7b1a 更新 PVE 初始化配置 2023-06-27 01:29:45 +08:00
CallMeR 6ae69e21c2 更新 PVE 虚拟机克隆 2023-06-27 01:23:12 +08:00
CallMeR 10b623cd52 更新 PVE 虚拟机克隆 2023-06-27 01:21:19 +08:00
CallMeR e6161182e7 更新 PVE 制作虚拟机模板 2023-06-27 01:05:22 +08:00
CallMeR 88891aa1f5 更新 PVE 制作虚拟机模板 2023-06-26 21:58:03 +08:00
CallMeR d3b67c178e 更新 PVE 创建模板虚拟机 2023-06-26 21:47:41 +08:00
CallMeR 3313d23879 更新 PVE 初始化配置 2023-06-26 21:28:58 +08:00
CallMeR 5d594998e3 更新 PVE 制作虚拟机模板 2023-06-26 20:29:47 +08:00
CallMeR 525ece3b7b 更新 PVE 创建模板虚拟机 2023-06-26 20:13:44 +08:00
CallMeR 21b1156c06 更新 PVE 初始化配置 2023-06-26 20:10:59 +08:00
CallMeR 32e67f530b 更新 PVE 系统安装 2023-06-26 20:05:46 +08:00
CallMeR 91998771d3 更新 PVE 系统调整 2023-06-26 20:03:38 +08:00
CallMeR 66bf4d3782 更新 PVE 系统调整 2023-06-26 19:41:46 +08:00
CallMeR b5febddb8a 更新 PVE 系统调整 2023-06-26 19:34:00 +08:00
CallMeR b4f173b2cc 更新 PVE 制作虚拟机模板 2023-06-26 19:17:52 +08:00
CallMeR 2239a0f309 更新 PVE 制作虚拟机模板 2023-06-26 19:07:11 +08:00
CallMeR 475e4bfccb 更新 PVE 制作虚拟机模板 2023-06-26 18:53:43 +08:00
CallMeR c5fb7b4e57 更新 PVE 系统调整 2023-06-26 18:46:38 +08:00
CallMeR 90d8bccd46 更新 PVE 系统调整 2023-06-26 18:43:18 +08:00
CallMeR cc41053e85 更新 PVE 初始化配置 2023-06-26 18:15:01 +08:00
CallMeR 025d3ae558 更新 PVE 制作虚拟机模板 2023-06-26 18:07:49 +08:00
CallMeR 2dc5780c17 更新 PVE 制作虚拟机模板 2023-06-26 17:45:34 +08:00
CallMeR 2cc4e7a81c 更新 PVE 制作虚拟机模板 2023-06-26 17:38:44 +08:00
CallMeR 6e01bd7a6b 更新 PVE 系统调整 2023-06-26 15:42:43 +08:00
CallMeR 6b035dd176 更新 PVE 初始化配置 2023-06-26 15:36:23 +08:00
CallMeR 294d2a1473 更新 PVE 创建模板虚拟机 2023-06-26 15:27:33 +08:00
CallMeR db464c6e83 更新 PVE 制作虚拟机模板 2023-06-26 15:21:46 +08:00
CallMeR bef84818ec 更新 PVE 制作虚拟机模板 2023-06-26 13:30:46 +08:00
CallMeR f5cd88087b 更新 PVE 制作虚拟机模板 2023-06-26 02:06:14 +08:00
CallMeR 1816de1e1c 更新 PVE 创建模板虚拟机 2023-06-26 01:31:34 +08:00
CallMeR b72a110bee 更新 PVE 创建模板虚拟机 2023-06-25 22:29:18 +08:00
CallMeR 1081883de7 更新 PVE 创建模板虚拟机 2023-06-25 21:37:48 +08:00
CallMeR e789308ae7 更新 PVE 系统调整 2023-06-25 15:47:47 +08:00
CallMeR 79531b8431 更新 PVE 系统调整 2023-06-25 15:43:02 +08:00
CallMeR 1bc34548c2 更新 PVE 系统调整 2023-06-25 15:37:44 +08:00
CallMeR 19bb9605da 更新 PVE 系统调整 2023-06-25 15:33:49 +08:00
CallMeR c6c02fb6fc 更新 PVE 系统调整 2023-06-25 15:00:46 +08:00
CallMeR a120553cda 更新 PVE 系统调整 2023-06-25 14:47:49 +08:00
CallMeR 45f67c0575 更新 PVE 初始化配置 2023-06-25 01:07:39 +08:00
CallMeR 8ec0a03aef 更新 PVE 初始化配置 2023-06-25 00:55:36 +08:00
CallMeR 4682d5b06f 更新 PVE 初始化配置 2023-06-25 00:48:47 +08:00
CallMeR 9b7a9c4480 更新 PVE 初始化配置 2023-06-24 20:14:54 +08:00
CallMeR 9ee5a6eab3 更新 PVE 初始化配置 2023-06-24 12:49:49 +08:00
CallMeR 31185a456b 更新 PVE 初始化配置 2023-06-24 12:28:57 +08:00
CallMeR 512f178314 更新 PVE 初始化配置 2023-06-24 12:24:27 +08:00
CallMeR dde5487fcf 更新设置 BIOS 2023-06-23 20:29:28 +08:00
CallMeR 7a53c915f1 更新 PVE 系统安装 2023-06-23 20:21:12 +08:00
CallMeR 91c6fc7394 更新 PVE 系统安装 2023-06-23 20:00:23 +08:00
CallMeR d1c7e090ab 更新设置 BIOS 2023-06-23 17:33:19 +08:00
狐狸Nomad 81ad54cbe9 更新系统 hostname 2023-03-07 18:51:48 +08:00
狐狸Nomad 33518cec15 更新内网地址规划 2023-03-07 14:24:58 +08:00
狐狸Nomad 13976f0416 文档结构整理 2023-03-03 16:37:07 +08:00
狐狸Nomad c384d28039 添加更新 PCI 数据库方法
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2023-02-09 08:28:04 +00:00
狐狸Nomad 8da8fea50c 添加更新 PCI 数据库方法
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2023-02-09 08:26:51 +00:00
狐狸Nomad d71720766c update 2.PVE初始化配置.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2023-01-13 07:12:08 +00:00
狐狸Nomad 93d6fc0b80 update 2.PVE初始化配置.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-10 06:32:03 +00:00
狐狸Nomad f3ca708e55 删除文件 src/Fox_Debian_Server_Modules.conf 2022-12-06 07:34:12 +00:00
狐狸Nomad 41d08376da update 5.PVE制作虚拟机模板.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-06 07:33:44 +00:00
狐狸Nomad 98b6d79cfe update 5.PVE制作虚拟机模板.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-06 07:26:22 +00:00
狐狸Nomad 904502d9da add src/Fox_Debian_Server_Modules.conf.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-06 07:21:07 +00:00
狐狸Nomad a1eb073c74 update src/Fox_Debian_99_Sysctl.conf.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-06 07:11:34 +00:00
狐狸Nomad 3d2977d2a0 update 3.PVE系统调整.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-04 08:28:37 +00:00
狐狸Nomad 31b0659d75 update 3.PVE系统调整.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-04 08:25:38 +00:00
狐狸Nomad f6430ea773 update 3.PVE系统调整.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-04 07:53:54 +00:00
狐狸Nomad da5db050d8 update 3.PVE系统调整.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-04 07:43:01 +00:00
狐狸Nomad 5ad063bda2 update 3.PVE系统调整.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-04 07:36:34 +00:00
狐狸Nomad 05565fc0c1 update 3.PVE系统调整.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-04 07:31:27 +00:00
狐狸Nomad 09daf53713 update 3.PVE系统调整.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-02 08:51:09 +00:00
狐狸Nomad 2a4f368e9f update 3.PVE系统调整.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-02 08:38:28 +00:00
狐狸Nomad 5ec21db627 update 2.PVE初始化配置.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-12-02 08:37:10 +00:00
狐狸Nomad cc4a0873a1 update 5.PVE制作虚拟机模板.md.
Signed-off-by: 狐狸Nomad <9463297+callmer@user.noreply.gitee.com>
2022-11-23 15:17:48 +00:00
212 changed files with 4481 additions and 2579 deletions
-67
View File
@@ -1,67 +0,0 @@
## 1.虚拟化功能确认
进入 `Advanced` 菜单的子菜单 `CPU Configuration`
![cpu设置](img/BIOS/bios_cpu.png)
检查 `Intel (VMX) Virtualization Technology` 选项为 `Enabled` 状态:
![cpu设置-vmx](img/BIOS/bios_cpu_vmx.png)
## 2.CPU功耗确认
进入 `Advanced` 菜单的子菜单 `Power & Performance`
![cpu功耗](img/BIOS/bios_power.png)
进入 `CPU - Power Management Control`
![cpu功耗控制](img/BIOS/bios_power_control.png)
检查 `C states` **默认** 选项为 `Enabled` 状态。
如果遇到网卡 **无法跑满** 的情况,可以尝试将该选项关闭:
![c-states](img/BIOS/bios_c_states.png)
再进入 `HDC Control` 菜单的子菜单 `View/Configure Turbo Options`
![turbo选项](img/BIOS/bios_turbo_options.png)
检查以下内容,适当调整以改变功耗墙:
- `Power Limit 1 Override` 选项:`Enabled`
- `Power Limit 1` 选项:`15000`
- `Power Limit 1 Time Window` 选项:为最大 `128`
![turbo选项确认](img/BIOS/bios_turbo_max.png)
## 3.来电自启确认
进入 `Advanced` 菜单的子菜单 `Hardware Monitor`
![硬件监控](img/BIOS/bios_hardware_monitor.png)
确认 `Restore AC Power Loss` 选项为 `Power On` 状态:
![来电自启](img/BIOS/bios_hardware_ac.png)
## 4.设置快速启动
PVE 系统安装完成后,进入 `Boot` 菜单,将 `Fast Boot` 选项设置为 `Enabled` 状态:
![快速启动](img/BIOS/bios_fast_boot.png)
调整系统启动顺序,将 `Proxmox` 设置为第一启动项,并关闭其他启动项内容:
![启动顺序](img/BIOS/bios_boot_order.png)
最后保存 BIOS 设置 `Save Changes and Exit`
![保存BIOS](img/BIOS/bios_save.png)
使用键盘左右方向键选择 `yes` 并回车键执行保存:
![确认保存](img/BIOS/bios_save_yeahhhh.png)
+76
View File
@@ -0,0 +1,76 @@
## 1.虚拟化选项
进入 `Advanced` 菜单的子菜单 `CPU Configuration`
![cpu设置](img/p00/bios_cpu.jpeg)
检查 `Intel (VMX) Virtualization Technology` 选项为 `Enabled` 状态:
![cpu设置-vmx](img/p00/bios_cpu_vmx.jpeg)
## 2. CPU 功耗
进入 `Advanced` 菜单的子菜单 `Power & Performance`
![cpu功耗](img/p00/bios_power.jpeg)
进入 `CPU - Power Management Control`
![cpu功耗控制](img/p00/bios_power_control.jpeg)
检查 `C states` **默认** 选项为 `Enabled` 状态,如果遇到网卡 **无法跑满** 的情况,可以尝试将该选项关闭:
![c-states](img/p00/bios_c_states.jpeg)
再进入 `HDC Control` 菜单的子菜单 `View/Configure Turbo Options`
![turbo选项](img/p00/bios_turbo_options.jpeg)
检查以下内容,适当调整以改变功耗墙:
- `Power Limit 1 Override` 选项:`Enabled`
- `Power Limit 1` 选项:`50000`
- `Power Limit 1 Time Window` 选项:为最大 `128`
![turbo选项确认](img/p00/bios_turbo_max.jpeg)
## 3.温控风扇
进入 `Advanced` 菜单的子菜单 `Hardware Monitor`
![硬件监控](img/p00/bios_hardware_monitor.jpeg)
进入 `Smart Fan Function`
![风扇状态](img/p00/bios_smart_fan.jpeg)
可对温控风扇参数进行调整:
![风扇设置](img/p00/bios_smart_fan_config.jpeg)
## 4.来电自启
进入 `Chipset` 菜单的子菜单 `PCH-IO Configuration`
![硬件监控](img/p00/bios_pch.jpeg)
确认 `State After G3` 选项为 `Power On` 状态:
![来电自启](img/p00/bios_hardware_ac.jpeg)
## 5.快速启动
PVE 系统安装完成后,进入 `Boot` 菜单,将 `Fast Boot` 选项设置为 `Enabled` 状态:
![快速启动](img/p00/bios_fast_boot.jpeg)
调整系统启动顺序,将 `Proxmox` 设置为第一启动项,并关闭其他启动项内容:
![启动顺序](img/p00/bios_boot_order.jpeg)
最后保存 BIOS 设置 `Save Changes and Exit`
![保存BIOS](img/p00/bios_save.jpeg)
使用键盘左右方向键选择 `yes` 并回车键执行保存:
![确认保存](img/p00/bios_save_yeahhhh.jpeg)
+215
View File
@@ -0,0 +1,215 @@
## 0.前期准备
PVE 系统正式安装之前,需要准备 PVE 的安装镜像和一些必要的配套工具。
### 0.1. PVE 镜像下载
PVE 下载地址:[Proxmox Virtual Environment](https://www.proxmox.com/en/downloads/proxmox-virtual-environment/iso)
页面中有多个 PVE 相关文件,本文以目前最新的 `Proxmox VE 9.x ISO Installer` 作为演示。
下载 ISO 时请注意 `SHA256SUM` ,后续将使用该校验信息对下载下来的 ISO 进行校验,以确保 ISO 文件的完整性。
![PVE下载页面](img/p01/pve_download_iso.jpeg)
### 0.2.启动盘制作工具
考虑到制作 PVE 启动盘时,所使用的操作系统可能有 Windows 、macOS 、Linux ,因此这里推荐几个常用的写盘工具。
#### Ventoy
官方网站地址:https://www.ventoy.net/cn/index.html
其优点在于可在单个 U 盘内存储多个可引导 ISO 文件,省去多次格式化 U 盘并写入 ISO 的操作,使用便捷。
缺点是仅支持 Windows 与 Linux 系统,且部分机型可能无法在 UEFI 模式下启用 Secure Boot(安全启动)。
![Ventoy写盘工具](img/p01/pve_ventoy.jpeg)
#### Etcher
官方网站地址:https://etcher.balena.io/
跨平台的写盘工具,开源,写盘速度很快,缺点是该软件体积较大,下载缓慢。
支持 Windows 、macOS 、Linux 。
![Etcher写盘工具](img/p01/pve_etcher.jpeg)
#### Rufus
官方网站地址:https://rufus.ie/zh/
轻便小巧的写盘工具,仅支持 Windows 。
![Rufus写盘工具](img/p01/pve_rufus.jpeg)
### 0.3.终端工具
考虑到配置 PVE 服务器、路由器及 DNS 服务器时需在 CLI 中执行命令,以下推荐几款常用终端工具。
#### Windows Terminal
官方网站地址:https://aka.ms/terminal
Microsoft 官方终端工具,可以在 Github 平台或 Microsoft 应用商店中进行下载。
![Windows Terminal](img/p01/pve_win_terminal.png)
#### Termius
官方地址:https://termius.com/
企业级终端工具,支持 Windows、macOS、Linux 系统以及移动端系统。
![Termius](img/p01/pve_termius.jpeg)
#### MobaXterm
官方地址:https://mobaxterm.mobatek.net
功能强大的终端工具,仅支持 Windows 系统。
![MobaXterm](img/p01/pve_mobaxterm.png)
## 1. PVE 系统安装
由于机型不同,BIOS 的设置也不同,所以本文不演示具体如何将机器设置成从 U 盘启动。
在设置 BIOS 时需要注意以下几点:
- 确保启用了硬件虚拟化支持
- 确保启用了设备来电自启动
- 检查 CPU 的功耗设置(可选)
- PVE 8.1 及后续版本支持安全启动,详情参考 [PVE - Secure Boot Setup](https://pve.proxmox.com/wiki/Secure_Boot_Setup)
- 若通过 Ventoy 引导安装 PVE 系统,建议参考 [UEFI 模式安全启动操作说明](https://www.ventoy.net/cn/doc_secure.html) 或 **临时关闭** 安全启动
- 对设备安全性有要求时,建议使用 Etcher 工具制作启动 U 盘并直接安装 PVE 系统
### 1.1.设备引导
使用 Ventoy 进行设备引导后出现如下画面,需选择 PVE 的安装 ISO 进行系统引导。
![Ventoy引导设备](img/p01/pve_ventoy_boot.jpeg)
使用 `Boot in normal mode` 选项进行启动,等待引导跑码完成后,即可进入 PVE 的安装界面。
![Ventoy引导模式](img/p01/pve_ventoy_boot_mode.jpeg)
### 1.2. PVE 安装选项
新版 PVE 安装程序支持纯键盘操作,常用快捷键如下。
|键盘按键|作用|说明|
|--|--|--|
|Esc|返回|返回上一步骤|
|Enter|确认|确认输入,激活选项或进入下一步骤|
|方向键|导航|用于选项选择,或切换输入焦点|
|Tab|导航|与方向键功能类似|
|ALT + N|下一步|进入下一步骤|
使用 `方向键` 选择第一项 `Install Proxmox VE (Graphical)` 图形化安装界面,按键盘 `Enter` 进入下一步骤。
![PVE安装选项](img/p01/pve_option.jpg)
设备将继续跑码,直到出现最终用户许可协议 EULA ,按键盘组合键 `ALT + N ` 进入下一步骤。
![PVE用户协议](img/p01/pve_eula.jpg)
### 1.3. PVE 硬盘选项
此时会出现 `Target Harddisk` 选项,会显示出设备中存在的硬盘列表,可通过下拉框选择安装 PVE 的目标硬盘。
![PVE选择安装硬盘](img/p01/pve_hd_choose.jpg)
点击硬盘列表右侧的 `Options` ,对 PVE 的硬盘安装参数进行一些调整。
推荐将 `Filesystem` 也就是硬盘的文件系统,设置成 `xfs`
![PVE文件系统](img/p01/pve_hd_fs.jpg)
### 1.4. PVE 时区选项
此时 PVE 处于未联网的 “离线” 状态,因此不会从互联网中读取时区信息,需要手动设置时区。
`Contry` 处手动输入 `China` ,下方的 `Time zone` 将自动变更为 `Asia/Shanghai`
![PVE时区](img/p01/pve_timezone.jpg)
### 1.5. PVE 账户与邮箱
PVE 为最关键的虚拟化层,建议使用强密码,包含大小写字母、数字以及特殊符号。
`Email` 必须为一个 “合法” 的邮箱地址,不然系统会判定邮箱地址不合法并拒绝继续安装。
![PVE邮箱设置](img/p01/pve_email.jpg)
### 1.6. PVE 网络设置
默认情况下,PVE 会使用编号较小的第一个网口作为管理口。
而某些设备,其物理网口顺序与该页面显示的网口顺序 **不一致** ,因此保持默认设置即可。
![PVE管理网口设置](img/p01/pve_eth.jpg)
FQDN 为 PVE 的域,PVE 将使用 FQDN 中的二级域名作为其主机名。
演示中 FQDN 为 `node01.fox.internal` ,因此 PVE 的主机名为 `node01`
根据规划,PVE 的 IPv4 管理地址为 `172.16.1.254`
未来主路由的 IPv4 地址为 `172.16.1.1` ,因此均使用该地址作为 PVE 的网关地址和 DNS 地址。
PVE 安装完成后,可通过其提供的 Web 管理界面,进一步调整管理口的相关设置。
|参数|值|说明|
|--|--|--|
|Hostname (FQDN)|`node01.fox.internal`|设置 PVE `域``主机名` |
|IP Address (CIDR)|`172.16.1.254/24`|设置 PVE IPv4 地址|
|Gateway|`172.16.1.1`|设置 PVE IPv4 网关|
|DNS Server|`172.16.1.1`|设置 PVE IPv4 DNS |
![PVE管理IP地址](img/p01/pve_ip.jpg)
### 1.7. PVE 参数确认
该页面会显示当前 PVE 的安装配置总览,确认无误后即可开始安装。
![PVE安装确认](img/p01/pve_install_confirm.jpg)
安装完成后,PVE 会告知用户登录的 `IP 地址``端口`
![PVE安装完成](img/p01/pve_install_finish.jpg)
## 2. PVE 安装后检查
PVE 安装完成后会自动重启,等待系统重启完成会显示如下界面,并使用 `root` 账户进行登录,密码为刚才设置的管理密码。
**注意:Linux 操作系统,在输入密码时是不显示任何字符信息的,输入完成后输入回车即可。**
![PVE首次重启](img/p01/pve_first_boot.jpeg)
登录系统后,使用一些命令来查看一些基本信息。
```bash
## 查看系统硬盘与挂载
$ df -hT
$ df -hiT
$ cat /etc/fstab
## 查看系统代号
$ cat /etc/os-release
```
此处显示出 PVE 底层使用的是 Debian 的系统,代号为 `trixie` ,该代号后续会使用到。
![PVE系统信息](img/p01/pve_sys_info.jpg)
至此 PVE 的安装步骤已经完成。
+286
View File
@@ -0,0 +1,286 @@
## 1.更换软件源
在上一篇文章 [01.PVE系统安装](./01.PVE系统安装.md) 中,从刚装好的 PVE 系统中获取了系统的一些参数。
![PVE系统信息](img/p01/pve_sys_info.jpg)
此处显示出 PVE 底层使用的是 Debian 的系统,代号为 `trixie`
为了后续能对 PVE 系统进行升级,需要更换其镜像仓库,也就是大家熟知的软件源。
当前处于 “离线” 安装状态,更换软件源后,因无网络连接,无法执行系统更新操作。
### 1.1.系统软件源
使用终端工具登录到 PVE 服务器,查看现有软件源配置文件。
```bash
## 查看系统默认软件源
$ cat /etc/apt/sources.list.d/debian.sources
#### 系统默认软件源示例输出
Types: deb
URIs: http://deb.debian.org/debian/
Suites: trixie trixie-updates
Components: main contrib non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
URIs: http://security.debian.org/debian-security/
Suites: trixie-security
Components: main contrib non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
```
这里将使用 [中国科技大(USTC](http://mirrors.ustc.edu.cn/help/proxmox.html) 的镜像仓库进行替换,执行以下命令。
```bash
## 配置 PVE 系统默认软件源脚本
$ tee /etc/apt/sources.list.d/debian.sources >/dev/null <<'EOF'
Types: deb
URIs: https://mirrors.ustc.edu.cn/debian
Suites: trixie trixie-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
URIs: https://mirrors.ustc.edu.cn/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF
```
### 1.2. PVE 软件源
默认情况下,PVE 额外启用了 2 个官方源,且为订阅收费制,因此需要替换为免订阅源。
首先创建 PVE 免订阅软件源,执行以下命令。
```bash
## 配置 PVE 系统免订阅软件源脚本
$ tee /etc/apt/sources.list.d/pve-no-subscription.sources >/dev/null <<'EOF'
Types: deb
URIs: https://mirrors.ustc.edu.cn/proxmox/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
```
对于 Proxmox Backup Server 和 Proxmox Mail Gateway,请将以上命令路径中的 `pve` 分别替换为 `pbs``pmg`
进一步创建 PVE Ceph 免订阅软件源,Ceph 软件源为 PVE 8 之后默认安装,执行以下命令。
```bash
## 配置 PVE Ceph 免订阅软件源脚本
$ if [ -f /etc/apt/sources.list.d/ceph.sources ]; then
(
. /etc/os-release
CEPH_CODENAME=$(ceph -v | awk '/^ceph version / { print $(NF - 1); exit }')
if [ -z "$CEPH_CODENAME" ] || [ -z "${VERSION_CODENAME:-}" ]; then
echo "Unable to determine Ceph or Debian codename." >&2
exit 1
fi
tee /etc/apt/sources.list.d/pve-ceph-no-subscription.sources >/dev/null <<EOF
Types: deb
URIs: https://mirrors.ustc.edu.cn/proxmox/debian/ceph-$CEPH_CODENAME
Suites: $VERSION_CODENAME
Components: no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
)
fi
```
最后,删除 PVE 官方付费软件源,执行以下命令。
**注意:rm 为高风险命令,请正确使用,请勿手抖,请勿手抖。**
```bash
## 删除付费软件源
$ rm -rvf /etc/apt/sources.list.d/pve-enterprise.sources /etc/apt/sources.list.d/ceph.sources
```
创建完成后对其进行检查。
```bash
## 检查 PVE 免费源
$ cat /etc/apt/sources.list.d/*
```
如果输出结果中均为 USTC 的镜像地址,则表示命令已经正确执行。
### 1.3. PVE CT 源
如果需要使用 Proxmox 网页端下载 CT Templates ,可替换 CT Templates 源。
由于该功能暂时未被使用,因此本文只做记录。
```bash
## 替换 CT Templates 链接
$ sed -i.bak 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
## 重启 PVE API 守护进程
$ systemctl restart pvedaemon.service
## 更新 CT Templates 列表
$ pveam update
```
### 1.4.镜像同步
更换完成系统源之后,需要同步系统源数据。
因 “离线” 安装时无法同步系统源,此步骤可待 PVE 成功连接 Internet 后再执行。
```bash
## 清理软件包
$ apt clean && apt autoclean && apt autoremove --purge
## 同步软件源
$ apt update
## 更新系统
$ apt full-upgrade
```
## 2.安装必要软件
安装 `iperf3` 后,系统将询问是否将其作为系统服务开机自启,选择 `no` 即可。
其中 `unattended-upgrades` 为系统自动更新服务,后续会对其进行配置。
`linux-cpupower` 为 CPU 调度器的配置工具,后续会对 CPU 调度器进行调整。
```bash
## 同步镜像仓库
$ apt update
## 安装系统软件
$ apt install btop curl knot-dnsutils lm-sensors neovim powermgmt-base unattended-upgrades sshguard tmux
## 安装 CPU 调度调整工具
$ apt install linux-cpupower
## 更新 PCI 数据库
$ update-pciids
## 安装 Open vSwitch(可选)
$ apt install openvswitch-switch
## 安装网络检测工具(可选)
$ apt install iftop iperf iperf3
## 根据 CPU 厂商安装 CPU 微码工具(可选,现已默认安装)
$ apt install intel-microcode (amd64-microcode)
## 刷新 systemd 日志分类索引
$ journalctl --update-catalog
```
## 3.配置 PVE 网络
设置电脑的 IPv4 地址为静态地址,电脑 IPv4 地址段需要与 PVE 的地址段保持一致。
用网线连接电脑网口与 PVE 管理网口(此时应为编号最小的第一个网口)。
访问 PVE 的 Web 管理界面,根据 **网络设备** 规划调整其网络配置。
|系统|作用|说明|
|--|--|--|
|RouterOS|主路由|PPPoE 拨号上网|
|Debian|DNS 服务器|内网 DNS 服务器|
|Debian|TS 服务器|内网 TS 组网服务器|
|OpenWrt|旁路网关|内网插件服务|
根据 **内部网络地址** 规划,PVE IP 地址规划如下。
|地址类型|作用|值|说明|
|--|--|--|--|
|IPv4|管理地址|`172.16.1.254`|PVE IPv4 地址|
||网关地址|`172.16.1.1`|PVE IPv4 网关|
||DNS 地址|`172.16.1.1`|PVE IPv4 DNS 服务器|
|IPv6|管理地址|`fdac::fe`|PVE IPv6 地址(可选)|
||网关地址|`-`|PVE IPv6 网关将使用 `SLAAC` 自动配置|
||DNS 地址|`fdac::1`|PVE IPv6 DNS 服务器(可选)|
![PVE网络规划](img/p02/pve_net_schematization.jpeg)
初次登录 PVE 的 WEB 管理后台,打开网络管理页面,此时只有一个 `vmbr0`
`vmbr0` 与列表中的第一个物理网口绑定,且在 `CIDR``网关` 处有 IP 地址参数,说明 `vmbr0` 为当前管理网口。
接下来将修改 PVE 网络配置,在修改完成前, **请不要点击 “应用配置”** ,否则会导致 PVE 无法访问。
![PVE默认网桥](img/p02/pve_net_default.jpg)
### 3.1.修改 vmbr0
鼠标双击 `vmbr0` ,进入网桥配置界面。
删除 `IPv4/CIDR``网关` 信息,确保 `自动启动` 为勾选状态。
在备注处填写 `wan` ,然后点击 `OK`
![修改vmbr0](img/p02/pve_modify_vmbr0.jpeg)
### 3.2.创建网桥
点击左上角的 `创建` 选项,选择 `Linux Bridge`
![创建物理接口网桥](img/p02/pve_br_create.jpg)
桥接端口填写顺序的第二个网卡名称,演示中为 `nic1` ,在备注处填写 `lan1` ,并点击 `创建`
然后,依次创建所有物理接口的内部网桥,直到最后一个网桥,即 PVE 的管理网口。
![指定物理接口](img/p02/pve_br_phyport.jpeg)
### 3.3.创建管理网口
在创建最后一个物理网口的网桥时,需配置 `IPv4` 地址和对应的 `网关` 参数。
![最后的物理接口网桥](img/p02/pve_br_last_phyport.jpeg)
**额外说明:**
- 如非特殊需求,通常情况下 PVE 系统无需使用 IPv6 网络
- 当主路由未配置 IPv6 ULA 网段时,无需填写 `IPv6/CIDR` 参数(如本文演示地址 `fdac::fe/64`
- 多数情况下无需填写 IPv6 `网关` 参数,其网关将通过 IPv6 LLA (链路本地地址)自动配置
![最后的物理接口网桥](img/p02/pve_br_last_phyport_ipv6.jpeg)
所有物理网口的 PVE 网桥创建完成后,点击 `应用配置` ,页面会断开连接。
此时,只需将电脑网线从 PVE 物理机的第一个网口拔出,并插入最后一个网口即可恢复。
若仍无法访问 PVE,可尝试通过网线拔插的方式,逐一测试各 PVE 网口的访问连通性。
### 3.4.创建内部网桥
纯内部网桥在无其他系统提供额外桥接时,无法直接通过物理网口访问。
其主要作用是借助其他系统创建的虚拟网桥,为内部虚拟机提供统一的网络访问接口。
创建纯内部网桥的方法,与创建物理网口网桥的方法基本一致,唯一区别是 `桥接端口` 参数为 **空** 即可。
![纯内部网桥](img/p02/pve_br_nophyport.jpeg)
在 PVE 内部网络设置完成后,将如图所示。
![PVE网桥最终设置显示](img/p02/pve_net_preview.jpg)
## 4.配置 PVE DNS
在 PVE 系统的安装过程中,设置了 DNS 的 IPv4 地址 `172.16.1.1` ,但并未设置 DNS 的 IPv6 地址。
在 PVE 的 DNS 设置页面,手动添加 DNS IPv6 地址,即主路由 LAN 口 IPv6 ULA 地址。
同样,若 PVE 不使用 IPv6 网络或主路由未配置 IPv6 ULA 网段,本步骤可跳过。
![PVE添加IPv6DNS](img/p02/pve_add_ipv6_dns.jpeg)
至此,PVE 的初始化配置完成。
+580
View File
@@ -0,0 +1,580 @@
## 0.必要条件
在上一篇文章 [02.PVE初始化配置](./02.PVE初始化配置.md) 中,已初始化了 PVE 系统,接下来需要对 PVE 系统进一步调整。
在 PVE 系统调整之前,请确认必要的软件包已经安装完成,本文后续命令均在 SSH 终端下执行。
Debian 系统默认编辑器为 `nano` ,推荐将其更换为 `neovim` ,关于 [Neovim](https://neovim.io/) 的基础使用方法,请参阅:[Neovim 基础教程](https://cn.bing.com/search?q=Neovim+%E5%9F%BA%E7%A1%80%E6%95%99%E7%A8%8B) 。
```bash
## 修改系统默认编辑器(选择 nvim 所在条目,即可将 neovim 设为默认编辑器)
$ update-alternatives --config editor
#### 系统默认编辑器示例输出
There are 3 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
* 0 /bin/nano 40 auto mode
1 /bin/nano 40 manual mode
2 /usr/bin/nvim 30 manual mode
3 /usr/bin/vim.tiny 15 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/nvim to provide /usr/bin/editor (editor) in manual mode
```
若需完全禁用 `neovim` 鼠标功能;即关闭所有鼠标交互,右键行为完全交给终端 / 控制台处理,需执行以下命令。
```bash
## 创建 nvim 配置目录
$ mkdir -p /etc/xdg/nvim
## 配置 nvim 鼠标交互行为脚本
$ tee /etc/xdg/nvim/sysinit.vim >/dev/null <<'EOF'
set mouse=
EOF
```
## 1.系统时区
如果在安装 PVE 系统时选错了时区,导致系统时间和北京时间不一致,可以执行以下命令修正。
若输出结果和北京时间一致,则代表修改正确。
```bash
## 修改系统时区
$ timedatectl set-timezone Asia/Shanghai
## 检查系统时间
$ date -R
#### 系统时间示例输出
Wed, 27 Aug 2025 15:12:21 +0800
```
Debian 系统常用 `systemd-timesyncd.service` 来同步时间,而 PVE 系统使用 `chrony.service` 来同步时间。
为了使用国内的 NTP 服务器,需要对 `chrony.service` 进行配置,执行以下命令。
```bash
## 编辑 chrony 配置文件
$ editor /etc/chrony/chrony.conf
```
在编辑器对话框中,将 `pool 2.debian.pool.ntp.org iburst` “注释” 掉,并添加国内的 NTP 服务器。
```bash
## chrony 配置项
# Use Debian vendor zone.
# pool 2.debian.pool.ntp.org iburst ## 在这行前面增加注释符 # 来注释
# Use Custom vendor zone.
pool ntp.aliyun.com iburst
pool ntp.tencent.com iburst
pool cn.pool.ntp.org iburst
```
配置文件编辑完成后,需重启 `chrony.service` ,并再次检查系统 NTP 服务器地址。
```bash
## 重启 chrony.service
$ systemctl restart chrony.service
## 检查系统 NTP 服务器
$ chronyc sources -V
#### 系统 NTP 服务器示例输出
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 203.107.6.88 2 6 17 0 -875us[-2496us] +/- 22ms
^- 106.55.184.199 2 6 17 3 -1331us[-1331us] +/- 50ms
^- time.neu.edu.cn 2 6 17 8 +935us[ +935us] +/- 23ms
^- 119.28.206.193 2 6 65 5 +33us[ +33us] +/- 65ms
^- electrode.felixc.at 2 6 17 11 -1320us[-1320us] +/- 126ms
^- dns1.synet.edu.cn 1 6 17 13 -44us[ -44us] +/- 22ms
```
## 2. CPU 调度器
安装 `linux-cpupower` 后,需检查 CPU 当前调度器。
```bash
## 检查 CPU 当前调度器
$ cpupower -c all frequency-info
#### 设备 CPU - J4125 示例输出
analyzing CPU 0:
driver: intel_cpufreq
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 20.0 us
hardware limits: 800 MHz - 2.70 GHz
available cpufreq governors: conservative ondemand userspace powersave performance schedutil
current policy: frequency should be within 800 MHz and 2.70 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency: Unable to call hardware
current CPU frequency: 2.60 GHz (asserted by call to kernel)
boost state support:
Supported: yes
Active: yes
#### 设备 CPU - N100 示例输出
analyzing CPU 0:
driver: intel_pstate
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: Cannot determine or is not supported.
hardware limits: 800 MHz - 3.30 GHz
available cpufreq governors: performance powersave
current policy: frequency should be within 800 MHz and 3.30 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency: Unable to call hardware
current CPU frequency: 2.00 GHz (asserted by call to kernel)
boost state support:
Supported: yes
Active: yes
```
这里面主要关注两个点:
- `driver` CPU 调频驱动方案,例如 `intel_cpufreq``intel_pstate`
- `governor` :调频策略中使用的调度器,例如 `performance`
CPU 驱动一般不建议手动调整,而 `governor` 后面的参数表示 CPU 当前调度器设置。
接下来,需要了解 CPU 支持的调度器有哪些,执行以下命令。
```bash
## 检查 CPU 调度器支持情况
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
#### 设备 CPU - J4125 示例输出
conservative ondemand userspace powersave performance schedutil
#### 设备 CPU - N100 示例输出
performance powersave
```
根据 CPU 所使用的驱动不同,可选调度器也不同,至于每种调度器有什么优劣,欢迎大家深度挖掘。
- CPU 驱动为 `intel_cpufreq` 时,推荐使用 `schedutil` 调度器。
- CPU 驱动为 `intel_pstate` 时,推荐使用 `powersave` 调度器。
本文使用 `powersave` 调度器创建 `cpupower` 的配置文件。
```bash
## 创建 cpupower 默认配置文件
$ tee /etc/default/cpupower >/dev/null <<'EOF'
# This configuration file is customized by fox,
# Optimize CPU governor settings.
CPUPOWER_START_OPTS="frequency-set -g powersave"
CPUPOWER_STOP_OPTS="frequency-set -g performance"
EOF
```
进一步创建 `cpupower` 服务配置文件,以满足系统自动化设置需求。
```bash
## 创建 cpupower.service 配置文件
$ systemctl edit --force --full cpupower.service
```
在服务配置文件中输入以下内容,并保存。
```bash
[Unit]
Description=CPU Power Governor Management
ConditionVirtualization=!container
After=syslog.target
[Service]
Type=oneshot
EnvironmentFile=/etc/default/cpupower
ExecStart=/usr/bin/cpupower $CPUPOWER_START_OPTS
ExecStop=/usr/bin/cpupower $CPUPOWER_STOP_OPTS
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
```
执行以下命令让 `cpupower` 服务立即启动并置为开机自启状态。
```bash
## 设置 cpupower 服务开机自启
$ systemctl enable --now cpupower.service
```
这里提供两个额外命令,方便实时查看 CPU 当前频率和温度状况。
```bash
## 查看 CPU 当前频率
$ watch cat /sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_cur_freq
## 查看内部温度
$ watch -d sensors
```
## 3. PVE 自动更新
### 3.1.系统定时器
配置系统自动更新之前,需检查系统当前定时器状态。
后续将手动调整该定时器的时间,使其每 `10` 天的 `01:30` 进行触发。
```bash
## 检查系统定时器
$ systemctl status apt-daily-upgrade.timer
#### 系统定时器示例输出
● apt-daily-upgrade.timer - Daily apt upgrade and clean activities
Loaded: loaded (/usr/lib/systemd/system/apt-daily-upgrade.timer; enabled; preset: enabled)
Active: active (waiting) since Mon 2026-08-10 09:51:05 CST; 27min ago
Invocation: edb5962fda4c4a8395cb2c04c736db45
Trigger: Tue 2026-08-11 06:21:38 CST; 20h left
Triggers: ● apt-daily-upgrade.service
Aug 10 09:51:05 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities.
```
### 3.2.配置更新策略
执行以下命令,启用系统自动更新。
执行命令后,使用 “左右” 方向键进行选择,“回车” 键进行确认。
```bash
## 配置自动更新策略
$ dpkg-reconfigure -plow unattended-upgrades
## 选择 “是”
<Yes>
```
开始调整 `20auto-upgrades` 配置文件。
配置文件中,用来控制更新周期的参数为 `APT::Periodic::Unattended-Upgrade` `10` 表示更新周期为 `10` 天。
```bash
## 编辑 20auto-upgrades 配置文件
$ tee /etc/apt/apt.conf.d/20auto-upgrades >/dev/null <<'EOF'
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "10";
APT::Periodic::AutocleanInterval "1";
APT::Periodic::CleanInterval "1";
EOF
```
进一步调整 `50unattended-upgrades` 配置文件。
```bash
## 编辑 50unattended-upgrades 配置文件
$ editor /etc/apt/apt.conf.d/50unattended-upgrades
```
配置文件中,被修改的参数解释如下:
- 启用了 Debian `trixie-updates` 相关更新。
- 增加并启用 PVE 自有仓库的更新。
- 增加并启用 PVE Ceph 仓库的更新,请按需启用。
- 自动修复被打断的 Dpkg 安装。
- 自动移除无用的的内核包。
- 自动移除因更新而出现的无用依赖包。
- 自动移除以前的无用依赖包。
- 自动重启:开启。
- 自动重启时间:`02:30`
因为该配置文件很长,完整的配置文件可查看 [pve_50unattended_upgrades.conf](./src/pve/pve_50unattended_upgrades.conf) 以便对比。
```bash
## 删除以下行前面的注释符 // ,代表启用
"origin=Debian,codename=${distro_codename}-updates";
## 添加 PVE 系统更新项目
"origin=Proxmox,codename=${distro_codename},label=Proxmox Debian Repository";
## 按需添加 PVE Ceph 更新项目
"origin=Proxmox,codename=${distro_codename},label=Proxmox Ceph 19 Squid Debian Repository";
## 在配置文件末尾增加以下内容,代表启用,并调整参数
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "02:30";
```
### 3.3.重设触发器
系统自动更新配置文件修改完成后,需要重设自动更新定时器,执行以下命令。
完整的配置文件可查看 [pve_apt_daily_upgrade.conf](./src/pve/pve_apt_daily_upgrade.conf) 以便对比。
```bash
## 配置系统定时器
$ systemctl edit apt-daily-upgrade.timer
```
根据配置文件中的提示,在中间空白处填入以下内容。
```bash
## 定时器配置项
[Timer]
OnCalendar=
OnCalendar=01:30
RandomizedDelaySec=0
```
设置完成后,重启自动更新触发器。
```bash
## 重启触发器
$ systemctl restart apt-daily-upgrade.timer
## 再次检查触发器状态
$ systemctl status apt-daily-upgrade.timer
#### 系统自动更新触发器示例输出
● apt-daily-upgrade.timer - Daily apt upgrade and clean activities
Loaded: loaded (/usr/lib/systemd/system/apt-daily-upgrade.timer; enabled; preset: enabled)
Drop-In: /etc/systemd/system/apt-daily-upgrade.timer.d
└─override.conf
Active: active (waiting) since Mon 2026-08-10 10:35:09 CST; 5s ago
Invocation: e73c9dd167cc4814836a1da4dab015db
Trigger: Tue 2026-08-11 01:30:00 CST; 14h left
Triggers: ● apt-daily-upgrade.service
Aug 10 10:35:09 node01 systemd[1]: Stopping apt-daily-upgrade.timer - Daily apt upgrade and clean activities...
Aug 10 10:35:09 node01 systemd[1]: Stopped apt-daily-upgrade.timer - Daily apt upgrade and clean activities.
Aug 10 10:35:09 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities.
```
## 4.硬件直通
### 4.1.修改 Grub
参考官方文档 [qm_pci_passthrough](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_pci_passthrough) 和 [Pci passthrough](https://pve.proxmox.com/wiki/Pci_passthrough) 开启 PVE 硬件直通功能。
使用终端工具登录到 PVE 服务器,编辑系统 `Grub` 的配置文件 `/etc/default/grub`
```bash
## 编辑 Grub 配置文件
$ editor /etc/default/grub
```
在编辑器对话框中修改 `GRUB_CMDLINE_LINUX_DEFAULT` 参数,注意命令中间的空格。
```bash
## Intel 处理器添加参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
```
根据官方文档的说明,AMD 处理器下硬件直通功能将会自动打开,否则需要手动修改 `Grub` 配置文件。
```bash
## AMD 处理器添加参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
```
修改并保存后,需要更新系统 `Grub`
```bash
## 更新系统 Grub
$ update-grub
```
### 4.2.添加内核模块
编辑 **内核模块** 配置文件,增加必要的系统模块,执行以下命令。
```bash
## 编辑系统配置文件
$ tee /etc/modules-load.d/10-server-modules.conf >/dev/null <<'EOF'
# This configuration file is customized by fox,
# Optimize vfio related modules at system boot.
vfio
vfio_iommu_type1
vfio_pci
EOF
```
执行以下命令更新 `initramfs` ,更新完成后,建议重启 PVE 服务器。
```bash
## 更新 initramfs
$ update-initramfs -u -k all
```
### 4.3.检查硬件直通
PVE 服务器重启完成后,再次使用终端工具登录,并执行以下命令检查硬件直通状态。
主要查看 `IOMMU``Directed I/O``Interrupt Remapping` 的启用状态。
```bash
## 检查系统硬件直通状态
$ dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
#### 设备 CPU - J4125 示例输出
[ 0.008356] ACPI: DMAR 0x000000007953E000 0000A8 (v01 INTEL GLK-SOC 00000003 BRXT 0100000D)
[ 0.008406] ACPI: Reserving DMAR table memory at [mem 0x7953e000-0x7953e0a7]
[ 0.055618] AMD-Vi: Unknown option - 'on'
[ 0.220916] DMAR: Host address width 39
[ 0.220919] DMAR: DRHD base: 0x000000fed64000 flags: 0x0
[ 0.220939] DMAR: dmar0: reg_base_addr fed64000 ver 1:0 cap 1c0000c40660462 ecap 9e2ff0505e
[ 0.220944] DMAR: DRHD base: 0x000000fed65000 flags: 0x1
[ 0.220954] DMAR: dmar1: reg_base_addr fed65000 ver 1:0 cap d2008c40660462 ecap f050da
[ 0.220960] DMAR: RMRR base: 0x000000794a9000 end: 0x000000794c8fff
[ 0.220963] DMAR: RMRR base: 0x0000007b800000 end: 0x0000007fffffff
[ 0.220967] DMAR-IR: IOAPIC id 1 under DRHD base 0xfed65000 IOMMU 1
[ 0.220970] DMAR-IR: HPET id 0 under DRHD base 0xfed65000
[ 0.220973] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[ 0.223069] DMAR-IR: Enabled IRQ remapping in x2apic mode
[ 0.493005] DMAR: No ATSR found
[ 0.493008] DMAR: No SATC found
[ 0.493010] DMAR: dmar0: Using Queued invalidation
[ 0.493018] DMAR: dmar1: Using Queued invalidation
[ 0.494092] DMAR: Intel(R) Virtualization Technology for Directed I/O
```
检查系统 `IOMMU` 分组,执行以下命令。
```bash
## 检查 IOMMU group
$ find /sys/kernel/iommu_groups/ -type l
#### 设备 CPU - J4125 示例输出
/sys/kernel/iommu_groups/17/devices/0000:04:00.0
/sys/kernel/iommu_groups/7/devices/0000:00:13.3
/sys/kernel/iommu_groups/15/devices/0000:02:00.0
/sys/kernel/iommu_groups/5/devices/0000:00:13.0
/sys/kernel/iommu_groups/13/devices/0000:00:1f.0
/sys/kernel/iommu_groups/13/devices/0000:00:1f.1
/sys/kernel/iommu_groups/3/devices/0000:00:0f.0
/sys/kernel/iommu_groups/11/devices/0000:00:17.0
/sys/kernel/iommu_groups/11/devices/0000:00:17.3
/sys/kernel/iommu_groups/11/devices/0000:00:17.1
/sys/kernel/iommu_groups/11/devices/0000:00:17.2
/sys/kernel/iommu_groups/1/devices/0000:00:00.0
/sys/kernel/iommu_groups/18/devices/0000:05:00.0
/sys/kernel/iommu_groups/8/devices/0000:00:14.0
/sys/kernel/iommu_groups/16/devices/0000:03:00.0
/sys/kernel/iommu_groups/6/devices/0000:00:13.2
/sys/kernel/iommu_groups/14/devices/0000:01:00.0
/sys/kernel/iommu_groups/4/devices/0000:00:12.0
/sys/kernel/iommu_groups/12/devices/0000:00:1c.0
/sys/kernel/iommu_groups/2/devices/0000:00:0e.0
/sys/kernel/iommu_groups/10/devices/0000:00:15.0
/sys/kernel/iommu_groups/0/devices/0000:00:02.0
/sys/kernel/iommu_groups/9/devices/0000:00:14.1
```
## 5. BTRFS 调整
**额外说明:**
- 本节专为 `BTRFS` 单盘 `RAID0`(条带模式)安装的 PVE 系统设计,使用其他安装模式时,请跳过此节
- `BTRFS` 文件系统当前仍为技术预览状态,请谨慎操作
- 有关在 PVE 中使用 `BTRFS` 的详情,请参阅 [Proxmox VE - BTRFS](https://pve.proxmox.com/wiki/BTRFS)
安装 PVE 时,若使用了 `BTRFS` 单盘 `RAID0` 的安装模式,系统默认未启用 swap 和 zstd 压缩,需要手动开启。
通常情况下,内存与 swap 的 **推荐** 比例为 `1:1` 。本机具有 `16GB` 内存,因此设置 `16GB` swap 空间。
执行以下命令,在 `BTRFS` 文件系统中创建子卷,并配置激活 swapfile 。
```bash
## 创建用于存放交换文件的子卷
$ btrfs subvolume create /swap
## 在子卷中创建 16GB 的交换文件
$ btrfs filesystem mkswapfile --size 16g --uuid clear /swap/swapfile
## 激活交换文件
$ swapon /swap/swapfile
```
此时还需进一步修改系统的 `fstab` 配置文件,以启用 `BTRFS` 的 zstd 压缩功能并确保 swap 在系统启动时自动激活。
```bash
## 编辑 fstab 配置文件
$ editor /etc/fstab
```
`fstab` 为系统关键配置文件,直接影响系统启动,修改此文件时,请注意以下几点:
- 仅修改根目录 `/` 对应的挂载选项,添加 `compress=zstd` 参数。
- 在文件末尾新增一行,添加 swap 的自动挂载。
-**不要** 修改其余配置参数,尤其是设备的唯一标识符( `UUID` ),切勿修改。
修改完成后,示例如下。
```bash
#### 系统 fstab 示例配置
# <file system> <mount point> <type> <options> <dump> <pass>
UUID=<DO-NOT-EDIT-YOUR-UUID> / btrfs defaults,compress=zstd 0 1
UUID=<YOUR-UUID> /boot/efi vfat defaults 0 1
proc /proc proc defaults 0 0
/swap/swapfile none swap defaults 0 0
```
## 6.系统清理
PVE 系统配置完成后,可执行以下命令,对系统进行清理。
```bash
## 清理系统软件包
$ apt clean && apt autoclean && apt autoremove --purge
## 清理系统缓存
$ bash -c 'find /var/cache/apt/ /var/lib/apt/lists/ /tmp/ -type f -print -delete'
## 清理系统日志
$ bash -c 'find /var/log/ -type f -print -delete'
## 清理命令历史记录文件
$ rm -rvf ~/.bash_history && history -c
```
至此 PVE 的系统调整已经完成。
+309
View File
@@ -0,0 +1,309 @@
## 0.前期准备
将虚拟机制作成模板,可在后续新建虚拟机时快速从模板中创建,减少系统安装配置时间。
该虚拟机模板主要用作内网 DNS 服务器,由 `Adguard Home``SmartDNS` 提供 DNS 解析服务。
本文将使用 Debian 的云镜像 `debian-13-generic-amd64.qcow2` 作为模板虚拟机的镜像。
访问 [Debian Official Cloud Images](https://cloud.debian.org/images/cloud/) 官方网站,下载最新版 `Trixie` 云镜像以及对应的校验文件。
![下载镜像](img/p04/download_generic_image_qcow2.jpeg)
## 1.创建虚拟机
登录 PVE 管理后台,点击页面右上角 `创建虚拟机` ,进入虚拟机创建流程。
### 1.1.常规
勾选底部 `高级` 选项,显示完整的配置参数,节点即 “本机” ,`VM ID``名称` 可自定义。
![虚拟机名称](img/p04/vm_id.jpg)
### 1.2.操作系统
无需使用任何安装介质,客户机操作系统类别选择 `Linux` 版本选择 `7.x - 2.6 Kernel` 即可。
![虚拟机操作系统](img/p04/vm_os.jpg)
### 1.3.系统
SCSI 控制器保持默认 `VirtIO SCSI single` ,机型可选 `q35` ,并勾选 `Qemu 代理` 选项。
固件可选 `OVMF (UEFI)` ,并勾选 `添加 TPM` 选项,存储路径需根据实际情况进行调整,演示为 `local-lvm`
`预注册密钥` 可启用,启用后将预装特定于发行版和 Microsoft 标准的安全启动密钥。
![虚拟机系统](img/p04/vm_system.jpg)
### 1.4.磁盘
因使用 Debian 云镜像制作虚拟机模板,此处需删除所有 `磁盘`
![虚拟机磁盘](img/p04/vm_hd.jpg)
### 1.5.CPU
CPU `类型` 选择 `host` `插槽``核心` 数根据物理 CPU 核心数进行酌情设置。
若 PVE 服务器内有多颗物理 CPU ,则推荐勾选 `启用 NUMA` 选项。
![虚拟机CPU](img/p04/vm_cpu.jpg)
### 1.6.内存
建议将 `内存` 设置为业务峰值需求,`最小内存` 原则上不低于 `内存``75%`
默认启用 `Ballooning 设备` ,使 PVE 能够获取虚拟机内部的内存统计,并在宿主机出现内存压力时动态回收和调配内存。
`最小内存` 设置为与 `内存` 相同,可保留统计能力,同时为虚拟机提供固定的内存保障。
对于 `允许 KSM` 内核同页合并功能,建议保留勾选状态。
![虚拟机内存](img/p04/vm_mem.jpg)
### 1.7.网络
通常情况下,模板虚拟机的 `桥接` 参数设为 PVE 管理口所在虚拟网桥即可。
因在 [02.PVE初始化配置](./02.PVE初始化配置.md) 中曾创建未桥接物理网口的内部网桥,故可根据实际需求选择是否使用纯内部网桥作为该参数值。
![虚拟机网口](img/p04/vm_network_port.jpg)
多数情况下,无需使用 PVE 内建防火墙,因此 **取消勾选** 网络设备的 `防火墙` 选项。
推荐在 `Multiqueue` 处根据前面设置的 CPU 核心数进行网卡多队列设置,设置比例为 1:1 。
即有 n 个 CPU 核心,此处多队列也设置为 n 。
![虚拟机网卡多队列](img/p04/vm_network_queue.jpg)
### 1.8.确认
接下来查看设置总览,确认无误后即可点击 `完成`
![虚拟机确认](img/p04/vm_confirm.jpg)
## 2.调整硬件参数
### 2.1.删除光驱
查看虚拟机详情页,在虚拟机 `硬件` 配置页面,移除其 `CD/DVD驱动器`
![虚拟机删除光驱](img/p04/vm_delete_cd.jpg)
### 2.2.添加 VirtIO RNG
为确保系统拥有充足的可用熵,需为模板虚拟机添加 `VirtIO RNG` 熵源。
点击顶部 `新增` 菜单,选择 `VirtIO RNG`
![虚拟机添加RNG](img/p04/vm_rng.jpg)
`熵源` 选择 `/dev/urandom` ,其余参数保持默认即可。
![虚拟机RNG参数](img/p04/vm_rng_details.jpg)
### 2.3.添加串行端口
在基于 Debian Cloud Image 创建 VM 时,须在虚拟机硬件列表中添加 `串行端口` 设备 `serial0`
补全串口硬件可避免系统因缺失 `/dev/ttyS0` 而无限循环报 `agetty` 输入/输出错误,同时可启用 PVE 的 `xterm.js` 控制台(支持原生复制粘贴)。
![虚拟机添加串行端口](img/p04/vm_serial.jpg)
`串行端口` 设置为 `0` 即可。
![虚拟机RNG参数](img/p04/vm_serial_details.jpg)
### 2.4.导入镜像文件
使用终端工具登录到 PVE 服务器,在 `/tmp` 目录中创建一个目录用于下载 Debian 云镜像文件。
```bash
## 创建并进入目录
$ mkdir -p /tmp/Debian && cd /tmp/Debian
## 下载云镜像校验文件
$ curl -LR -O https://cloud.debian.org/images/cloud/trixie/latest/SHA512SUMS
## 下载云镜像
$ curl -LR -O https://cloud.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.qcow2
```
镜像文件下载完成后,使用官方提供的校验文件验证镜像完整性。
```bash
## 检查文件是否存在
$ ls -lah
## 执行镜像文件校验
$ sha512sum --check --ignore-missing SHA512SUMS
#### 镜像校验成功示例输出
debian-13-generic-amd64.qcow2: OK
```
确认无误后,将镜像文件导入刚才创建的虚拟机,命令中的 `VM ID` 需要根据实际情况替换,演示为 `1001`
```bash
## 将 qcow2 镜像导入虚拟机中
$ qm importdisk 1001 debian-13-generic-amd64.qcow2 local-lvm
#### 镜像导入示例输出
unused0: successfully imported disk 'local-lvm:vm-1001-disk-2'
```
磁盘导入成功后,虚拟机硬件列表中将显示一块未使用的磁盘设备,可鼠标 **双击** 该设备进行配置调整。
![虚拟机新磁盘](img/p04/vm_unused_hd.jpg)
当宿主机使用 SSD 作为物理存储设备,并且虚拟磁盘采用 Thin Provisioning (精简置备)模式时,可考虑开启以下选项:
- `丢弃` `Discard` 选项,有助于存储空间回收。
- `SSD 仿真` `SSD Emulation` ) 选项,让虚拟机将虚拟磁盘视为 SSD 存储设备。
在弹出的对话框中,确认 `IO thread` 选项为 **勾选** 状态,并点击 `新增`
![虚拟机使用该磁盘](img/p04/vm_enable_hd.jpg)
导入的镜像仅具备 `3G` 磁盘空间,为方便后续使用,可通过 `qm` 命令直接将该磁盘调整至目标容量。
```bash
## 将镜像容量设置为 24G
$ qm disk resize 1001 scsi0 24G
#### 镜像扩容示例输出
Size of logical volume pve/vm-1001-disk-2 changed from 3.00 GiB (768 extents) to 24.00 GiB (6144 extents).
Logical volume pve/vm-1001-disk-2 successfully resized.
```
**单击** 选中该磁盘,然后使用 `磁盘操作` 菜单中的 `调整大小` 选项对磁盘镜像进行扩容。
![虚拟机磁盘扩容](img/p04/vm_hd_resize.jpg)
在弹出的对话框中,给该磁盘增加 `21G` 磁盘空间。
![虚拟机磁盘增加18G](img/p04/vm_hd_scale_up.jpg)
### 2.5.添加 CloudInit
为确保 Cloud-Init 能正常初始化系统,需为模板虚拟机添加 `CloudInit 设备`
同样通过 `新增` 菜单,选择 `CloudInit 设备`
![虚拟机添加ci](img/p04/vm_cloudinit.jpg)
`总线/设备` 选择 `SCSI` ,编号为 `1` ,存储路径需根据实际情况进行调整,演示为 `local-lvm`
![虚拟机ci参数](img/p04/vm_ci_details.jpg)
虚拟机硬件设备修改完成后,如下图所示。
![虚拟机全部硬件](img/p04/vm_hardware_all.jpg)
## 3.调整配置参数
进入左侧虚拟机 `选项` 页面,可以看到当前虚拟机的配置参数。
通常情况下,模板虚拟机的配置参数需要修改以下内容:
1. 开机自启动(模板无需修改,克隆的虚拟机需要修改)
2. 启动/关机顺序(模板无需修改,克隆的虚拟机需要修改)
3. 引导顺序(仅模板需要修改)
4. 使用平板指针(仅模板需要修改)
### 3.1.修改引导顺序
鼠标 **双击** `引导顺序` 选项,进入编辑界面。
`scsi0` 设备处勾选 “已启用” 复选框,并通过排序功能将其拖拽至首位,点击 `确定` 即可。
![虚拟机引导顺序](img/p04/vm_boot.jpg)
### 3.2.设置平板指针
关闭 `使用平板指针` 选项,可以一定程度上降低虚拟机的 CPU 使用率。
![虚拟机平板指针](img/p04/vm_tablet.jpg)
## 4.设置 Cloud-Init
进入左侧虚拟机 `Cloud-Init` 页面,可以看到当前虚拟机的初始化参数。
### 4.1.自动配置 IPv6
根据之前的网络规划,内网的 IP 地址段为 `172.16.1.0/24` ,因此模板虚拟机的参数如下。
|参数|值|说明|
|--|--|--|
|用户|`fox`|新系统的管理员账户|
|密码|`********`|使用强密码|
|DNS 域|`fox.internal`|内网域名(可选)|
|DNS 服务器|`172.16.1.1`|本机 DNS 服务器|
|SSH 公钥|`无`|使用秘钥登录服务器,暂不使用|
|升级程序包|`是`|启动时更新软件包,保持默认即可|
|IP 配置 (net0)|`ip=172.16.1.250/24,gw=172.16.1.1,ip6=auto`|模板的 IP 设置|
**额外说明:**
- 修改 `Cloud-Init` 参数时,需要在虚拟机关机情况下修改才会生效
- `DNS服务器` 参数支持输入多个 IPv4 / IPv6 地址,使用空格隔开
- 当前 `DNS服务器` 参数为主路由 LAN 口 IPv4 地址,确保虚拟机能正常联网
![CI网络配置](img/p04/vm_ci_dns.jpeg)
`Cloud-Init``IP 配置` IPv4 使用 `静态` 地址,IPv6 使用 `SLAAC` 自动配置,如下图所示。
![CI网络配置](img/p04/vm_ci_network_slaac.jpeg)
### 4.2.手动配置 IPv6
当主路由配置了 IPv6 ULA 网段,且希望指定内网 DNS 服务器的 IPv6 ULA 地址时,需要调整 `Cloud-Init` 参数。
本文 IPv6 ULA 演示地址段为 `fdac::/64` `DNS 服务器``IP 配置` 参数调整如下。
|参数|值|说明|
|--|--|--|
|DNS域|`fox.internal`|内网域名(可选)|
|DNS服务器|`172.16.1.1 fdac::1`|本机 DNS 服务器|
|IP配置(net0)|`ip=172.16.1.250/24,gw=172.16.1.1,ip6=fdac::fa/64`|模板的 IP 设置|
`DNS 服务器` 参数中需要加入主路由 LAN 口 IPv6 ULA 地址。
![CI网络配置](img/p04/vm_ci_dns_ula.jpeg)
`IP 配置` 参数,IPv4 使用 `静态` 地址,IPv6 同样使用 `静态` 地址,如下图所示。
IPv6 使用 `静态` 地址后,并不影响虚拟机通过主路由获取 IPv6 GUA 公网地址。
![CI网络配置](img/p04/vm_ci_network_static.jpeg)
## 5.设置备注信息
进入左侧虚拟机 `概要` 页面,修改虚拟机的备注信息。
```bash
### 服务器信息
- 系统: Debian 13
- 用途: 内网服务器 ( 模板 )
- 自启: 否
- 用户: fox
- IPv4 172.16.1.250/24
- IPv6 SLAAC
```
![虚拟机备注](img/p04/vm_notes.jpg)
至此,模板虚拟机创建完成,可将该虚拟机开机。
+438
View File
@@ -0,0 +1,438 @@
## 1.配置系统
在上一篇文章 [04.PVE创建模板虚拟机](./04.PVE创建模板虚拟机.md) 中,已经创建好了用于制作 `虚拟机模板` 的虚拟机。
此时将该虚拟机开机后,使用 `Cloud-Init` 中设置的账号密码进行登录。
### 1.1.配置 SSH
因为 Debian 的云镜像默认使用 SSH 秘钥登录,因此切换到左侧菜单的 `控制台` 进行登录。
![登录Debian操作系统](img/p05/os_login.jpg)
在虚拟机的命令行界面,使用 `vim` 编辑器编辑 `sshd` 服务的配置文件,执行以下命令。
`vim` 编辑器常用操作如下:
- 编辑文件:按下键盘 `i` 键,进入编辑模式。
- 保存文件:按下键盘 `Esc` 键,退出编辑模式,再输入组合键 `:wq` 即可保存。
```bash
## 编辑 SSH 配置文件
$ sudo vim /etc/ssh/sshd_config.d/10-server-sshd.conf
```
在配置文件中输入以下内容,并保存。
```bash
## SSH 配置项
PasswordAuthentication yes
PermitEmptyPasswords no
UseDNS no
```
修改完成后,需要重启 SSH 服务。
```bash
## 重启 ssh.service
$ sudo systemctl restart ssh.service
```
### 1.2.配置软件源
使用终端工具登录模板虚拟机,常用终端工具请参阅 [01.PVE系统安装](./01.PVE系统安装.md) 。
首先需要对 Debian 系统软件源进行修改,这里使用 [USTC](https://mirrors.ustc.edu.cn) 镜像站作为演示。
当系统版本发生变化时,请参考 USTC 镜像站的官方说明 [USTC Mirror Help - Debian](https://mirrors.ustc.edu.cn/help/debian.html) 。
使用如下命令对 `debian.sources` 配置文件进行修改。
```bash
## 配置 Debian 系统默认软件源脚本
$ sudo tee /etc/apt/sources.list.d/debian.sources >/dev/null <<'EOF'
Types: deb
URIs: https://mirrors.ustc.edu.cn/debian
Suites: trixie trixie-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
URIs: https://mirrors.ustc.edu.cn/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF
```
为了防止 `Cloud-Init` 服务意外修改软件源配置,需要添加文件保护,执行以下命令。
```bash
## 增加文件保护
$ sudo chattr +i /etc/apt/sources.list.d/debian.sources
## 检查文件保护
$ lsattr /etc/apt/sources.list.d/debian.sources
#### 示例输出
----i---------e------- /etc/apt/sources.list.d/debian.sources
```
### 1.3.安装软件
软件源设置完成后,需要更新系统,执行以下命令。
```bash
## 清理不必要的包
$ sudo bash -c 'apt clean && apt autoclean && apt autoremove --purge'
## 更新软件源
$ sudo apt update
## 更新系统
$ sudo apt full-upgrade
```
接下来安装系统必要软件,安装 `iperf3` 后,系统将询问是否将其作为系统服务开机自启,选择 `no` 即可。
```bash
## 安装系统软件
$ sudo apt install btop cronie curl git logrotate neovim qemu-guest-agent tmux zsh
## 安装系统自动更新工具
$ sudo apt install powermgmt-base unattended-upgrades
## 安装网络工具
$ sudo apt install knot-dnsutils lsof nftables sshguard
## 安装网络检测工具(可选)
$ sudo apt install iftop iperf iperf3
## 刷新 systemd 日志分类索引
$ sudo journalctl --update-catalog
## 写入磁盘
$ sudo sync
```
### 1.4.配置 ZSH
`Zsh` 是比 `Bash` 好用的 `Shell` 程序,使用 `oh-my-zsh` 进行配置。
```bash
## 安装 oh-my-zsh
$ sh -c "$(curl -fsSL https://install.ohmyz.sh)"
## 询问是否切换默认 shell,输入 Y
#### 示例输出
Time to change your default shell to zsh:
Do you want to change your default shell to zsh? [Y/n] y
## oh-my-zsh 安装后清理
$ cd && rm -rvf .bash_history .zsh_history .shell.pre-oh-my-zsh
```
### 1.5.配置默认编辑器
Debian 系统默认编辑器为 `nano` ,推荐将默认编辑器更换为 `neovim` ,执行以下命令。
```bash
## 修改系统默认编辑器(选择 nvim 所在条目,即可将 neovim 设为默认编辑器)
$ sudo update-alternatives --config editor
#### 系统默认编辑器示例输出
There are 4 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
* 0 /bin/nano 40 auto mode
1 /bin/nano 40 manual mode
2 /usr/bin/nvim 30 manual mode
3 /usr/bin/vim.basic 30 manual mode
4 /usr/bin/vim.tiny 15 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/nvim to provide /usr/bin/editor (editor) in manual mode
```
若需完全禁用 `neovim` 鼠标功能;即关闭所有鼠标交互,右键行为完全交给终端 / 控制台处理,需执行以下命令。
```bash
## 创建 nvim 配置目录
$ sudo mkdir -p /etc/xdg/nvim
## 配置 nvim 鼠标交互行为脚本
$ sudo tee /etc/xdg/nvim/sysinit.vim >/dev/null <<'EOF'
set mouse=
EOF
```
### 1.6.调整内核参数
由于该虚拟机将作为内网 DNS 服务器的克隆模板,需调整内核参数以优化性能。
编辑 **内核参数** 配置文件,执行以下命令。
```bash
## 编辑 内核参数 配置文件
$ sudo tee /etc/sysctl.d/99-sysctl.conf >/dev/null <<'EOF'
# This configuration file is customized by fox,
# Optimize sysctl parameters for local TPL server.
kernel.panic = 20
kernel.panic_on_oops = 1
net.core.default_qdisc = fq_codel
# Other adjustable system parameters
net.core.netdev_budget = 600
net.core.netdev_max_backlog = 4096
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_notsent_lowat = 131072
net.ipv4.tcp_rmem = 4096 524288 16777216
net.ipv4.tcp_wmem = 4096 524288 16777216
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
EOF
```
配置文件编辑完成后,重启系统或者执行以下命令让配置生效。
```bash
## 让内核参数生效
$ sudo sysctl --system
```
### 1.7.调整系统时间
默认情况下 Debian 云镜像的系统时间需要调整,执行以下命令将系统时区设置为中国时区。
```bash
## 设置系统时区
$ sudo timedatectl set-timezone Asia/Shanghai
## 检查系统时间
$ date -R
#### 系统时间示例输出
Mon, 10 Aug 2026 11:23:56 +0800
```
Debian 云镜像默认使用 `systemd-timesyncd.service` 同步时间,且需要调整为使用国内 NTP 服务器。
调整 NTP 服务器参数,执行以下命令。
```bash
## 创建 NTP 配置目录
$ sudo mkdir -p /etc/systemd/timesyncd.conf.d
## 创建 NTP 配置文件
$ sudo tee /etc/systemd/timesyncd.conf.d/10-server-ntp.conf >/dev/null <<'EOF'
# This configuration file is customized by fox,
# Optimize system NTP server.
[Time]
NTP=ntp.aliyun.com ntp.tencent.com cn.pool.ntp.org
EOF
```
配置文件编辑完成后,需重启 `systemd-timesyncd.service` 服务,并再次检查系统 NTP 服务器地址。
```bash
## 重启 systemd-timesyncd.service
$ sudo systemctl restart systemd-timesyncd.service
## 检查系统 NTP 服务器
$ sudo systemctl status systemd-timesyncd.service
```
如果输出以下类似内容,则表示系统 NTP 服务设置正确。
```bash
#### NTP 服务示例输出
● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; preset: enabled)
Active: active (running) since Mon 2026-08-10 11:24:43 CST; 5s ago
Invocation: 95cd4555913e45d8a7235347cf3d571a
Docs: man:systemd-timesyncd.service(8)
Main PID: 6516 (systemd-timesyn)
Status: "Contacted time server 203.107.6.88:123 (ntp.aliyun.com)."
Tasks: 2 (limit: 2189)
Memory: 1.6M (peak: 2.3M)
CPU: 136ms
CGroup: /system.slice/systemd-timesyncd.service
└─6516 /usr/lib/systemd/systemd-timesyncd
Aug 10 11:24:43 TPL01 systemd[1]: Starting systemd-timesyncd.service - Network Time Synchronization...
Aug 10 11:24:43 TPL01 systemd[1]: Started systemd-timesyncd.service - Network Time Synchronization.
Aug 10 11:24:43 TPL01 systemd-timesyncd[6516]: Contacted time server 203.107.6.88:123 (ntp.aliyun.com).
Aug 10 11:24:43 TPL01 systemd-timesyncd[6516]: Initial clock synchronization to Mon 2026-08-10 11:24:43.569158 CST.
```
### 1.8.配置自动更新
配置 Debian 云镜像的系统自动更新,与配置 PVE 系统自动更新方法基本一致,参阅 [03.PVE系统调整](./03.PVE系统调整.md) 。
配置系统更新之前,先检查当前系统定时器状态。
```bash
## 检查系统定时器
$ sudo systemctl status apt-daily-upgrade.timer
```
配置系统自动更新策略,执行以下命令,使用键盘 `左右方向键` 进行选择,`回车键` 进行确认。
```bash
## 配置自动更新策略
$ sudo dpkg-reconfigure -plow unattended-upgrades
## 选择 “是”
<Yes>
```
开始调整 `20auto-upgrades` 配置文件。
配置文件中,用来控制更新周期的参数为 `APT::Periodic::Unattended-Upgrade` `3` 表示更新周期为 `3` 天。
```bash
## 编辑 20auto-upgrades 配置文件
$ sudo tee /etc/apt/apt.conf.d/20auto-upgrades >/dev/null <<'EOF'
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "3";
APT::Periodic::AutocleanInterval "1";
APT::Periodic::CleanInterval "1";
EOF
```
进一步调整 `50unattended-upgrades` 配置文件。
```bash
## 编辑 50unattended-upgrades 配置文件
$ sudo editor /etc/apt/apt.conf.d/50unattended-upgrades
```
因为该配置文件很长,完整的配置文件可查看 [debian_tpl_50unattended_upgrades.conf](./src/debian/debian_tpl_50unattended_upgrades.conf) 以便对比。
```bash
## 删除以下行前面的注释符 // ,代表启用
"origin=Debian,codename=${distro_codename}-updates";
## 在配置文件末尾增加以下内容,代表启用,并调整参数
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
```
系统自动更新配置文件修改完成后,需调整自动更新定时器,执行以下命令。
```bash
## 配置系统定时器
$ sudo systemctl edit apt-daily-upgrade.timer
```
根据配置文件中的提示,在中间空白处填入以下内容。
```bash
## 定时器配置项
[Timer]
OnCalendar=
OnCalendar=02:00
RandomizedDelaySec=0
```
设置完成后,重启自动更新定时器并检查其状态,执行以下命令。
在输出结果中,看到系统自动更新的触发时间为 `02:00` 则表示设置正确。
```bash
## 重启触发器
$ sudo systemctl restart apt-daily-upgrade.timer
## 再次检查触发器状态
$ sudo systemctl status apt-daily-upgrade.timer
```
### 1.9.配置定时任务
本步骤为可选操作,主要设置系统定时重启。
```bash
## 创建本机定时重启任务
$ sudo tee /etc/cron.d/guest-os-reboot >/dev/null <<'EOF'
30 4 8,24 * * root /usr/sbin/shutdown --reboot now
EOF
## 设置定时任务文件权限
$ sudo chmod 0644 /etc/cron.d/guest-os-reboot
```
系统全局定时任务排期状态可使用以下命令进行查看。
```bash
## 查看系统定时任务
$ sudo cronnext -acl
```
### 1.10.清理系统
Debian 模板虚拟机已经配置完成,在将其转换为模板前需要对系统进行清理。
```bash
## 清理系统软件包
$ sudo bash -c 'apt clean && apt autoclean && apt autoremove --purge'
## 清理系统缓存
$ sudo bash -c 'find /var/cache/apt/ /var/lib/apt/lists/ /tmp/ -type f -print -delete'
## 重置机器标识符
$ sudo truncate -s 0 /etc/machine-id /var/lib/dbus/machine-id
## 清理系统日志
$ sudo bash -c 'find /var/log/ -type f -print -delete'
## 清理命令历史记录文件并关闭系统
$ rm -rvf ~/.bash_history ~/.zsh_history ~/.zcompdump* && history -c && sudo shutdown now
```
## 2.虚拟机转为模板
在模板虚拟机关机后,进入 PVE 的 WEB 管理界面。
在左侧虚拟机列表中,鼠标 **右键单击** 模板虚拟机,在弹出的菜单中选择 `转换成模板`
需要说明的是,虚拟机 `转换成模板` 的操作具有不可逆性。
若系统配置存在问题,仅能在该模板克隆的新虚拟机中修改,或删除现有模板并重新制作。
![虚拟机转模板](img/p05/vm_to_template.jpg)
至此 Debian 虚拟机模板制作完成。
+484
View File
@@ -0,0 +1,484 @@
## 1.克隆虚拟机
在上一篇文章 [05.PVE制作虚拟机模板](./05.PVE制作虚拟机模板.md) 中,已经制作好了虚拟机模板。
接下来将基于该模板克隆新虚拟机,并通过安装 DNS 服务器软件,完成内网 DNS 服务器的搭建。
鼠标 **右键单击** 虚拟机模板,在弹出的菜单中选择 `克隆`
![克隆虚拟机](img/p06/vm_clone.jpg)
在弹出的虚拟机克隆对话框中,根据实际情况及下方表格内容,修改虚拟机参数。
|参数|值|说明|
|--|--|--|
|目标节点|`node01`|当前 PVE 服务器节点|
|VM ID|`201`|可自定义,不能与现存虚拟机 `VM ID` 相同|
|名称|`DNS01`|可自定义,`Cloud-Init` 将使用该名称作为虚拟机 `hostname` |
|模式|`完整克隆`|选择虚拟机的克隆模式|
|目标存储|`local-lvm`|克隆出的虚拟机文件存储位置|
修改参数后,点击 `克隆` ,即可使用该模板克隆出新的虚拟机。
![克隆虚拟机参数](img/p06/vm_clone_vmid.jpeg)
## 2.调整 Cloud-Init
克隆出来的虚拟机的 `Cloud-Init` 参数默认与模板完全一致。
根据 **内部网络地址** 规划,内网 DNS 服务器 IPv4 地址规划如下:
- `172.16.1.2/24`
- `172.16.1.3/24`
因此需要调整新虚拟机的 `Cloud-Init` 参数。
- `IP配置` 中的 IPv4 地址参数为 `172.16.1.2/24` ,网关保持 `172.16.1.1` 不变。
- `IP配置` 中的 IPv6 地址参数为 `auto` ,网关保持为空。
需要注意的是,如果修改了 `用户` 参数,相当于新建了一个系统管理员,之前设置的 `oh-my-zsh` 需要在新管理员下重新设置。
![调整新虚拟机Cloud-Init](img/p06/vm_clone_ci_slaac.jpeg)
当主路由配置了 IPv6 ULA 网段,内网 DNS 服务器 IPv6 ULA 地址规划如下:
- `fdac::2/64`
- `fdac::3/64`
此时需进一步调整新虚拟机的 `Cloud-Init` 参数,让该虚拟机使用指定的 IPv6 ULA 地址,参数如下。
![调整新虚拟机Cloud-Init](img/p06/vm_clone_ci_static.jpeg)
## 3.调整配置参数
在 [04.PVE创建模板虚拟机](./04.PVE创建模板虚拟机.md) 中提到过,新虚拟机需要修改配置参数才能自动启动。
进入左侧虚拟机 `选项` 页面,将虚拟机 `开机自启动` 参数设置为 `是`
![克隆虚拟机自动启动](img/p06/vm_clone_autostart.jpeg)
鼠标 **双击** `启动/关机顺序` 选项,可调整虚拟机的自动开机参数。
`启动/关机顺序``2` ,表示该虚拟机第 `2` 个启动,倒数第 `2` 个关机。
`启动延时``15` ,表示该虚拟机启动后,延迟 `15` 秒再启动下一个虚拟机。
![克隆虚拟机自动启动顺序](img/p06/vm_clone_autostart_order.jpeg)
## 4.调整系统端口
设置完成后,将该虚拟机开机,使用终端工具登录,并执行以下命令检查端口占用。
```bash
## 检查 53 端口占用
$ sudo lsof -n -i :53
#### 端口占用示例输出
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 357 systemd-resolve 18u IPv4 3293 0t0 UDP 127.0.0.53:domain
systemd-r 357 systemd-resolve 19u IPv4 3294 0t0 TCP 127.0.0.53:domain (LISTEN)
systemd-r 357 systemd-resolve 20u IPv4 3295 0t0 UDP 127.0.0.54:domain
systemd-r 357 systemd-resolve 21u IPv4 3296 0t0 TCP 127.0.0.54:domain (LISTEN)
```
当前系统 `53` 端口被 `systemd-resolved.service` 占用,会导致设置 DNS 服务时监听端口失败。
为了正常使用 `53` 端口,需要对 `systemd-resolved.service` 进行配置,执行以下命令。
```bash
## 创建 systemd-resolved 配置目录
$ sudo mkdir -p /etc/systemd/resolved.conf.d
## 创建 systemd-resolved 配置文件
$ sudo tee /etc/systemd/resolved.conf.d/10-server-dns.conf >/dev/null <<'EOF'
# This configuration file is customized by fox,
# Optimize system resolve parameters for local DNS server.
[Resolve]
DNS=127.0.0.1
DNS=::1
DNSStubListener=no
EOF
```
配置文件编辑完成后,还需调整系统 `resolv.conf` 配置文件,执行以下命令。
```bash
## 创建 resolv.conf 软链接
$ sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
```
配置完成后,需重启 `systemd-resolved.service` 服务,并再次检查系统 `53` 端口占用。
```bash
## 重启 systemd-resolved.service
$ sudo systemctl restart systemd-resolved.service
```
## 5. Adguard Home
`Adguard Home` 将采用 `snap` 形式安装,执行以下命令。
```bash
## 安装 Snap
$ sudo apt install snapd
## 安装 Adguard Home
$ sudo snap install adguard-home
```
### 5.1.自动更新
查看 `Snap` 当前的更新策略,执行以下命令。
```bash
## 显示当前 Snap 自动更新设置
$ sudo snap refresh --time
```
`Snap` 自动更新时间设置为每天 `2:30-3:30``14:30-15:30` 两个时间段。
```bash
## 修改 Snap 自动更新时间
$ sudo snap set system refresh.timer=2:30-3:30,14:30-15:30
## 其他 Snap 自动更新时间设置语法参考
$ sudo snap set system refresh.timer=mon,2:30,,fri,2:30
```
### 5.2.配置 Adguard Home
关于 `Adguard Home` 配置相关内容,请参阅 [Adguard Home 折腾手记](https://gitee.com/callmer/agh_toss_notes) 。
### 5.3.定时任务
本步骤为可选操作,主要用于设置 `Adguard Home` 定时重启。
```bash
## 创建 Adguard Home 定时重启任务
$ sudo tee /etc/cron.d/adguard-home-restart >/dev/null <<'EOF'
30 4 * * * root /usr/bin/snap restart adguard-home
EOF
## 设置定时任务文件权限
$ sudo chmod 0644 /etc/cron.d/adguard-home-restart
```
## 6. SmartDNS
若需使用 `SmartDNS` 代替 `Adguard Home` ,可使用 Debian 官方源进行安装,但其版本通常较为 “过时” 。
因此,更推荐使用其 Github 仓库中的最新稳定版进行安装,官方仓库请参阅 [pymumu/smartdns](https://github.com/pymumu/smartdns/releases) 。
多数情况下,`SmartDNS` 足以提供良好的 DNS 解析服务,但为了进一步优化 DNS 解析流程,推荐与 `Dnsmasq` 嵌套使用。
```bash
## 安装 Dnsmasq
$ sudo apt install dnsmasq
```
检查 `dnsmasq.service` 服务状态,确保该服务开机自启。
```bash
## 检查 dnsmasq.service
$ sudo systemctl status dnsmasq.service
## 设置 dnsmasq.service 开机自启
$ sudo systemctl enable dnsmasq.service
## 停止 dnsmasq.service
$ sudo systemctl stop dnsmasq.service
```
下载 `SmartDNS` 当前最新版本时,请根据系统架构选择合适的版本,执行以下命令。
```bash
## 下载 SmartDNS 安装包
$ curl -LR https://github.com/pymumu/smartdns/releases/download/Release48.4/smartdns.1.2026.08.05-0921.x86_64-linux-all.tar.gz | tar -xz -C /tmp
## 安装 SmartDNS
$ sudo /tmp/smartdns/install -i
```
后续 `SmartDNS` 推出新版本需原位升级时:先下载最新版本,再将以下命令替代原安装命令执行,升级后现有配置不会丢失。
```bash
## 升级 SmartDNS
$ sudo /tmp/smartdns/install -U
```
修改 `SmartDNS` 配置之前,需检查 `smartdns.service` 服务状态,确保该服务开机自启。
```bash
## 检查 smartdns.service
$ sudo systemctl status smartdns.service
## 设置 smartdns.service 开机自启
$ sudo systemctl enable smartdns.service
```
### 6.1. SmartDNS 附加配置
本步骤为可选操作,通过安装 `SmartDNS` 附加配置文件,以达到屏蔽广告或加速中国境内域名解析速度的目的。
若需使用 `SmartDNS` 屏蔽广告,则需下载广告规则配置文件。
```bash
## 创建 SmartDNS 配置目录
$ sudo mkdir -p /etc/smartdns.d
## 下载广告规则配置文件
$ sudo curl -LR -o /etc/smartdns.d/anti-ad.smartdns.conf https://anti-ad.net/anti-ad-for-smartdns.conf
```
`SmartDNS` 的加速规则通过 `bash` 脚本安装,脚本生成的配置文件位于 `/etc/smartdns.d` 目录。
关于脚本的详细介绍,请参阅 [SmartDNS China List 安装脚本](https://gitee.com/callmer/smartdns_china_list_installer) 。
```bash
## 下载加速规则安装脚本
$ sudo curl -LR -o /usr/local/bin/smartdns-cnlist https://gitee.com/callmer/smartdns_china_list_installer/raw/main/smartdns-china-list-installer.sh
## 设置脚本可执行权限
$ sudo chmod +x /usr/local/bin/smartdns-cnlist
## 设置脚本文件防篡改
$ sudo chattr +i /usr/local/bin/smartdns-cnlist
## 执行脚本
$ sudo /usr/local/bin/smartdns-cnlist
```
### 6.2.定时任务
本步骤为可选操作,主要用于设置 `SmartDNS` 定时更新附加配置文件和定时重启。
若使用了 `SmartDNS` 加速规则的安装脚本,由于脚本自带服务重启功能,因此定时任务可设置如下。
```bash
## 创建 SmartDNS 规则更新任务
$ sudo tee /etc/cron.d/smartdns-rules-update >/dev/null <<'EOF'
20 9 * * * root /usr/bin/curl --retry-connrefused --retry 5 --retry-delay 5 --retry-max-time 60 -fsSLR -o /etc/smartdns.d/anti-ad.smartdns.conf https://anti-ad.net/anti-ad-for-smartdns.conf
30 9 * * * root /usr/local/bin/smartdns-cnlist
EOF
## 设置定时任务文件权限
$ sudo chmod 0644 /etc/cron.d/smartdns-rules-update
```
若仅需定时重启 `SmartDNS` 服务,可使用以下命令覆盖该定时任务文件。
```bash
## 创建 SmartDNS 规则更新任务
$ sudo tee /etc/cron.d/smartdns-rules-update >/dev/null <<'EOF'
20 9 * * * root /usr/bin/curl --retry-connrefused --retry 5 --retry-delay 5 --retry-max-time 60 -fsSLR -o /etc/smartdns.d/anti-ad.smartdns.conf https://anti-ad.net/anti-ad-for-smartdns.conf
30 9 * * * root /usr/bin/systemctl restart smartdns.service
EOF
## 设置定时任务文件权限
$ sudo chmod 0644 /etc/cron.d/smartdns-rules-update
```
### 6.3. SmartDNS 主配置
`SmartDNS` 配置较为复杂,可按需制定各类 DNS 请求规则,建议先查阅官方提供的 [配置指导](https://pymumu.github.io/smartdns/config/basic-config/) 和 [配置选项](https://pymumu.github.io/smartdns/configuration/) 。
修改 `SmartDNS` 主配置文件之前,建议关闭 `SmartDNS` 并清理 DNS 缓存文件。
```bash
## 关闭 smartdns.service
$ sudo systemctl stop smartdns.service
## 清理进程标识文件
$ sudo rm -rvf /var/run/smartdns.pid /run/smartdns.pid
```
`SmartDNS` 的主配置文件一般位于 `/etc/smartdns` 目录下,修改配置文件之前,执行以下命令将其备份。
```bash
## 备份 SmartDNS 主配置文件
$ sudo mv /etc/smartdns/smartdns.conf /etc/smartdns/smartdns.conf.bak
```
创建 `SmartDNS` 主配置文件,执行以下命令。
```bash
## 创建 SmartDNS 主配置文件
$ sudo editor /etc/smartdns/smartdns.conf
```
在编辑器对话框中输入以下内容,并保存。
**额外说明:**
- `SmartDNS` 端口监听参数为 `6053@lo` WebUI 端口监听参数为 `5380` ,请根据实际情况进行调整
- WebUI 默认用户名密码为 `admin/password` ,若需公网访问建议将默认密码修改为强密码
```bash
# This configuration file is customized by fox,
# Optimize SmartDNS parameters for local DNS server.
#
# For use common DNS server as upstream DNS server,
# please modify 'server' parameter according to
# your network environment.
#
# eg:
# server 223.5.5.5
# server 180.184.1.1
# server 119.29.29.29
# server 114.114.114.114
# server 2402:4e00::
# server 2400:3200::1
conf-file /etc/smartdns.d/*.conf
log-level notice
log-console yes
log-size 16M
log-num 8
audit-enable yes
audit-SOA yes
audit-size 16M
audit-num 8
plugin smartdns_ui.so
smartdns-ui.ip https://[::]:5380
smartdns-ui.token-expire 1800
smartdns-ui.max-query-log-age 604800
bind [::]:6053@lo
bind-tcp [::]:6053@lo
cache-size 32768
max-query-limit 1024
max-reply-ip-num 16
prefetch-domain yes
serve-expired yes
serve-expired-ttl 129600
serve-expired-reply-ttl 30
serve-expired-prefetch-time 28800
rr-ttl-min 60
rr-ttl-max 28800
rr-ttl-reply-max 14400
server-tcp 180.184.1.1 -bootstrap-dns
server-tcp 101.226.4.6 -bootstrap-dns
server-tcp 2400:3200::1 -bootstrap-dns
server-tcp 2400:3200:baba::1 -bootstrap-dns
server-tls dot.pub
server-tls dns.alidns.com
server-https https://doh.pub/dns-query
server-https https://dns.alidns.com/dns-query
server-h3 h3://dns.alidns.com/dns-query -fallback
server-https https://doh.360.cn/dns-query -fallback
```
`SmartDNS` 主配置文件配置完成后,执行以下命令修正文件权限
```bash
## 修正 SmartDNS 主配置文件权限
$ sudo chmod 0640 /etc/smartdns/smartdns.conf
```
### 6.4.配置 Dnsmasq
`Dnsmasq` 的主配置文件一般位于 `/etc` 目录下,修改配置文件之前,执行以下命令。
```bash
## 创建 Dnsmasq 配置目录
$ sudo mkdir -p /etc/dnsmasq.d
```
创建 `Dnsmasq` 主配置文件,执行以下命令。
```bash
## 创建 Dnsmasq 主配置文件
$ sudo editor /etc/dnsmasq.d/10-server-dnsmasq.conf
```
在编辑器对话框中输入以下内容,并保存。
**额外说明:**
- 请根据系统内存使用情况,调整缓存参数 `cache-size`
- 配置文件中监听的网卡名为 `eth0` ,请根据实际情况进行调整
- 配置文件中内网域名为 `fox.internal` ,请根据实际情况进行调整
- `Dnsmasq` 有且仅有 `SmartDNS` 作为上游 DNS 服务器
```bash
# This configuration file is customized by fox,
# Optimize dnsmasq parameters for local DNS server.
# Main Config
log-facility=/var/log/dnsmasq.log
log-async=20
cache-size=2048
max-cache-ttl=7200
fast-dns-retry=1800
interface=eth0
bind-dynamic
bogus-priv
domain-needed
no-hosts
no-ident
no-resolv
no-round-robin
rebind-localhost-ok
stop-dns-rebind
rebind-domain-ok=/fox.internal/
# DNS Filter
local=/alt/
local=/bind/
local=/example/
local=/home.arpa/
local=/internal/
local=/invalid/
local=/lan/
local=/local/
local=/localhost/
local=/onion/
local=/test/
# DNS Server
server=/fox.internal/172.16.1.1
server=127.0.0.1#6053
```
## 7.清理系统
内网 DNS 服务器已部署配置完毕,正式投产前,可按需对系统进行清理优化。
```bash
## 清理系统软件包
$ sudo bash -c 'apt clean && apt autoclean && apt autoremove --purge'
## 清理系统缓存
$ sudo bash -c 'find /var/cache/apt/ /var/lib/apt/lists/ /tmp/ -type f -print -delete'
## 清理 SmartDNS 缓存、持久化数据文件(WebUI 自定义密码存储于此文件)
$ sudo bash -c 'find /var/cache/smartdns/ /var/lib/smartdns/ -type f -print -delete'
## 清理系统日志
$ sudo bash -c 'find /var/log/ -type f -print -delete'
## 清理命令历史记录文件并关闭系统
$ rm -rvf ~/.bash_history ~/.zsh_history ~/.zcompdump* && history -c && sudo shutdown now
```
+762
View File
@@ -0,0 +1,762 @@
## 0.前期准备
某些业务场景下需要构建安全可靠的网络隧道,来打通异地内网环境或从外部访问内网的私有资源。
经过实际测试,当 TS 服务器具有 IPv6 GUA 地址时,能稳定建立隧道。
本文将使用 Debian 云镜像以及 `Tailscale` 来制作内网组网服务器。
对于虚拟机创建部分,请参考 [04.PVE创建模板虚拟机](./04.PVE创建模板虚拟机.md) ,其他 `Cloud-Init` 相关参数如下。
|参数|值|说明|
|--|--|--|
|虚拟机名称|`SVR01`| TS 服务器 `主机名` |
|DNS 域|`fox.internal`| TS 服务器 `Cloud-Init` |
|DNS 服务器|`172.16.1.1`| TS 服务器 `Cloud-Init` |
|IPv4|`172.16.1.4/24`| TS 服务器 `Cloud-Init` |
|IPv4 网关|`172.16.1.1`| TS 服务器 `Cloud-Init` |
|IPv6|`SLAAC`| TS 服务器 `Cloud-Init` |
## 1.配置系统
由于 TS 服务器具备路由功能,所以在配置方法和系统参数方面与内网 DNS 服务器有一些区别。
### 1.1.配置 SSH
与配置 Debian 模板虚拟机时一样,首先需要调整系统的 SSH 登录权限参数。
在虚拟机的命令行界面,使用 `vim` 编辑器编辑 `sshd` 服务的配置文件,执行以下命令。
```bash
## 编辑 SSH 配置文件
$ sudo vim /etc/ssh/sshd_config.d/10-server-sshd.conf
```
在配置文件中输入以下内容,并保存。
```bash
## SSH 配置项
PasswordAuthentication yes
PermitEmptyPasswords no
UseDNS no
```
修改完成后,需要重启 SSH 服务。
```bash
## 重启 ssh.service
$ sudo systemctl restart ssh.service
```
### 1.2.配置软件源
使用如下命令对 `debian.sources` 配置文件进行修改。
```bash
## 配置 Debian 系统默认软件源脚本
$ sudo tee /etc/apt/sources.list.d/debian.sources >/dev/null <<'EOF'
Types: deb
URIs: https://mirrors.ustc.edu.cn/debian
Suites: trixie trixie-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
Types: deb
URIs: https://mirrors.ustc.edu.cn/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF
```
为了防止 `Cloud-Init` 服务意外修改软件源配置,需要添加文件保护,执行以下命令。
```bash
## 增加文件保护
$ sudo chattr +i /etc/apt/sources.list.d/debian.sources
## 检查文件保护
$ lsattr /etc/apt/sources.list.d/debian.sources
#### 示例输出
----i---------e------- /etc/apt/sources.list.d/debian.sources
```
### 1.3.安装软件
软件源设置完成后,需要更新系统,执行以下命令。
```bash
## 清理不必要的包
$ sudo bash -c 'apt clean && apt autoclean && apt autoremove --purge'
## 更新软件源
$ sudo apt update
## 更新系统
$ sudo apt full-upgrade
```
接下来安装系统必要软件,安装 `iperf3` 后,系统将询问是否将其作为系统服务开机自启,选择 `no` 即可。
```bash
## 安装系统软件
$ sudo apt install btop cronie curl git logrotate neovim qemu-guest-agent tmux zsh
## 安装系统自动更新工具
$ sudo apt install powermgmt-base unattended-upgrades
## 安装网络工具
$ sudo apt install conntrack dnsmasq ethtool knot-dnsutils lsof networkd-dispatcher nftables sshguard
## 安装 TS
$ curl -fsSL https://tailscale.com/install.sh | sh
## 安装网络检测工具(可选)
$ sudo apt install iftop iperf iperf3
## 刷新 systemd 日志分类索引
$ sudo journalctl --update-catalog
## 写入磁盘
$ sudo sync
```
### 1.4.配置 ZSH
`Zsh` 是比 `Bash` 好用的 `Shell` 程序,使用 `oh-my-zsh` 进行配置。
```bash
## 安装 oh-my-zsh
$ sh -c "$(curl -fsSL https://install.ohmyz.sh)"
## 询问是否切换默认 shell,输入 Y
#### 示例输出
Time to change your default shell to zsh:
Do you want to change your default shell to zsh? [Y/n] y
## oh-my-zsh 安装后清理
$ cd && rm -rvf .bash_history .zsh_history .shell.pre-oh-my-zsh
```
### 1.5.配置默认编辑器
Debian 系统默认编辑器为 `nano` ,推荐将默认编辑器更换为 `neovim` ,执行以下命令。
```bash
## 修改系统默认编辑器(选择 nvim 所在条目,即可将 neovim 设为默认编辑器)
$ sudo update-alternatives --config editor
#### 系统默认编辑器示例输出
There are 4 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
* 0 /bin/nano 40 auto mode
1 /bin/nano 40 manual mode
2 /usr/bin/nvim 30 manual mode
3 /usr/bin/vim.basic 30 manual mode
4 /usr/bin/vim.tiny 15 manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/nvim to provide /usr/bin/editor (editor) in manual mode
```
若需完全禁用 `neovim` 鼠标功能;即关闭所有鼠标交互,右键行为完全交给终端 / 控制台处理,需执行以下命令。
```bash
## 创建 nvim 配置目录
$ sudo mkdir -p /etc/xdg/nvim
## 配置 nvim 鼠标交互行为脚本
$ sudo tee /etc/xdg/nvim/sysinit.vim >/dev/null <<'EOF'
set mouse=
EOF
```
### 1.6.调整内核模块
编辑 **内核模块** 配置文件,执行以下命令。
```bash
## 创建 内核模块 配置文件
$ sudo tee /etc/modules-load.d/10-server-modules.conf >/dev/null <<'EOF'
# This configuration file is customized by fox,
# Optimize netfilter related modules at system boot.
nf_conntrack
EOF
```
### 1.7.调整内核参数
编辑 **内核参数** 配置文件,执行以下命令。
```bash
## 编辑 内核参数 配置文件
$ sudo tee /etc/sysctl.d/99-sysctl.conf >/dev/null <<'EOF'
# This configuration file is customized by fox,
# Optimize sysctl parameters for local TS server.
kernel.panic = 20
kernel.panic_on_oops = 1
net.core.default_qdisc = fq_pie
net.ipv4.tcp_congestion_control = bbr
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.ipv6.conf.default.forwarding = 1
# Other adjustable system parameters
net.core.netdev_budget = 800
net.core.netdev_max_backlog = 8192
net.core.rmem_default = 262144
net.core.wmem_default = 262144
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.all.rp_filter = 2
net.ipv4.conf.default.rp_filter = 2
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.igmp_max_memberships = 256
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_notsent_lowat = 131072
net.ipv4.tcp_rmem = 4096 1048576 67108864
net.ipv4.tcp_wmem = 4096 1048576 67108864
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
net.netfilter.nf_conntrack_acct = 1
net.netfilter.nf_conntrack_checksum = 1
net.netfilter.nf_conntrack_tcp_timeout_established = 7440
EOF
```
配置文件编辑完成后,重启系统或者执行以下命令让配置生效。
```bash
## 让内核参数生效
$ sudo sysctl --system
```
### 1.8.调整系统时间
默认情况下 Debian 云镜像的系统时间需要调整,执行以下命令将系统时区设置为中国时区。
```bash
## 设置系统时区
$ sudo timedatectl set-timezone Asia/Shanghai
## 检查系统时间
$ date -R
```
Debian 云镜像默认使用 `systemd-timesyncd.service` 同步时间,且需要调整为使用国内 NTP 服务器。
调整 NTP 服务器参数,执行以下命令。
```bash
## 创建 NTP 配置目录
$ sudo mkdir -p /etc/systemd/timesyncd.conf.d
## 创建 NTP 配置文件
$ sudo tee /etc/systemd/timesyncd.conf.d/10-server-ntp.conf >/dev/null <<'EOF'
# This configuration file is customized by fox,
# Optimize system NTP server.
[Time]
NTP=ntp.aliyun.com ntp.tencent.com cn.pool.ntp.org
EOF
```
配置文件编辑完成后,需重启 `systemd-timesyncd.service` 服务,并再次检查系统 NTP 服务器地址。
```bash
## 重启 systemd-timesyncd.service
$ sudo systemctl restart systemd-timesyncd.service
## 检查系统 NTP 服务器
$ sudo systemctl status systemd-timesyncd.service
```
### 1.9.配置自动更新
配置系统自动更新策略,执行以下命令,使用键盘 `左右方向键` 进行选择,`回车键` 进行确认。
```bash
## 配置自动更新策略
$ sudo dpkg-reconfigure -plow unattended-upgrades
## 选择 “是”
<Yes>
```
开始调整 `20auto-upgrades` 配置文件。
配置文件中,用来控制更新周期的参数为 `APT::Periodic::Unattended-Upgrade` `5` 表示更新周期为 `5` 天。
```bash
## 编辑 20auto-upgrades 配置文件
$ sudo tee /etc/apt/apt.conf.d/20auto-upgrades >/dev/null <<'EOF'
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "5";
APT::Periodic::AutocleanInterval "1";
APT::Periodic::CleanInterval "1";
EOF
```
进一步调整 `50unattended-upgrades` 配置文件。
```bash
## 编辑 50unattended-upgrades 配置文件
$ sudo editor /etc/apt/apt.conf.d/50unattended-upgrades
```
因为该配置文件很长,完整的配置文件可查看 [debian_ts_50unattended_upgrades.conf](./src/debian/debian_ts_50unattended_upgrades.conf) 以便对比。
```bash
## 删除以下行前面的注释符 // ,代表启用
"origin=Debian,codename=${distro_codename}-updates";
## 添加 TS 更新项目
"origin=Tailscale,codename=${distro_codename},label=Tailscale";
## 在配置文件末尾增加以下内容,代表启用,并调整参数
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "13:00";
```
系统自动更新配置文件修改完成后,需调整自动更新定时器,执行以下命令。
```bash
## 配置系统定时器
$ sudo systemctl edit apt-daily-upgrade.timer
```
根据配置文件中的提示,在中间空白处填入以下内容。
```bash
## 定时器配置项
[Timer]
OnCalendar=
OnCalendar=12:00
RandomizedDelaySec=0
```
设置完成后,重启自动更新定时器并检查其状态,执行以下命令。
在输出结果中,看到系统自动更新的触发时间为 `12:00` 则表示设置正确。
```bash
## 重启触发器
$ sudo systemctl restart apt-daily-upgrade.timer
## 再次检查触发器状态
$ sudo systemctl status apt-daily-upgrade.timer
```
### 1.10.配置防火墙
修改防火墙配置之前,需检查 `nftables.service` 服务状态,确保该服务开机自启。
```bash
## 检查 nftables.service
$ sudo systemctl status nftables.service
## 设置 nftables.service 开机自启
$ sudo systemctl enable nftables.service
```
由于防火墙规则内容较多,请打开文件 [debian_ts_nftables.conf](./src/debian/debian_ts_nftables.conf) ,复制全文内容,完整替换 `nftables` 配置文件中的现有配置。
```bash
## 编辑 nftables 配置文件
$ sudo editor /etc/nftables.conf
```
配置完成后,先检查防火墙规则,再重启 `nftables.service` 服务。
```bash
## 检查 nftables 配置文件
$ sudo nft --check --file /etc/nftables.conf
## 重启 nftables.service
$ sudo systemctl restart nftables.service
```
### 1.11.调整系统端口
为了正常使用 `53` 端口,需要对 `systemd-resolved.service` 进行配置,执行以下命令。
```bash
## 创建 systemd-resolved 配置目录
$ sudo mkdir -p /etc/systemd/resolved.conf.d
## 创建 systemd-resolved 配置文件
$ sudo tee /etc/systemd/resolved.conf.d/10-server-dns.conf >/dev/null <<'EOF'
# This configuration file is customized by fox,
# Optimize system resolve parameters for local TS server.
[Resolve]
DNS=127.0.0.1
DNS=::1
DNSStubListener=no
EOF
```
配置文件编辑完成后,还需调整系统 `resolv.conf` 配置文件,执行以下命令。
```bash
## 创建 resolv.conf 软链接
$ sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
```
配置完成后,需重启 `systemd-resolved.service` 服务。
```bash
## 重启 systemd-resolved.service
$ sudo systemctl restart systemd-resolved.service
```
### 1.12.配置 Dnsmasq
检查 `dnsmasq.service` 服务状态,确保该服务开机自启。
```bash
## 检查 dnsmasq.service
$ sudo systemctl status dnsmasq.service
## 设置 dnsmasq.service 开机自启
$ sudo systemctl enable dnsmasq.service
```
`Dnsmasq` 的主配置文件一般位于 `/etc` 目录下,修改配置文件之前,执行以下命令。
```bash
## 创建 Dnsmasq 配置目录
$ sudo mkdir -p /etc/dnsmasq.d
```
创建 `Dnsmasq` 主配置文件,执行以下命令。
```bash
## 创建 Dnsmasq 主配置文件
$ sudo editor /etc/dnsmasq.d/10-server-dnsmasq.conf
```
在编辑器对话框中输入以下内容,并保存。
**额外说明:**
- 请根据系统内存使用情况,调整缓存参数 `cache-size`
- 配置文件中监听的网卡名为 `eth0``tailscale0` ,请根据实际情况进行调整
- 配置文件中内网域名为 `fox.internal` ,请根据实际情况进行调整
- `Dnsmasq` 上游 DNS 服务器分为三类,请根据实际情况进行调整
- `server=/ts.net/100.100.100.100` TS 服务 `MagicDNS` 专用 DNS 服务器
- `server=/fox.internal/172.16.1.1` :内网域名解析 DNS 服务器,通常为主路由地址
- `server` 参数中的其他 DNS 服务器供 TS 服务器自身及其下游设备使用
```bash
# This configuration file is customized by fox,
# Optimize dnsmasq parameters for local TS server.
# Main Config
log-facility=/var/log/dnsmasq.log
log-async=20
cache-size=2048
max-cache-ttl=7200
fast-dns-retry=1800
interface=eth0,tailscale0
bind-dynamic
bogus-priv
domain-needed
no-hosts
no-ident
no-resolv
no-round-robin
rebind-localhost-ok
stop-dns-rebind
rebind-domain-ok=/fox.internal/
# DNS Filter
local=/alt/
local=/bind/
local=/example/
local=/home.arpa/
local=/internal/
local=/invalid/
local=/lan/
local=/local/
local=/localhost/
local=/onion/
local=/test/
# DNS Server
server=/ts.net/100.100.100.100
server=/fox.internal/172.16.1.1
server=172.16.1.1
```
配置完成后,需重启 `dnsmasq.service` 服务。
```bash
## 重启 dnsmasq.service
$ sudo systemctl restart dnsmasq.service
```
## 2. Tailscale
根据不同的启动参数,TS 服务将具有不同的业务能力。
### 2.1.网卡调优
根据 TS 官方文档 [Performance best practices](https://tailscale.com/docs/reference/best-practices/performance) 的技术指引,Linux 转发节点可通过调整网卡 Offload 参数提升 UDP 性能。
为了在网卡重新上线后自动恢复参数,本文使用 `networkd-dispatcher` 监听 `routable` 状态。
优化脚本直接使用事件中的 `IFACE`,仅处理由 `systemd-networkd` 配置的底层网卡,并跳过 `tailscale0` 和其他 TUN 设备。
首先检查 TS 服务器的底层出口网卡。
```bash
## 检查 systemd-networkd 状态
$ systemctl is-active systemd-networkd
## 获取由 networkd 配置且已上线的以太网卡
$ NETDEV=$(networkctl list --no-legend --no-pager | awk '$3 == "ether" && $4 == "routable" && $5 == "configured" {print $2; exit}')
## 检查网卡管理状态
$ networkctl status "$NETDEV"
```
`systemd-networkd` 应显示为 `active`,底层出口网卡应显示为 `State: routable (configured)`
检查完成后,创建 `networkd-dispatcher``routable` 事件脚本。
```bash
## 创建 routable 事件脚本目录
$ sudo install -d -o root -g root -m 0755 /etc/networkd-dispatcher/routable.d
## 创建 TS 网卡优化脚本
$ sudo editor /etc/networkd-dispatcher/routable.d/50-tailscale
```
在脚本文件中输入以下内容,并保存。
**额外说明:**
- 脚本会记录跳过、成功或失败原因,并在执行失败时保留 `ethtool` 的原始退出状态
- `networkd-dispatcher` 会记录非零退出警告,但不会停止服务或立即重试
- 网卡再次进入 `routable` 状态时,脚本会重新执行
```bash
#!/bin/sh
#
# This script is customized by fox,
# Optimize NIC offload parameters for local TS server.
#
if [ -z "${IFACE:-}" ]; then
echo "Error: IFACE is not set." >&2
exit 1
fi
if [ -z "${AdministrativeState:-}" ]; then
echo "Error: AdministrativeState is not set for $IFACE." >&2
exit 1
fi
if [ "$AdministrativeState" != "configured" ]; then
echo "Skipping network device $IFACE: administrative state is $AdministrativeState."
exit 0
fi
if [ ! -e "/sys/class/net/$IFACE/device" ]; then
echo "Skipping network device $IFACE: no hardware device is associated."
exit 0
fi
ETHTOOL_PATH=$(command -v ethtool 2>/dev/null)
if [ -z "$ETHTOOL_PATH" ]; then
echo "Error: ethtool command not found in PATH. Please install ethtool." >&2
exit 127
fi
if "$ETHTOOL_PATH" -K "$IFACE" rx-udp-gro-forwarding on rx-gro-list off; then
echo "Configured network device $IFACE using $ETHTOOL_PATH successfully."
else
exit_status=$?
echo "Error: $ETHTOOL_PATH failed to configure network device $IFACE (exit status $exit_status)." >&2
exit "$exit_status"
fi
```
`networkd-dispatcher` 仅执行属于 `root` 且具有可执行权限的脚本,执行以下命令进行设置。
```bash
## 设置脚本所有者
$ sudo chown root:root /etc/networkd-dispatcher/routable.d/50-tailscale
## 设置脚本可执行权限
$ sudo chmod 0755 /etc/networkd-dispatcher/routable.d/50-tailscale
## 设置脚本文件防篡改
$ sudo chattr +i /etc/networkd-dispatcher/routable.d/50-tailscale
```
设置完成后,手动模拟网卡事件,检查脚本能否正常应用参数。
```bash
## 测试 TS 网卡优化脚本
$ sudo env IFACE="$NETDEV" AdministrativeState=configured /etc/networkd-dispatcher/routable.d/50-tailscale
```
由于 TS 虚拟机不包含无线网卡,可通过 `systemd` 日志过滤器忽略无线工具探测信息。
```bash
## 编辑 networkd-dispatcher.service 服务扩展配置
$ sudo systemctl edit networkd-dispatcher.service
```
根据配置文件中的提示,在中间空白处填入以下内容。
```bash
## 日志过滤配置项
[Service]
LogFilterPatterns=~^No valid path found for iw(config)?$
```
测试通过后,启动 `networkd-dispatcher` 并设置为开机自启状态。
```bash
## 设置 networkd-dispatcher 开机自启
$ sudo systemctl enable --now networkd-dispatcher.service
## 验证启动状态事件补发机制
$ sudo systemctl restart networkd-dispatcher.service
```
最后检查网卡优化参数。
```bash
## 检查网卡优化参数
$ sudo ethtool -k "$NETDEV" | grep -E 'rx-udp-gro-forwarding|rx-gro-list'
#### 网卡优化后 ethtool 示例输出
rx-gro-list: off
rx-udp-gro-forwarding: on
```
### 2.2.启动模式
若仅需 TS 组网功能,执行以下命令。
```bash
## TS 普通组网模式
$ sudo tailscale up
```
若需 TS 提供 `Exit Node` 功能,执行以下命令。
```bash
## TS Exit Node 模式
$ sudo tailscale up --advertise-exit-node --reset
## TS Exit Node 模式,但不使用 MagicDNS
$ sudo tailscale up --advertise-exit-node --accept-dns=false --reset
```
若需 TS 提供内网路由功能并能访问内网私有服务,执行以下命令。
**额外说明:**
- 请根据内网网段,调整 TS 内网路由参数 `advertise-routes`
```bash
## TS 内网路由模式
$ sudo tailscale up --advertise-exit-node --accept-routes --advertise-routes=172.16.1.0/24 --reset
```
执行命令后,TS 将自动显示登录链接,只需根据链接进行登录操作即可。
### 2.3.自动更新
目前 TS 将跟随系统自动更新,若需额外开启 TS 的自动更新功能,执行以下命令。
```bash
## TS 开启自动更新
$ sudo tailscale set --auto-update
## TS 关闭自动更新
$ sudo tailscale set --auto-update=false
```
### 2.4.定时任务
本步骤为可选操作,主要用于设置 TS 定时重启。
```bash
## 创建 Tailscale 定时重启任务
$ sudo tee /etc/cron.d/tailscale-restart >/dev/null <<'EOF'
30 10 * * * root /usr/bin/systemctl restart tailscaled.service
EOF
## 设置定时任务文件权限
$ sudo chmod 0644 /etc/cron.d/tailscale-restart
```
至此,TS 服务器已配置完成。
+77
View File
@@ -0,0 +1,77 @@
## 1.添加备份作业
在所有虚拟机创建并配置完成后,可以使用 PVE 自带的备份功能周期性的将虚拟机备份。
点击 PVE 的 `数据中心` ,在右侧菜单中选择 `备份` 功能,并点击顶部 `添加`
![添加备份作业](img/p08/vm_new_backup_job.jpeg)
### 1.1.常规
在弹出的 `创建:备份作业` 对话框中,勾选底部 `高级` 选项,`备份作业` 的各项参数如下。
|参数|值|说明|
|--|--|--|
|节点|`node01`|选择当前 PVE 服务器节点|
|存储|`local`|选择存放备份文件的路径|
|计划|`*-01,16 03:30`|`备份作业` 执行的时间计划|
|选择模式|`包括选中的虚拟机`|执行备份的虚拟机对象|
|压缩|`ZSTD`|选择备份文件的压缩算法|
|模式|`停止`|选择备份虚拟机的方式,推荐使用 `停止` |
|启用|**勾选**|表示该 `备份作业` 为启用状态|
|作业评论|`Backup Your Server :)`|`备份作业` 的备注信息,使用英文输入|
**额外说明:**
- 计划中的 `*-01,16 03:30` 表示每月 `1``16` 号的 `03:30` 执行备份任务
- `备份作业` 在正确配置收件人邮箱之前,并不能发出邮件
- `停止` 模式表示备份时会将虚拟机置于关机状态,备份完成后再恢复至之前的状态
- 虚拟机列表中,勾选 `备份作业` 需要备份的虚拟机(可多选)
![备份作业常规选项](img/p08/vm_job_normal.jpeg)
### 1.2.通知
|参数|值|说明|
|--|--|--|
|通知模式|`使用全局通知设置`|执行备份时的通知模式,保持默认即可|
![备份作业通知选项](img/p08/vm_job_email.jpeg)
### 1.3.保留
该选项将控制备份文件的保留个数,选择保留最近 `3` 份备份文件。
![备份作业保留选项](img/p08/vm_job_keep.jpeg)
### 1.4.备注模板
该选项将按照设置的内容,自动重命名备份文件。
`备份日志` 右侧文本框中输入 `{{vmid}}-{{guestname}}-Autobackup`
![备份作业备注选项](img/p08/vm_job_notes.jpeg)
### 1.5.高级
该选项提供 `备份作业` 执行时的高级可调参数,仅需勾选 `重复错过` 选项即可。
点击 `创建` ,此 `备份作业` 即完成设置与创建。
![备份作业高级选项](img/p08/vm_job_advanced.jpeg)
## 2.调度模拟器
在创建完成 `备份作业` 后,可以使用 `调度模拟器` 来模拟 `备份作业` 的执行时间。
鼠标 **单击** 选中一个 `备份作业` ,点击右上角的 `调度模拟器`
![备份作业调度模拟器](img/p08/vm_job_time_test.jpeg)
`计划` 处将显示 `备份作业` 的执行时间参数,点击 `模拟` ,在右侧将显示模拟的时间结果。
确认 `备份作业` 的执行时间周期是否符合预期。
![备份作业时间模拟](img/p08/vm_job_time.jpeg)
至此,虚拟机的自动备份已配置完成。
-209
View File
@@ -1,209 +0,0 @@
## 0.安装前准备
PVE 系统正式安装之前,需要准备 PVE 的安装镜像和一些必要安装工具。
### 0.1.PVE镜像下载
PVE 下载地址:https://www.proxmox.com/en/downloads
![下载PVE ISO文件](img/pve_download_iso.png)
点击 `Proxmox VE 7.x ISO Installer` 链接。此处可能有多个 PVE 的安装 ISO,可以根据需要进行选择。
此处我以目前最新的 `Proxmox VE 7.2 ISO` 作为演示。
![输入图片说明](img/pve_iso_hash.png)
下载 ISO 时请注意 `SHA256SUM` ,后续将使用该校验信息对下载下来的 ISO 进行校验,以确保 ISO 文件的完整性。
### 0.2.启动盘制作工具
考虑到制作 PVE 启动盘时,所使用的操作系统可能有 Windows、macOS、Linux,因此我这里推荐几个常用的写盘工具。
#### Ventoy
官方网站地址:https://www.ventoy.net/cn/index.html
强烈推荐的引导盘制作工具,也是我目前在用的写盘工具,优点是可以在一个 U 盘中放入复数个可引导的 ISO 文件。
免去了多次格式化 U 盘再写入 ISO 文件的操作,非常友好。
缺点是只支持 Windows、Linux。
![Ventoy写盘工具](img/pve_ventoy.png)
#### Etcher
官方网站地址:https://www.balena.io/etcher/
跨平台的写盘工具,开源,写盘速度很快。缺点是该软件体积较大,下载缓慢。
支持 Windows、macOS、Linux。
![Etcher写盘工具](img/pve_etcher.png)
#### Rufus
官方网站地址:https://rufus.ie/zh/
轻便小巧的写盘工具,仅支持 Windows。
![Rufus写盘工具](img/pve_rufus.png)
### 0.3.SSH工具
考虑到配置 PVE 服务器、路由器、DNS 服务器时,需要在 CLI 中输入命令,因此我这里推荐几个常用的 SSH 工具。
#### Tabby
官方网站地址:https://tabby.sh
基于 Electron 开发的开源跨平台终端工具,内部集成了 SFTP,可以在 Github 平台上进行下载。
支持 Windows、macOS、Linux。
![Tabby SSH工具](img/pve_tabby.png)
#### MobaXterm
官方地址:https://mobaxterm.mobatek.net
功能强大的 SSH 工具,仅支持 Windows。
![MobaXterm](img/pve_mobaxterm.png)
## 1.PVE系统安装
由于机型不同,BIOS 的设置也不同,所以本文不演示具体如何将机器设置成从 U 盘启动。
在设置BIOS时需要注意以下几点:
- 暂时关闭 **“安全启动”**
- 确保打开硬件虚拟化支持
- 确保硬盘的模式为“AHCI”
- 确保设备来电自动启动
- 对于不支持UEFI启动的设备,检查Legacy引导模式
- 检查CPU的功耗设置(可选)
### 1.1.设备引导
我使用 Ventoy 进行设备引导后,出现如下画面,选择 PVE 的安装 ISO :
![Ventoy引导设备](img/pve_ventoy_boot.png)
等待引导跑码完成后,即进入 PVE 的安装界面。
### 1.2.PVE安装选项
选择第一项 `Install Proxmox VE` 开始安装 PVE 。
![PVE安装选项](img/pve_option.png)
设备将会继续跑码,直到 EULA 最终用户许可协议出现,选择 `I agree`
![PVE用户协议](img/pve_eula.png)
### 1.3.PVE磁盘选项
此时会出现 `Target Harddisk` 选项,会显示出设备中存在的磁盘列表。
可以通过下拉框选择希望安装 PVE 的物理磁盘。
![PVE选择安装磁盘](img/pve_hd_choose.png)
点击磁盘列表右侧的 **Options** ,对 PVE 的磁盘安装参数进行一些调整。
我推荐将 `Filesystem` 也就是磁盘的文件系统格式,设置成 **xfs**
如果设备安装的内存比较小,比如只有 `4GB``8GB` ,可以酌情考虑将 `swapsize` 改大,比如 `8`(此处无需填写单位 GB )。
![PVE磁盘文件系统](img/pve_hd_fs.png)
虽然 PVE 系统会根据设备安装的内存大小自动计算合理的 `swapsize` ,但我安装了 `16GB` 内存,因此我此处仅给了 `4GB` 的空间作为交换空间。
### 1.4.PVE时区选项
PVE 此时处于未接入互联网的 “离线” 安装状态,因此不会从互联网中读取时区信息,我们需要手动修改时区。
`Contry` 处手动输入 `China` ,下方的 `Time zone` 将自动变更为 `Asia/Shanghai`
![PVE时区](img/pve_timezone.png)
### 1.5.PVE账户与邮箱
PVE 为最关键的虚拟化层,建议使用强密码,包含大小写字母、数字以及特殊符号。
`Email` 必须为一个 “合法” 的邮箱地址,不然系统会判定邮箱地址不合法并拒绝继续安装。
![PVE邮箱设置](img/pve_email.png)
### 1.6.PVE网络设置
PVE 必须选择一个管理网口,默认情况下,PVE 会使用编号较小的第一个网口作为管理网口。
而有的设备物理网口顺序与该页面显示的网口顺序 **不一致** ,因此此处保持默认的第一个网口。
当 PVE 完全安装好之后, **会在 PVE 提供的 WEB 页面中对该管理网口设置进行调整**
![PVE管理网口设置](img/pve_eth.png)
根据我们之前的规划,对 PVE 的管理 IP(`172.16.1.250`)进行设置。
需要说明的是 `Hostname` ,即 PVE 主机的名称,PVE 将使用输入的 “二级域名” 的名称作为自己的名称。
演示内容输入的为 `hyper.fox.lab` ,因此 PVE 获取的主机名称为 `hyper`
我们规划未来主路由的IP地址为 `172.16.1.1` ,因此我们网关和 DNS 地址均使用该地址。
- Hostname (FQDN)
- hyper.fox.lab
- IP Address (CIDR)
- 172.16.1.250/24
- Gateway
- 172.16.1.1
- DNS Server
- 172.16.1.1
![PVE管理IP地址](img/pve_ip.png)
### 1.7.PVE参数确认与安装
最后会显示出当前 PVE 安装的配置清单,确认无误后即可开始安装。
![PVE安装确认](img/pve_install_confirm.png)
安装完成后,PVE 会告知用户登录的 `IP 地址``端口`
![PVE安装完成](img/pve_install_finish.png)
## 2.PVE安装后检查
PVE 安装完成后会自动重启,等待系统重启完成会显示如下界面,并使用 `root` 账户进行登录,密码为刚才设置的管理密码。
**注意:Linux 操作系统,在输入密码时是不显示任何字符信息的,输入完成后输入回车即可。**
![PVE首次重启](img/pve_first_boot.png)
登录系统后,我们使用一些命令来查看一些基本信息:
![PVE系统信息](img/pve_sys_info.png)
```bash
## 查看系统磁盘与挂载
df -hT
cat /etc/fstab
## 查看系统代号
cat /etc/os-release
```
此处显示出 PVE 底层使用的是 Debian 的系统,代号为 `bullseye` ,该代号后续会使用到。
至此 PVE 的安装步骤已经完成,后续将对管理网口的设置以及系统源进行调整,使用国内镜像源,去掉 PVE 的订阅仓库,使用开源 PVE 仓库。
-287
View File
@@ -1,287 +0,0 @@
## 1.更换系统软件源
在上一篇文章 [1.PVE系统安装](./1.PVE系统安装.md) 中,我们从刚装好的 PVE 系统中获取了系统的一些参数:
![PVE系统信息](img/pve_sys_info.png)
此处显示出 PVE 底层使用的是 Debian 的系统,代号为 `bullseye`
为了后续能够对 PVE 系统进行升级,需要更换其镜像仓库,也就是大家熟知的软件源。
由于我们目前处于 **“离线”** 安装状态,因此更换完软件源后,在没有网络的情况下无法对系统更新。
### 1.1.系统软件源替换
使用 SSH 工具登录到 PVE 服务器,首先对现有的软件源配置进行备份:
```bash
## 进入系统软件源配置文件目录
cd /etc/apt
## 将默认软件源配置文件进行备份
cp sources.list sources.list.bak
```
这里我将使用 [中国科技大(USTC](http://mirrors.ustc.edu.cn/help/proxmox.html) 的镜像仓库进行替换,使用如下命令:
**注意:该命令为两行,在输入时请逐行输入并回车执行**
```bash
## 替换系统软件仓库
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list
```
执行完成后,检查是否执行正确:
```bash
## 输出系统源配置文件,检查是否正确
cat /etc/apt/sources.list
```
如果输出结果中有 USTC 的镜像地址,则表示命令已经正确执行。
如果希望能更新 CPU 的 `microcode` ,则需要手动添加镜像的 `non-free` 参数,完整系统源示例如下:
```bash
## 输出内容参考:
deb https://mirrors.ustc.edu.cn/debian bullseye main contrib non-free
deb https://mirrors.ustc.edu.cn/debian bullseye-updates main contrib non-free
# security updates
deb https://mirrors.ustc.edu.cn/debian-security bullseye-security main contrib non-free
```
此处我放出 Debian Bullseye 的完整镜像源以供参考, **非常不建议** 将 PVE 的系统源替换成完整的 Debian 源,以避免系统故障。
```bash
## Debian Bullseye 完整源 USTC
deb https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main contrib non-free
# deb-src https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main contrib non-free
```
可以看到,PVE 的系统源和 Debian 完整源的差异在于 `non-free``bullseye-backports`
如果小伙伴在一些软件或者驱动(比如闭源 GPU 驱动)上遇到麻烦,才需尝试 Debian 的完整镜像源。
### 1.2.PVE 订阅源替换
默认情况下,PVE 启用了一个官方的源,而该源为订阅制收费,我们需要替换为免费的源。
进入订阅源的目录:
**注意:rm 命令为高危险操作命令,请正确使用,请勿手抖,请勿手抖**
```bash
## 进入订阅源目录
cd /etc/apt/sources.list.d
## 删除该目录下的所有配置
rm -rvf *.list
```
创建 PVE 免费源:
**注意:该命令为两行,在输入时请逐行输入并回车执行**
```bash
## 创建 PVE 免费源
source /etc/os-release
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve $VERSION_CODENAME pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
```
创建完成后对其进行检查:
```bash
## 检查PVE免费源
cat /etc/apt/sources.list.d/pve-no-subscription.list
```
如果输出结果中有 USTC 的镜像地址,则表示命令已经正确执行:
```bash
## 输出内容参考:
deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription
```
### 1.3.PVE CT Templates 替换
如果需要使用 Proxmox 网页端下载 CT Templates,可以替换 CT Templates 的源。
该功能我未使用,因此只做记录:
```bash
## 替换 CT Templates 源
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm.bak
sed -i 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
```
如果修改了 CT Templates 地址,需要重启 PVE 服务器才能生效。
### 1.4.替换后操作
更换完成系统源之后,需要更新系统源的同步:
```bash
## 清理软件包
apt clean && apt autoclean && apt autoremove --purge
## 同步软件源
apt update
## 更新系统
apt dist-upgrade
```
考虑到 **“离线”** 安装时无法同步系统源,因此该步骤可以等到 PVE 中安装好了 RouterOS 软路由或其他路由系统并正确连接 Internet 后再执行。
或者家庭网络环境中还有一个 `172.16.1.0/24` 网段的,已经连接 Internet 的路由器 A ,将路由器 A 的 LAN 口与 PVE 的管理网口连接,此时 PVE 可访问外网。
## 2.安装必要软件
安装软件前,同样要让 PVE 能够访问外网。
```bash
## 同步镜像仓库
apt update
## 安装系统软件
apt install htop lm-sensors unzip fail2ban vim tmux unattended-upgrades apt-listchanges powermgmt-base
## 安装网络工具
apt install iperf iperf3 iftop net-tools ethtool
## 安装CPU调度调整工具
apt install cpufrequtils
## 根据CPU厂商安装CPU微码工具
apt install intel-microcode (amd64-microcode)
```
其中 `fail2ban``unattended-upgrades` 为两个服务,后续会对其进行配置。
`cpufrequtils` 为 CPU 调度器的配置工具,后续会对 CPU 调度算法进行调整。
## 3.配置 PVE 网桥和管理网口
设置电脑的 IP 地址为静态 IP ,IP 地址段与 PVE 的 IP 地址段保持一致。
用网线将电脑的网口与 PVE 的管理网口,此时应该为编号最小的第一个网口,相连接。
访问 PVE 的 WEB 管理界面,对 PVE 的网络进行一些调整。
![PVE网络规划](img/pve_net_schematization.png)
在设置 PVE 的网络之前,需要对网络内部结构做一个规划。
在前篇的网络地址段规划时,我们有如下规划内容:
- PVE IP `172.16.1.250/24` IPv6 `fc00::fa/64`
- PVE 网关: `172.16.1.1` IPv6 网关将使用 `Link-Local Address` 自动配置)
- PVE DNS `172.16.1.1` IPv6 DNS `fc00::1`
我们预计在 PVE 内部安装 RouterOS 用于主路由,2 个 Adguard Home 虚拟机用于提供内网的 DNS 服务以及去广告,且 RouterOS 需要能让 PVE 自身访问外网。
因此,在 PVE 中除了创建多个绑定物理网口的虚拟网桥外(具体数量依据物理网口数而定),还需 1 个额外的纯内部网桥。
先放出 PVE 网桥设置完成后的配置页面:
![PVE网桥最终设置显示](img/pve_net_preview.png)
在实地考察了 PVE 软路由在弱电箱的摆放位置后,本次决定使用 ETH0 口,也就是第一个物理网口,作为 RouterOS 的拨号网口,ETH3 口作为 PVE 的管理网口。
在初次登录 PVE 的 WEB 管理后台,并访问网络管理页面时,会发现只有一个 `vmbr0`
`vmbr0` 绑定的物理口为列表中的第一个网口,且在 `CIDR``网关` 处有 IP 地址参数,说明 `vmbr0` 就是目前的管理网口。
造成该状态的原因是我们在安装 PVE 阶段,选择的网口就是第一个网口,因此我们需要对其进行修改。
首先我们需要对每个物理网口创建网桥,并对其进行配置修改,在修改完成前, **请不要点击“应用配置”** ,不然会导致 PVE 无法访问。
### 3.1.修改默认网桥 vmbr0
首先双击 `vmbr0` ,进入配置界面:
![修改vmbr0](img/pve_modify_vmbr0.png)
删除 `IPv4/CIDR``网关` 信息,确保 `自动启动` 为勾选状态。
在备注处填写 `For WAN` ,然后点击 `OK` 按钮。
### 3.2.物理网口创建网桥
点击左上角的 `创建` 按钮,选择 `Linux Bridge`
![创建物理接口网桥](img/pve_br_create.png)
因为 `vmbr0` 名称已被使用,因此名称处填写 `vmbr1` ,桥接端口填写顺序的第二个网卡名称,我演示这里为 `enp3s0`
![指定物理接口](img/pve_br_phyport.png)
确保 `自动启动` 为勾选状态,在备注处填写 `For LAN1` ,点击 `创建` 按钮。
然后,依次创建所有物理接口的内部网桥,直到最后一个:
![最后的物理接口网桥](img/pve_br_last_phyport.png)
在创建最后一个物理网口的 PVE 网桥时,需要额外配置 `IPv4` 地址和对应的 `网关` 参数。
`IPv6` 仅需填写地址,无需填写 `网关` 参数。
在所有物理网口的 PVE 网桥创建完成后,可以点击 `应用配置` 按钮,此时页面会失去连接。
无需担心,只需要将电脑的网线从 PVE 物理机的第一个网口拔出,并插入到最后一个网口即可。
如果万一还是无法访问到 PVE,可以尝试使用网线“拔插”方法,挨个测试 PVE 网口的访问情况。
### 3.3.创建 PVE 纯内部网桥
![纯内部网桥](img/pve_br_nophyport.png)
纯内部网桥的创建方法与创建物理网口的网桥方法基本一致,唯一区别是在 **“桥接端口”处为空** 即可。
纯内部网桥在没有内部路由的情况下是无法访问的,我这里只有在 RouterOS 安装完成并建立了内部网桥后,才可被访问到;主要作用为通过 RouterOS 给内部其他虚拟机提供外网连接。
当然内部网桥的作用不仅如此,比如还可以作为内部级联路由的连接器。
例如安装了 OPNsense 和 RouterOS 两个虚拟机,OPNsense 作为防火墙使用,RouterOS 作为二级路由使用,OPNsense 的 LAN 口需要与 RouterOS 的 WAN 口互通。
此时如果 OPNsense 和 RouterOS 均使用了绑定物理网口的 PVE 网桥,则需要用网线在 PVE 服务器外面连接两个网口,浪费宝贵的网线不说,还占用了网口,得不偿失。而使用纯内部网桥则可以很好的解决该问题,有了这个纯内部网桥,不论多少个虚拟机使用了该网桥,只要是同网段,都可以相互访问。
## 4.配置 PVE DNS 服务器
在 PVE 的安装过程中设置了 PVE 服务器的 DNS 地址为 `172.16.1.1` ,但并未设置 DNS 的 IPv6 地址。
在 PVE 系统的 DNS 设置页面中,新增 DNS 服务器的 IPv6 地址,即主路由的 LAN IPv6 地址:
![PVE添加IPv6DNS](img/pve_add_ipv6_dns.png)
## 5.后续配置
至此,PVE的初始化配置完成。
后续将会对 PVE 的一些服务进行配置,例如安全加固、调整 CPU 的调度算法节能省钱、PVE 的自动更新等内容。
-389
View File
@@ -1,389 +0,0 @@
## 0.必要条件
在上一篇文章 [2.PVE初始化配置](./2.PVE初始化配置.md) 中,我们已经初始化了 PVE 系统,接下来需要对 PVE 系统进一步调整。
在 PVE 系统调整之前,请确保必要的软件包已经安装完成。
```bash
## 同步镜像仓库
apt update
## 安装系统软件
apt install htop lm-sensors unzip fail2ban vim tmux unattended-upgrades apt-listchanges powermgmt-base
## 安装网络工具
apt install iperf iperf3 iftop net-tools ethtool
## 安装CPU调度调整工具
apt install cpufrequtils
## 根据CPU厂商安装CPU微码工具
apt install intel-microcode (amd64-microcode)
```
本文后续命令,均在 SSH 终端下完成。
## 1.Fail2ban 配置
安装好 `fail2ban` 后,检查其服务状态:
```bash
## 检查 Fail2ban 系统服务状态
systemctl status fail2ban.service
```
`Loaded` 行,检查是否存在 `enable`
```bash
## 参考输出
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2022-07-16 05:03:53 CST; 4 days ago
Docs: man:fail2ban(1)
Process: 777 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
Main PID: 792 (fail2ban-server)
Tasks: 5 (limit: 18904)
Memory: 13.3M
CPU: 4min 53.764s
CGroup: /system.slice/fail2ban.service
└─792 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
Jul 16 05:03:53 hyper systemd[1]: Starting Fail2Ban Service...
Jul 16 05:03:53 hyper systemd[1]: Started Fail2Ban Service.
Jul 16 05:03:53 hyper fail2ban-server[792]: Server ready
```
其中第 1 个 `enable` 表示当前服务开机自动启动,第 2 个 `enable` 表示该软件的默认启用状态。
如果第 1 个不为 `enable` 状态,需要用以下命令进行调整:
```bash
## 开机自启 fail2ban 服务
systemctl enable fail2ban.service
## 参考输出
Synchronizing state of fail2ban.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable fail2ban
Created symlink /etc/systemd/system/multi-user.target.wants/fail2ban.service → /lib/systemd/system/fail2ban.service.
```
执行完成后,再次通过前面的命令检查服务自启状态。
后续如果想查看 `Fail2ban` 有关 `sshd` 的执行状态,可使用如下命令:
```bash
## 检查 sshd 的执行情况
fail2ban-client status sshd
## 参考输出
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:
```
如果均为 0 ,表示当前 PVE 系统没有 SSH 错误密码的尝试记录。
## 2.系统时区配置
如果在安装 PVE 系统时选错了时区,导致系统时间和北京时间不一致,可以使用以下命令修正:
```bash
## 修改系统时区
timedatectl set-timezone Asia/Shanghai
## 检查系统时间
date -R
## 参考输出
Wed, 20 Jul 2022 16:21:28 +0800
```
输出结果如果和北京时间一致,则代表修改正确。
## 3.CPU调度器配置
安装好 `cpufrequtils` 后,先检查当前 CPU 的调度器:
```bash
## 检查 CPU 当前调度器
cpufreq-info
```
**设备 CPU - J4125 参考输出**
```bash
## J4125 参考输出
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: intel_cpufreq
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 20.0 us.
hardware limits: 800 MHz - 2.70 GHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil
current policy: frequency should be within 800 MHz and 2.70 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 1.84 GHz.
```
**设备 CPU - N5105 参考输出**
```bash
## N5105 参考输出
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: intel_pstate
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 4294.55 ms.
hardware limits: 800 MHz - 2.90 GHz
available cpufreq governors: performance, powersave
current policy: frequency should be within 800 MHz and 2.90 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 1.36 GHz.
```
这里面主要关注两个点:
- driver: `intel_cpufreq``intel_pstate`
- current policy: `governor "ondemand"``governor "performance"`
当然还有另外一个命令可以用来显示 CPU 调度器:
```bash
## 检查 CPU 当前调度器
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
## J4125 参考输出
ondemand
## N5105 参考输出
performance
```
驱动一般不建议手动调整,而 `governor` 后面的参数则显示了当前 CPU 的调度器是什么。
接下来,我们需要了解当前系统 CPU 支持的调度器有哪些:
```bash
## 检查 CPU 调度器支持情况
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
## J4125 参考输出
conservative ondemand userspace powersave performance schedutil
## N5105 参考输出
performance powersave
```
根据 CPU 所使用的驱动不同,可选调度器也不同,至于每种调度器有什么优劣,欢迎大家深度挖掘。
CPU 驱动为 `intel_pstate` 时,建议使用 `powersave` 调度器。
CPU 驱动为 `intel_cpufreq` 时,建议使用 `schedutil` 调度器。
本文以使用 `powersave` 调度器为演示。
使用 `vim` 编辑器来编辑 `cpufrequtils` 的配置文件:
```bash
## 修改 cpufrequtils 配置文件
vim /etc/init.d/cpufrequtils
## 在配置文件中修改调度器
ENABLE="true"
GOVERNOR="powersave" ## 修改本行的调度器为 powersave
MAX_SPEED="0"
MIN_SPEED="0"
```
`i` 键进入编辑模式,`esc` 键退出编辑模式,`:wq` 命令保存退出。
因为该配置文件很长,文章中留下一份已配置好的文件 [Fox_PVE_Cpufrequtils.conf](./src/Fox_PVE_Cpufrequtils.conf) ,以便对比。
修改完成后,需要重新启动 PVE 服务器来使参数生效。
PVE 服务器重启完成后记得重新检查当前 CPU 的调度器,看配置文件是否生效。
这里提供两个命令,分别来实时查看当前 CPU 的频率和内部温度传感器的数值:
```bash
## 查看 CPU 当前频率
watch cat /sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_cur_freq
## 查看内部温度
watch sensors
```
## 4.PVE 定时重启配置
有时候我们需要让 PVE 服务器周期性的定时重启,则可使用以下命令:
```bash
## 编辑系统 crontab
crontab -e
## 选择 nano 编辑器,粘贴以下内容并保存
0 5 1,16 * * /usr/sbin/reboot
```
这表示每月 1、16 号的 5 点 0 分执行系统重启命令。
可以使用以下命令来查看当前系统的计划任务:
```bash
## 显示系统 crontab
crontab -l
```
## 5.PVE系统自动更新
### 5.1.检查系统定时器
配置系统自动更新之前,先检查当前系统定时器状态:
```bash
## 检查系统定时器
systemctl status apt-daily-upgrade.timer
## 示例输出
● apt-daily-upgrade.timer - Daily apt upgrade and clean activities
Loaded: loaded (/lib/systemd/system/apt-daily-upgrade.timer; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/apt-daily-upgrade.timer.d
└─override.conf
Active: active (waiting) since Sat 2022-07-16 07:03:53 CST; 4 days ago
Trigger: Thu 2022-07-17 06:52:50 CST; 13h left
Triggers: ● apt-daily-upgrade.service
Jul 16 12:03:53 hyper systemd[1]: Started Daily apt upgrade and clean activities.
```
我们后续将手动调整该定时器的时间为,每 10 天的凌晨 02:00 进行触发。
### 5.2.配置自动更新策略
```bash
## 配置自动更新策略
dpkg-reconfigure -plow unattended-upgrades
## 选择 “是” (“YES”)
## 示例输出
Creating config file /etc/apt/apt.conf.d/20auto-upgrades with new version
```
执行命令后,使用“左右”方向键进行选择,“回车”键进行确认。
然后开始调整 apt 的 `20auto-upgrades` 配置文件:
```bash
## 进入 apt 的配置目录
cd /etc/apt/apt.conf.d
## 编辑 20auto-upgrades 配置文件
vim 20auto-upgrades
## 删除里面全部内容并填写以下内容
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "10";
APT::Periodic::AutocleanInterval "1";
APT::Periodic::CleanInterval "1";
```
其中,用来控制 PVE 更新周期的为 `APT::Periodic::Unattended-Upgrade` 这行内容,其中的 “10” 表示更新周期为 “10” 天。
接下来调整 apt 的 `50unattended-upgrades` 配置文件,所有修改项目汇聚如下:
```bash
## 编辑 50unattended-upgrades 配置文件
vim 50unattended-upgrades
## 取消了以下行前面的注释,代表启用
"origin=Debian,codename=${distro_codename}-updates";
## 添加了 PVE 本身的更新项目
"origin=Proxmox,codename=${distro_codename},label=Proxmox Debian Repository";
## 取消以下行的前面注释,代表启用,并调整参数
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "05:00";
```
分别表示:
- 启用了 Debian bullseye-updates 相关更新。
- 增加并启用 PVE 自有仓库的更新,确保不会遗漏自有仓库的更新内容。
- 自动修复被打断的Dpkg安装。
- 自动移除无用的的内核包。
- 自动移除因更新而出现的无用依赖包。
- 自动移除以前的无用依赖包。
- 自动重启:开启。
- 自动重启时间:05:00。
因为该配置文件很长,文章中留下一份 PVE 7.2 中已配置好的文件 [Fox_PVE_50unattended_Upgrades.conf](./src/Fox_PVE_50unattended_Upgrades.conf) ,以便对比。
仔细再仔细确认无误后,`esc` 键退出编辑模式,`:wq` 命令保存退出。
### 5.3.重设自动更新触发器
```bash
## 重设自动更新触发器时间为凌晨 02:00
systemctl edit apt-daily-upgrade.timer
## 根据文件中的提示,在中间空白处填入以下内容
[Timer]
OnCalendar=
OnCalendar=02:00
RandomizedDelaySec=0
```
完整的配置文件可查看 [Fox_PVE_Apt_Daily_Upgrade.conf](./src/Fox_PVE_Apt_Daily_Upgrade.conf),以便对比。
设置完成后重启自动更新的触发器:
```bash
## 重启触发器
systemctl restart apt-daily-upgrade.timer
## 再次检查触发器状态
systemctl status apt-daily-upgrade.timer
## 参考输出
● apt-daily-upgrade.timer - Daily apt upgrade and clean activities
Loaded: loaded (/lib/systemd/system/apt-daily-upgrade.timer; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/apt-daily-upgrade.timer.d
└─override.conf
Active: active (waiting) since Wed 2022-07-20 17:36:40 CST; 11s ago
Trigger: Thu 2022-07-21 02:00:00 CST; 8h left
Triggers: ● apt-daily-upgrade.service
Jul 20 17:36:40 hyper systemd[1]: Stopped Daily apt upgrade and clean activities.
Jul 20 17:36:40 hyper systemd[1]: Stopping Daily apt upgrade and clean activities.
Jul 20 17:36:40 hyper systemd[1]: Started Daily apt upgrade and clean activities.
```
至此 PVE 的系统调整已经完成,重启设备后,可以愉快使用了。
Plug in & Forget :)
-230
View File
@@ -1,230 +0,0 @@
## 0.前期准备
将虚拟机制作成模板,可以在后续新建虚拟机时快速从模板中创建,减少系统安装配置时间。
本文将使用 Debian 的云镜像 `debian-11-genericcloud-amd64.qcow2` 作为模板虚拟机的镜像。
访问 [Debian Official Cloud Images](https://cloud.debian.org/images/cloud/) 官方网站,下载最新版 `Bullseye` 云镜像以及对应的校验文件:
![下载镜像](img/Template/download_genericcloud_image_qcow2.png)
该虚拟机模板主要作为内网 DNS 服务器使用,并会安装 Adguard Home 。
## 1.创建虚拟机
### 1.1.常规
登录到 PVE 后台后,进入新建虚拟机流程,并勾选底部 “高级” ,打开虚拟机创建页面的高级选项。
节点即本机,`VM ID``名称` 可以自由定义。
![虚拟机名称](img/Template/vm_id.png)
### 1.2.操作系统
无需使用任何安装介质。
操作系统类别选择 `Linux` 、版本选择 `5.x - 2.6 Kernel` 即可。
![虚拟机操作系统](img/Template/vm_os.png)
### 1.3.系统
系统部分需要修改一些内容,以满足 Debian 使用 `UEFI` 启动需求。
显卡选择 `默认`,图中使用的 `SPICE` 仅供测试。
机型一般选择 `默认` 即可,使用 `q35` 主要为了测试 `UEFI` 启动。
SCSI 控制器选择 `VirtIO SCSI single` ,勾选 `Qemu代理` 选项。
在固件处需要针对 `UEFI` 进行调整,BIOS 选择 `OVMF (UEFI)` ,勾选 `添加EFI磁盘` EFI 存储选择 `local-lvm`
![虚拟机系统](img/Template/vm_system.png)
### 1.4.磁盘
一般情况下,如果该虚拟机仅为 ADH 服务器,`16G` 的磁盘空间足够使用。
由于使用 Cloud Image 制作虚拟机模板,此处删除所有磁盘:
![虚拟机磁盘](img/Template/vm_hd.png)
### 1.5.CPU
CPU类别选择 `host` ,核心根据物理 CPU 核心数进行酌情设置。
若 PVE 服务器内有多颗物理 CPU ,则推荐启用 `NUMA`
![虚拟机CPU](img/Template/vm_cpu.png)
### 1.6.内存
内存一般 2G 足够使用,关闭 `Ballooning` 设备选项:
![虚拟机内存](img/Template/vm_mem.png)
### 1.7.网络
在 PVE 的 [网络设置](./2.PVE初始化配置.md#3配置-pve-网桥和管理网口) 中,曾创建了一个没有桥接任何物理网口的内部网桥。
并且该网桥接口为主路由 RouterOS 的 LAN 的成员接口。
因此 Debian 虚拟机的网络设备选择该内部网桥即可,演示环境为 `vmbr4`
![虚拟机网口](img/Template/vm_network_port.png)
取消网口的 `防火墙` ,并根据虚拟机 vCPU 数,指定 `Multiqueue` 的数量,演示环境为 `2`
![虚拟机网卡多队列](img/Template/vm_network_queue.png)
### 1.8.确认
接下来查看设置总览,确认无误,即可点击 “完成” :
![虚拟机确认](img/Template/vm_confirm.png)
## 2.调整虚拟机硬件参数
### 2.1.删除虚拟机光驱
此时,查看虚拟机详情页,可以看到我们刚才创建的 Debian 虚拟机,删除 `CD/DVD驱动器`
![虚拟机删除光驱](img/Template/vm_delete_cd.png)
### 2.2.虚拟机导入磁盘镜像
使用 SSH 工具登录 PVE 服务器,并进入 `tmp` 目录,逐条执行以下命令来创建一个文件夹:
```bash
# 进入 tmp 目录
cd /tmp
# 创建文件夹
mkdir Debian
# 进入文件夹
cd Debian
```
将 Debian 云镜像 `debian-11-genericcloud-amd64.qcow2` 上传到该文件夹中,并检查 `hash`
```bash
# 检查文件是否存在
ls -la
# 计算文件 hash
sha512sum debian-11-genericcloud-amd64.qcow2
```
确认无误后,将 Debian 云镜像导入刚才创建的虚拟机中,命令中的 `VM ID` 需要根据实际情况替换,演示为 `1000`
```bash
# 将 qcow2 镜像导入虚拟机中
qm importdisk 1000 debian-11-genericcloud-amd64.qcow2 local-lvm
# 输出结果为以下类似内容表示成功
Successfully imported disk as 'unused0:local-lvm:vm-1000-disk-1'
```
![虚拟机新磁盘](img/Template/vm_unused_hd.png)
鼠标 **双击** 该未使用的磁盘,勾选 `IO thread` ,点击添加按钮:
![虚拟机使用该磁盘](img/Template/vm_enable_hd.png)
刚导入的磁盘只有 `2G` 磁盘空间,为了后续方便使用,先给磁盘扩容 `16G` 的磁盘空间。
鼠标 **单击** 选中该磁盘,选择页面顶部 `Disk Action` 菜单的子菜单 `Resize`
![虚拟机磁盘扩容](img/Template/vm_hd_resize.png)
在弹出的对话框中,给该磁盘增加 `16G` 磁盘空间:
![虚拟机磁盘增加16G](img/Template/vm_hd_16g.png)
### 2.3.虚拟机添加CloudInit设备
为了能够正确使用 Cloud-Init 初始化系统,需要给 Debian 虚拟机添加 `CloudInit设备`
点击顶部 `添加` 按钮,选择 `CloudInit设备`
![虚拟机添加ci](img/Template/vm_cloudinit.png)
`总线/设备` 选择 `SCSI` ,编号为 `1` ,存储选择 `local-lvm`
![虚拟机ci参数](img/Template/vm_ci_details.png)
### 2.4.虚拟机添加串行端口
有些云镜像需要用到 `serial` 端口作为视频输出端口,不然虚拟机无法启动,因此给 Debian 虚拟机添加串行端口。
点击顶部 `添加` 按钮,选择 `串行端口`
![虚拟机添加串口](img/Template/vm_serial.png)
串行端口编号为 `0`
![虚拟机串口参数](img/Template/vm_serial_details.png)
虚拟机硬件设备修改完成后,如下图所示:
![虚拟机全部硬件](img/Template/vm_hardware_all.png)
## 3.调整虚拟机配置参数
进入左侧虚拟机 `选项` 菜单,可以看到当前虚拟机的配置参数。
通常情况下,Debian 虚拟机的配置参数需要修改以下几个:
1. 开机自启动(模板无需修改,克隆的虚拟机需要修改)
2. 启动/关机顺序(模板无需修改,克隆的虚拟机需要修改)
3. 引导顺序(仅模板需要修改)
4. 使用平板指针(仅模板需要修改)
### 3.1.修改引导顺序
鼠标 **双击** `引导顺序` 选项,进入编辑界面。
`scsi0` 设备处,勾选前面的 “已启用” 复选框,并使用行首的排序功能,将该设备拖拽到第一个。
然后点击 `OK` 按钮:
![虚拟机引导顺序](img/Template/vm_boot.png)
### 3.2.修改平板指针设置
关闭 `使用平板指针` 选项,可以一定程度上降低虚拟机的 CPU 使用率。
![虚拟机平板指针](img/Template/vm_tablet.png)
## 4.设置Cloud-Init
进入左侧虚拟机 `Cloud-Init` 菜单,可以看到当前虚拟机的初始化参数。
根据之前的网络规划,内网的 IP 地址段为 `172.16.1.0/24` ,因此 Debian 虚拟机模板的参数如下:
|参数|值|说明|
|--|--|--|
|用户|fox|新系统的管理员账户|
|密码|********|使用强密码|
|DNS域|fox.lab|内网域名(可选)|
|DNS服务器|`172.16.1.1 fc00::1`|本机DNS服务器,用空格隔开|
|SSH公钥|无|使用秘钥登录服务器,暂不使用|
|IP配置(net0)|`ip=172.16.1.240/24,gw=172.16.1.1,ip6=fc00::f0/64`|模板的 IP 设置|
**说明:**
修改 `Cloud-Init` 参数时,需要在虚拟机关机情况下修改才会生效。
`DNS服务器` 设置部分,如果先设置了 `127.0.0.1` 作为虚拟机 DNS 服务器,后续其他 DNS 的 IP 地址将被虚拟机忽略。
此时内网没有其他 DNS 服务器存在,因此 `DNS服务器` 先设置为 `172.16.1.1 fc00::1` IP 之间用空格隔开。
在使用 Debian 模板克隆出新虚拟机之后,再对新虚拟机调整 IP 设置比较好。
`Cloud-Init``IP配置` ,如下图所示:
![CI网络配置](img/Template/vm_ci_network.png)
设置完成后,Debian 虚拟机必要参数全部设置完成,可以将该虚拟机开机。
-608
View File
@@ -1,608 +0,0 @@
## 1.配置Debian系统
在上一篇文章 [4.PVE创建模板虚拟机](./4.PVE创建模板虚拟机.md) 中,我们已经创建好了用于制作虚拟机模板的 Debian 虚拟机。
并调整了模板虚拟机的硬件参数、配置参数,但还需对 Debian 系统进行调整。
此时可以将 Debian 虚拟机开机,并使用 `Cloud-Init` 中设置的账号密码进行登录。
### 1.1.启用SSH密码登录
因为 Debian 的云镜像默认使用秘钥登录,因此切换到左侧菜单的 `控制台` 进行操作:
![登录Debian操作系统](img/Template/os_login.png)
在 Debian 虚拟机的命令行界面,使用 `nano` 编辑器编辑 `sshd` 服务的配置文件,执行以下命令:
```bash
## 编辑 ssh 配置文件
sudo nano /etc/ssh/sshd_config.d/fox_sshd.conf
```
在编辑器对话框中输入以下内容,注意命令中间的空格:
```bash
PasswordAuthentication yes
PermitEmptyPasswords no
UseDNS no
```
`nano` 编辑器常用操作如下:
- 在编辑文件时,可以用键盘 `方向键` 移动光标位置
- 在保存文件时,按下键盘 `ctrl 和 x` 组合键,再按下键盘 `y` 键,即可保存
然后,重启 SSH 服务:
```bash
## 重启 sshd
sudo systemctl restart ssh.service
```
就可以像往常一样,通过 SSH 工具远程访问 Debian 虚拟机了。
### 1.2.配置系统软件源
使用 SSH 工具登录 Debian 虚拟机,常用 SSH 工具可以看之前文章中的 [SSH 工具推荐](./1.PVE系统安装.md#03ssh工具) 。
首先需要对 Debian 系统的软件源进行修改,这里使用 USTC 镜像站作为演示。
以后当系统版本发生变化时,请参考使用 snullp 大叔开发的 [配置生成器](https://mirrors.ustc.edu.cn/repogen/) 。
逐条执行以下命令:
```bash
## 进入系统源配置文件目录
cd /etc/apt/
## 备份旧的系统源配置文件
sudo mv sources.list sources.list.bak
## 创建新的系统源配置文件
sudo nano sources.list
```
`nano` 编辑器对话框中输入以下内容(注释了 `deb-src` 以便加快软件源同步速度),并保存:
```bash
deb https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free
# deb-src https://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free
deb https://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free
deb https://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free
deb https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main contrib non-free
# deb-src https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main contrib non-free
```
更新软件源的同步内容,并更新系统,逐条执行以下命令:
```bash
## 清理不必要的包
sudo apt clean && sudo apt autoclean && sudo apt autoremove --purge
## 更新软件源
sudo apt update
## 更新系统
sudo apt dist-upgrade
```
接下来安装系统必要软件,Adguard Home 将采用 `snap` 形式安装,逐条执行以下命令:
```bash
## 安装系统软件
sudo apt install qemu-guest-agent zsh git curl htop lm-sensors vim tmux nftables sshguard
## 安装系统自动更新工具
sudo apt install unattended-upgrades apt-listchanges powermgmt-base python3-gi
## 安装网络工具
sudo apt install iperf iperf3 iftop lsof ldnsutils dhcpcd5
## 安装 snap
sudo apt install snapd
## 安装 Adguard Home
sudo snap install adguard-home
## 写入磁盘
sudo sync
```
Adguard Home 安装完成后,先停止其服务:
```bash
## 停止 Adguard Home
sudo snap stop adguard-home
```
### 1.3.配置网卡IPv4
使用 `Cloud-Init` 并给虚拟机分配了静态 IPv4 地址后,虚拟机的网卡还会从路由器的 DHCP 再获取一个 IPv4 地址。
这个功能在给虚拟机添加网卡设备时很有用,但本 Debian 虚拟机模板的使用场景只需要一个静态 IPv4 地址,因此需要禁用网卡自动获取 IPv4 地址的功能。
执行以下命令对网卡的配置文件进行修改:
```bash
## 修改 Debian 网卡配置文件
sudo nano /etc/network/interfaces
```
`nano` 编辑器对话框中,将 `source-directory /run/network/interfaces.d` 这行内容 “注释” 掉,参考如下内容:
```bash
## 网卡配置文件示例
# Cloud images dynamically generate config fragments for newly
# attached interfaces. See /etc/udev/rules.d/75-cloud-ifupdown.rules
# and /etc/network/cloud-ifupdown-helper. Dynamically generated
# configuration fragments are stored in /run:
# source-directory /run/network/interfaces.d ## 在这行前面增加注释符 # 来注释
```
将配置保存后,可以将模板虚拟机重启。
在系统重启完成后,执行以下命令检查系统的 IPv4 地址状态:
```bash
## 检查系统 IP 地址状态
ip a
```
如果系统网卡有且仅有一个 IPv4 地址,且该 IPv4 地址与 `Cloud-Init` 中设置的 IPv4 地址相同,则表示系统网卡已正确设置。
### 1.4.配置网卡IPv6
使用 `Cloud-Init` 并给虚拟机分配了静态 IPv6 地址后,该地址为私有 ULA 地址,此时虚拟机的网卡不会以 `SLAAC` 的方式配置 IPv6 地址。
如果上级路由器没有设置 `NAT66` ,且将公网 GUA 地址的 `Prefix` 通告到内网时,虚拟机将无法自动生成 GUA 地址,从而导致无法访问 IPv6 网络。
因此引入 `dhcpcd` 工具,在正确配置虚拟机 IPv6 地址的同时,保持与 `Cloud-Init` 网卡配置的兼容性。
执行以下命令对网卡的配置文件进行修改:
```bash
## 备份 dhcpcd 配置文件
sudo mv /etc/dhcpcd.conf /etc/dhcpcd.conf.bak
## 修改 dhcpcd 配置文件
sudo nano /etc/dhcpcd.conf
```
在编辑器对话框中输入以下内容,注意命令中间的空格:
```bash
# This configuration file is customized by fox
# Optimize dhcpcd parameters for dns server
# Only configure IPv6
ipv6only
# Inform the DHCP server of our hostname for DDNS.
hostname
# A list of options to request from the DHCP server.
nooption domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
# Respect the network MTU.
option interface_mtu
# A ServerID is required by RFC2131.
require dhcp_server_identifier
# Generate Stable Private IPv6 Addresses based from the DUID
slaac private
# Don't send any ARP requests.
noarp
```
保存该配置文件后,重启系统或者执行以下命令重启 `dhcpcd` 服务:
```bash
## 重启 dhcpcd 服务
sudo systemctl restart dhcpcd.service
```
### 1.5.调整系统内核参数
由于该 Debian 虚拟机模板将用于克隆内网 DNS 服务器,因此需要调整一部分系统内核参数来简单优化性能。
执行以下命令对 `sysctl` 的配置文件进行修改:
```bash
## 调整系统内核参数
sudo nano /etc/sysctl.d/99-sysctl.conf
```
在配置文件末尾输入以下内容,注意命令中间的空格:
```bash
# This configuration file is customized by fox
# Optimize system parameters
kernel.panic = 20
kernel.panic_on_oops = 1
net.core.default_qdisc = fq_codel
net.ipv4.tcp_congestion_control = bbr
# Other adjustable system parameters
net.ipv4.conf.all.log_martians = 1
net.ipv4.icmp_ratelimit = 100
net.ipv4.igmp_max_memberships = 100
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 120
net.ipv4.tcp_max_orphans = 4096
net.ipv4.tcp_max_tw_buckets = 4096
net.ipv4.tcp_syncookies = 1
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0
```
保存该配置文件后,重启系统或者执行以下命令让配置生效:
```bash
## 让内核参数生效
sudo sysctl -f
```
### 1.6.调整系统时间
默认情况下的 Debian 云镜像的系统时间可能不正确,执行以下命令将系统时区设置为中国时区:
```bash
## 设置系统时区
sudo timedatectl set-timezone Asia/Shanghai
```
设置完成后,执行以下命令检查系统时间:
```bash
## 检查系统时区
date -R
```
Debian 普通镜像常用 `systemd-timesyncd.service` 来同步时间,而 Debian 云镜像使用 `chrony.service` 来同步时间。
为了使用国内的 NTP 服务器,需要对 `chrony.service` 进行配置。
执行以下命令对 `chrony` 的配置文件进行修改:
```bash
## 编辑 chrony 配置文件
sudo nano /etc/chrony/chrony.conf
```
在编辑器对话框中,将 `pool 2.debian.pool.ntp.org iburst` 这行内容 “注释” 掉,并添加国内的 NTP 服务器,参考如下内容:
```bash
## chrony 服务配置文件示例
# Use Debian vendor zone.
# pool 2.debian.pool.ntp.org iburst ## 在这行前面增加注释符 # 来注释
# Use Custom vendor zone.
pool ntp.tencent.com iburst
pool ntp.aliyun.com iburst
```
保存该配置文件后,重启 `chrony` 服务:
```bash
## 重启 chrony 服务
sudo systemctl restart chrony.service
```
再检查系统 NTP 服务器是否被正确修改:
```bash
## 检查系统 NTP 服务器
chronyc sources -V
```
如果输出以下类似内容,则表示系统 NTP 服务设置正确:
```bash
## NTP 服务示例输出
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^+ 139.199.215.251 2 10 177 244 -1669us[-1757us] +/- 67ms
^* 203.107.6.88 2 10 377 105 -1005us[-1094us] +/- 19ms
```
### 1.7.配置系统自动更新
配置 Debian 模板虚拟机的系统自动更新,与配置 PVE 系统自动更新方法基本一致,参阅 [PVE系统自动更新](./3.PVE系统调整.md#5pve系统自动更新) 。
配置系统更新之前,先检查当前系统定时器状态:
```bash
## 检查系统定时器
sudo systemctl status apt-daily-upgrade.timer
```
配置系统自动更新策略,执行以下命令,使用键盘 `左右方向键` 进行选择,`回车键` 进行确认:
```bash
## 配置自动更新策略
sudo dpkg-reconfigure -plow unattended-upgrades
## 选择 “是” (“YES”)
## 示例输出
Creating config file /etc/apt/apt.conf.d/20auto-upgrades with new version
```
接下来调整 apt 的 `20auto-upgrades` 配置文件:
```bash
## 进入 apt 的配置目录
cd /etc/apt/apt.conf.d
## 编辑 20auto-upgrades 配置文件
sudo nano 20auto-upgrades
## 删除里面全部内容并填写以下内容
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "5";
APT::Periodic::AutocleanInterval "1";
APT::Periodic::CleanInterval "1";
```
其中,用来控制系统更新周期的为 `APT::Periodic::Unattended-Upgrade` 这行内容,其中参数 `"5"` 表示更新周期为 `5` 天。
再调整 apt 的 `50unattended-upgrades` 配置文件,所有修改项目汇聚如下:
```bash
## 进入 apt 的配置目录
cd /etc/apt/apt.conf.d
## 编辑 50unattended-upgrades 配置文件
sudo nano 50unattended-upgrades
## 删除以下行前面的注释符 // ,代表启用
"origin=Debian,codename=${distro_codename}-updates";
## 删除以下行前面的注释符,代表启用,并调整参数
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
Unattended-Upgrade::Remove-New-Unused-Dependencies "true";
Unattended-Upgrade::Remove-Unused-Dependencies "true";
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:30";
```
因为该配置文件很长,文章中留下一份 Debian 中已配置好的文件 [Fox_Debian_50unattended_Upgrades.conf](./src/Fox_Debian_50unattended_Upgrades.conf) ,以便对比。
两个配置文件均修改完成后,需要重设系统自动更新触发器,执行以下命令:
```bash
## 重设自动更新触发器时间为凌晨02:00
sudo systemctl edit apt-daily-upgrade.timer
## 根据文件中的提示,在中间空白处填入以下内容
[Timer]
OnCalendar=
OnCalendar=02:00
RandomizedDelaySec=0
```
重启触发器,并检查其状态,执行以下命令:
```bash
## 重启触发器
sudo systemctl restart apt-daily-upgrade.timer
## 再次检查触发器状态
sudo systemctl status apt-daily-upgrade.timer
```
在输出结果中看到系统自动更新的触发时间为凌晨 `02:00` 则表示设置正确。
### 1.8.配置Snap自动更新
先查看 Snap 当前的更新策略,执行以下命令:
```bash
## 显示当前 Snap 自动更新设置
sudo snap refresh --time
```
将 Snap 自动更新时间设置为每天 `2:30-3:30``14:30-15:30` 两个时间段:
```bash
## 修改 Snap 自动更新时间
sudo snap set system refresh.timer=2:30-3:30,14:30-15:30
## 其他 Snap 自动更新时间设置语法参考
sudo snap set system refresh.timer=mon,2:30,,fri,2:30
```
### 1.9.配置系统定时任务
本步骤为可选操作,主要设置定时重启 Snap 服务以及操作系统。
```bash
## 查看系统定时任务
sudo crontab -l
## 编辑系统定时任务,编辑器选择 nano
sudo crontab -e
## 定时重启 Snap 服务、操作系统
0 5 * * * snap restart adguard-home
0 6 8,24 * * /usr/sbin/reboot
```
### 1.10.配置ZSH
`Zsh` 是比 `Bash` 好用的 `Shell` 程序,使用 `oh-my-zsh` 进行配置:
```bash
## 返回 home 目录
cd
## 使用 curl 安装 oh-my-zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
## 或者使用 wget 安装 oh-my-zsh
sh -c "$(wget https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)"
## 询问是否切换默认 shell,输入 Y
## 示例输出
Time to change your default shell to zsh:
Do you want to change your default shell to zsh? [Y/n] y
```
### 1.11.清理系统
Debian 模板虚拟机已经配置完成,在将其转换为模板前需要对系统进行清理。
逐条执行以下命令,注意命令中的空格:
```bash
## 清理系统软件包
sudo apt clean && sudo apt autoclean && sudo apt autoremove --purge
## 清理系统缓存
sudo rm -rvf /var/cache/apt/* /var/lib/apt/lists/* /tmp/*
## 清理系统日志
sudo find /var/log/ -type f | xargs sudo rm -rvf
## 清理命令历史记录文件
rm -rvf ~/.bash_history ~/.zsh_history
## 清理命令历史
history -c
```
## 2.虚拟机转为模板
将 Debian 模板虚拟机关机,并进入 PVE 的 WEB 管理界面。
在左侧虚拟机列表中,鼠标 **右键单击** Debian 模板虚拟机,在弹出的菜单中选择 `转换成模板`
![虚拟机转模板](img/Template/vm_to_template.png)
需要说明的是,虚拟机 `转换成模板` 的操作是不可逆的。
如果某些 Debian 系统的配置项有问题,只能在用该模板克隆出来的新虚拟机中进行修改,或者删除并重新制作模板。
## 3.额外说明
本文中 Debian 云镜像的系统配置方法大多也适用于 Debian 普通镜像。
但有关 IP 地址、DNS、系统时区等内容的配置方法在 Debian 普通镜像上有区别。
而且,如果使用 Debian 普通镜像制作虚拟机模板,建议不要使用 `Cloud-Init` ,以避免某些配置发生变化。
使用 Debian ISO 镜像安装完操作系统后,修改网卡 IP 地址配置,需要执行以下命令:
```bash
## Debian 普通镜像调整网卡配置
sudo vim /etc/network/interfaces
```
在网卡的配置文件中需要修改 `address``dns-nameservers` 等参数,完整配置文件参考如下:
```bash
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug ens18
iface ens18 inet static
address 172.16.1.2/24
gateway 172.16.1.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 172.16.1.3
dns-search fox.lab
```
检查系统的 `hosts` ,执行以下命令:
```bash
## 检查系统 hosts
cat /etc/hosts
## 示例输出
127.0.0.1 localhost
172.16.1.2 dns001.fox.lab dns001
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
```
Debian 普通镜像需要手动修改系统 DNS 配置,执行以下命令:
```bash
## Debian 普通镜像修改系统 DNS
sudo vim /etc/resolv.conf
```
在编辑器对话框中输入以下内容,注意命令中间的空格:
```bash
search fox.lab
nameserver 172.16.1.3
nameserver fc00::3
nameserver 127.0.0.1
```
Debian 普通镜像使用 `systemd-timesyncd.service` 来同步系统时间,检查服务状态:
```bash
## 检查 Debian 普通镜像 NTP 服务器状态
sudo systemctl status systemd-timesyncd.service
```
调整 NTP 服务,逐条执行以下命令:
```bash
## 创建 NTP 配置文件的文件夹
sudo mkdir /etc/systemd/timesyncd.conf.d
## 创建 NTP 配置文件
sudo nano /etc/systemd/timesyncd.conf.d/server_ntp.conf
```
在 nano 编辑器对话框中输入以下内容,并保存:
```bash
[Time]
NTP=ntp.tencent.com ntp.aliyun.com
```
重启 NTP 服务:
```bash
## 重启 NTP 服务
sudo systemctl restart systemd-timesyncd.service
```
-63
View File
@@ -1,63 +0,0 @@
## 1.克隆虚拟机
在上一篇文章 [5.PVE创建模板虚拟机](./5.PVE制作虚拟机模板.md) 中,我们已经制作好了虚拟机模板。
接下来将使用该模板克隆出新的虚拟机,并使用 Adguard Home 作为内网的 DNS 服务器。
鼠标 **右键单击** 虚拟机模板,在弹出的菜单中选择 `克隆`
![克隆虚拟机](img/Template/vm_clone.png)
在弹出的虚拟机克隆对话框中,根据实际情况及下方表格内容,修改虚拟机参数:
|参数|值|说明|
|--|--|--|
|目标节点|hyper|当前 PVE 服务器节点|
|VM ID|501|可自由定义,不能与现存虚拟机 `VM ID` 相同|
|名称|DNS001|可自由定义,`Cloud-Init` 将使用该名称作为虚拟机 `hostname` |
|模式|完整克隆|选择虚拟机的克隆模式|
|目标存储|local-lvm|克隆出的虚拟机文件存储位置|
![克隆虚拟机参数](img/Template/vm_clone_vmid.png)
参数修改完成后,点击 `克隆` 按钮即可使用该模板克隆出新的虚拟机。
## 2.调整新虚拟机Cloud-Init
克隆出来的虚拟机的 `Cloud-Init` 参数默认与模板完全一致。
根据之前的网络规划,内网 DNS 服务器 IP 地址分别为:
- `172.16.1.2/24 (fc00::2/64)`
- `172.16.1.3/24 (fc00::3/64)`
因此需要调整新虚拟机的 `Cloud-Init` 参数:
![调整新虚拟机Cloud-Init](img/Template/vm_clone_ci.png)
- `DNS服务器` 参数为 `172.16.1.3 fc00::3 127.0.0.1`
- `IP配置` 中的 IPv4 地址参数为 `172.16.1.2/24` ,网关保持 `172.16.1.1` 不变
- `IP配置` 中的 IPv6 地址参数为 `fc00::2/64` ,网关保持为空
这样设置的用意是,让内网两台 DNS 服务器相互提供 DNS 服务。
但如果内网中仅需一台 DNS 服务器,则 `DNS服务器` 参数可设为本机地址,即 `172.16.1.2 fc00::2 127.0.0.1`
此处需要注意的是,如果修改了 `用户` 参数,相当于新建了一个系统管理员,之前设置的 `oh-my-zsh` 需要在新管理员下重新设置。
## 3.调整新虚拟机配置参数
在创建模板虚拟机的文章中有提到过,新虚拟机需要修改 [配置参数](./4.PVE创建模板虚拟机.md#3调整虚拟机配置参数) 才能自动启动。
将新虚拟机的 `开机自启动` 设置为 `是`
![克隆虚拟机自动启动](img/Template/vm_clone_autostart.png)
鼠标 **双击** `启动/关机顺序` 选项,调整新虚拟机的自动开机参数:
![克隆虚拟机自动启动顺序](img/Template/vm_clone_autostart_order.png)
`启动/关机顺序``2` ,表示该虚拟机第二个启动,倒数第二个关机。
`启动延时``15` ,表示该虚拟机在 PVE 启动完成后,延迟 15 秒自行启动。
至此,新虚拟机的 IP 地址设置、DNS 设置、自启动设置已经完成。
-69
View File
@@ -1,69 +0,0 @@
## 1.添加备份作业
在所有虚拟机创建并配置完成后,可以使用 PVE 自带的备份功能周期性的将虚拟机备份。
点击 PVE 的 `数据中心` ,在右侧菜单中选择 `备份` 功能。
点击顶部 `添加` 按钮,添加一个备份作业:
![添加备份作业](img/AutoBackup/vm_new_backup_job.png)
### 1.1.备份作业-常规选项
在弹出的 `创建:备份作业` 对话框中,勾选底部的 `Repeat missed` 选项,并修改参数:
|参数|值|说明|
|--|--|--|
|节点|hyper|选择当前 PVE 服务器节点|
|存储|local|选择存放备份文件的路径|
|计划|`*-01,16 03:30`|备份作业执行的时间计划|
|选择模式|包括选中的VMs|执行备份的虚拟机对象|
|发送邮箱至|your_email@qq.com|备份作业邮件收件人邮箱|
|电子邮件|仅在失败时|何时发送备份作业邮件提醒|
|压缩|ZSTD|选择备份文件的压缩算法|
|模式|停止|选择备份虚拟机的方式,推荐使用 `停止` |
|启用|勾选|表示该备份作业为启用状态|
|Job Comment|`Backup Main Router`|备份作业的备注信息,使用英文输入|
|Repeat missed|勾选|表示当意外错过备份执行时间后,将重试备份|
在下方虚拟机列表中,勾选备份作业需要备份的虚拟机(可多选):
![备份作业常规选项](img/AutoBackup/vm_job_normal.png)
**说明:**
计划中的 `*-01,16 03:30` 表示每个月的 1、16 日凌晨 03:30 进行备份作业。
PVE 在正确配置邮件发送功能之前,并不能发出邮件。
`停止` 模式表示备份时会将虚拟机关机,备份完成后再自动开机。
### 1.2.备份作业-保留选项
该选项将控制备份文件的保留个数,选择保留最近 3 次的备份文件:
![备份作业保留选项](img/AutoBackup/vm_job_keep.png)
### 1.3.备份作业-Note Template
该选项将按照设置的内容,自动重命名备份文件。
在 Backup Notes 右侧文本框中输入 `{{vmid}}_{{guestname}}_Auto_Backup`
![备份作业备注选项](img/AutoBackup/vm_job_notes.png)
点击 `创建` 按钮,备份作业创建完成。
## 2.调度模拟器
在创建完成备份作业后,可以使用 `调度模拟器` 来模拟备份作业的执行时间。
鼠标 **单击** 选中一个备份作业,点击右上角的 `调度模拟器`
![备份作业调度模拟器](img/AutoBackup/vm_job_time_test.png)
`计划` 处将显示 `备份作业` 的执行时间参数,点击 `模拟` 按钮,在右侧将显示模拟的时间结果:
![备份作业时间模拟](img/AutoBackup/vm_job_time.png)
确认备份作业的执行时间周期是否符合预期。
-127
View File
@@ -1,127 +0,0 @@
## 1.修改系统Grub参数
参考官方文档 [qm_pci_passthrough](https://pve.proxmox.com/pve-docs/pve-admin-guide.html#qm_pci_passthrough) 和 [Pci passthrough](https://pve.proxmox.com/wiki/Pci_passthrough) 开启 PVE 硬件直通功能。
使用 SSH 工具登录到 PVE 服务器,编辑系统 Grub 的配置文件 `/etc/default/grub`
```bash
## 编辑 Grub 配置文件
nano /etc/default/grub
```
`nano` 编辑器对话框中修改 `GRUB_CMDLINE_LINUX_DEFAULT` 参数,注意命令中间的空格:
```bash
## Intel 处理器添加参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
```
根据官方文档的说明,AMD 处理器下硬件直通功能将会自动打开,否则需要手动修改 Grub 配置文件:
```bash
## AMD 处理器添加参数
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
```
修改并保存后,需要更新系统 Grub :
```bash
## 更新系统 Grub
update-grub
```
## 2.加载系统内核模块
修改系统 `/etc/modules` 配置文件,增加必要的系统模块:
```bash
## 编辑系统配置文件
nano /etc/modules
```
在配置文件末尾输入以下内容:
```txt
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
```
将配置文件保存,并重启 PVE 服务器。
PVE 服务器重启完成后,再次使用 SSH 工具登录,并使用以下命令检查硬件直通状态:
```bash
## 检查系统硬件直通状态
dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
```
检查 `IOMMU``Directed I/O``Interrupt Remapping` 的启用状态。
N5105 处理器示例输出如下:
```txt
[ 0.016437] ACPI: DMAR 0x00000000787BF000 000088 (v02 INTEL EDK2 00000002 01000013)
[ 0.016472] ACPI: Reserving DMAR table memory at [mem 0x787bf000-0x787bf087]
[ 0.052437] DMAR: IOMMU enabled
[ 0.144431] DMAR: Host address width 39
[ 0.144432] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[ 0.144439] DMAR: dmar0: reg_base_addr fed90000 ver 4:0 cap 1c0000c40660462 ecap 49e2ff0505e
[ 0.144441] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[ 0.144446] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da
[ 0.144449] DMAR: RMRR base: 0x0000007b800000 end: 0x0000007fbfffff
[ 0.144452] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1
[ 0.144453] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[ 0.144454] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[ 0.146335] DMAR-IR: Enabled IRQ remapping in x2apic mode
[ 0.333509] pci 0000:00:02.0: DMAR: Skip IOMMU disabling for graphics
[ 0.410824] DMAR: No ATSR found
[ 0.410824] DMAR: No SATC found
[ 0.410826] DMAR: IOMMU feature fl1gp_support inconsistent
[ 0.410827] DMAR: IOMMU feature pgsel_inv inconsistent
[ 0.410829] DMAR: IOMMU feature nwfs inconsistent
[ 0.410829] DMAR: IOMMU feature pds inconsistent
[ 0.410830] DMAR: IOMMU feature eafs inconsistent
[ 0.410831] DMAR: IOMMU feature prs inconsistent
[ 0.410831] DMAR: IOMMU feature nest inconsistent
[ 0.410832] DMAR: IOMMU feature mts inconsistent
[ 0.410832] DMAR: IOMMU feature sc_support inconsistent
[ 0.410833] DMAR: IOMMU feature dev_iotlb_support inconsistent
[ 0.410835] DMAR: dmar0: Using Queued invalidation
[ 0.410838] DMAR: dmar1: Using Queued invalidation
[ 0.412755] DMAR: Intel(R) Virtualization Technology for Directed I/O
```
检查系统 `IOMMU` 分组:
```bash
## 检查 IOMMU group
find /sys/kernel/iommu_groups/ -type l
```
示例输出如下:
```txt
/sys/kernel/iommu_groups/7/devices/0000:00:1c.4
/sys/kernel/iommu_groups/15/devices/0000:04:00.0
/sys/kernel/iommu_groups/5/devices/0000:00:17.0
/sys/kernel/iommu_groups/13/devices/0000:02:00.0
/sys/kernel/iommu_groups/3/devices/0000:00:14.2
/sys/kernel/iommu_groups/3/devices/0000:00:14.0
/sys/kernel/iommu_groups/11/devices/0000:00:1f.0
/sys/kernel/iommu_groups/11/devices/0000:00:1f.5
/sys/kernel/iommu_groups/11/devices/0000:00:1f.3
/sys/kernel/iommu_groups/11/devices/0000:00:1f.4
/sys/kernel/iommu_groups/1/devices/0000:00:02.0
/sys/kernel/iommu_groups/8/devices/0000:00:1c.5
/sys/kernel/iommu_groups/16/devices/0000:05:00.0
/sys/kernel/iommu_groups/6/devices/0000:00:1c.0
/sys/kernel/iommu_groups/14/devices/0000:03:00.0
/sys/kernel/iommu_groups/4/devices/0000:00:16.0
/sys/kernel/iommu_groups/12/devices/0000:01:00.0
/sys/kernel/iommu_groups/2/devices/0000:00:04.0
/sys/kernel/iommu_groups/10/devices/0000:00:1c.7
/sys/kernel/iommu_groups/0/devices/0000:00:00.0
/sys/kernel/iommu_groups/9/devices/0000:00:1c.6
```
+20 -27
View File
@@ -3,39 +3,32 @@
## 介绍 ## 介绍
PVE 虚拟化平台的安装以及折腾手记。 PVE 虚拟化平台的安装以及折腾手记。
- PVE ISO 版本:7.2-1 (Last update: 04 May 2022) - PVE ISO 版本:9.1-1 (更新时间: 2025-11-19)
- 演示机 - PVE 网络
- CPUN5105
- 内存:16G
- 硬盘:SSD 512G
- 内部网络:
- IPv4 网络 - IPv4 网络
- IP 地址:172.16.1.250 - IP 地址:`172.16.1.254`
- 子网掩码:255.255.255.0 - 子网掩码:`255.255.255.0` ( 即 `/24` )
- 网关:172.16.1.1 - 网关:`172.16.1.1`
- DNS172.16.1.1 - DNS`172.16.1.1`
- IPv6 网络 - IPv6 网络
- 前缀:fc00::/60 - 首选 `SLAAC` 自动配置
- 前缀长度:64 - IPv6 ULA 网络使用 `fdac::/64` 作为演示
- IP 地址:fc00::fa
- DNSfc00::1
### 系列章节 ### 系列章节
0. [硬件BIOS配置](./0.硬件BIOS配置.md) 0. [硬件 BIOS 配置](./00.硬件BIOS配置.md)
1. [PVE系统安装](./1.PVE系统安装.md) 1. [PVE 系统安装](./01.PVE系统安装.md)
2. [PVE初始化配置](./2.PVE初始化配置.md) 2. [PVE 初始化配置](./02.PVE初始化配置.md)
3. [PVE系统调整](./3.PVE系统调整.md) 3. [PVE 系统调整](./03.PVE系统调整.md)
4. [PVE创建模板虚拟机](./4.PVE创建模板虚拟机.md) 4. [PVE 创建模板虚拟机](./04.PVE创建模板虚拟机.md)
5. [PVE制作虚拟机模板](./5.PVE制作虚拟机模板.md) 5. [PVE 制作虚拟机模板](./05.PVE制作虚拟机模板.md)
6. [PVE用模板克隆虚拟机](./6.PVE用模板克隆虚拟机.md) 6. [PVE 制作 DNS 服务器](./06.PVE制作DNS服务器.md)
7. [PVE自动备份虚拟机](./7.PVE自动备份虚拟机.md) 7. [PVE 制作 TS 服务器](./07.PVE制作TS服务器.md)
8. [PVE开启硬件直通功能](./8.PVE开启硬件直通功能.md) 8. [PVE 自动备份虚拟机](./08.PVE自动备份虚拟机.md)
### 文章说明 ### 文章说明
1. 本系列文章涉及的部分参数需要手动调整来符合切实使用需求。 1. 本系列文章涉及的部分参数需要手动调整来符合切实使用需求。
2. 随着 PVE 系统的迭代更新,截图中的内容和实际页面显示可能存在差异。 2. 随着 PVE 系统的迭代更新,截图中的内容和实际页面显示可能存在差异。
3. 如需引用,请注明本文出处。 3. 如需引用,请注明本文出处。
Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 208 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 597 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 698 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 298 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 528 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 375 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 236 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 338 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 448 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 410 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 596 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 725 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 173 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 176 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 191 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 160 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 146 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 252 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 828 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 588 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 373 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 KiB

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 224 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 586 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 160 KiB

Some files were not shown because too many files have changed in this diff Show More