Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d0f4ef53a0 | ||
|
|
64595e5190 | ||
|
|
4a53123479 | ||
|
|
99b82b452b | ||
|
|
cf082486fa | ||
|
|
e87732ed00 | ||
|
|
0d97a04ea9 | ||
|
|
517def1376 | ||
|
|
a0a3a02a18 | ||
|
|
2fadc58a84 | ||
|
|
9beb1fba6a | ||
|
|
abccbcad01 | ||
|
|
a7bf1b06eb | ||
|
|
e6aab0f222 | ||
|
|
fcc5c2b019 | ||
|
|
e37d437f0f | ||
|
|
14595919e4 | ||
|
|
88e6f8b867 | ||
|
|
079898b167 | ||
|
|
345001bb14 | ||
|
|
12b5a4aec4 | ||
|
|
a41bd56bc3 | ||
|
|
f8cc6a7689 | ||
|
|
966660a77f | ||
|
|
7ebf3c80c8 | ||
|
|
fbd1e44d11 | ||
|
|
f991ec8525 | ||
|
|
996959f740 | ||
|
|
ed7f9c5fc9 | ||
|
|
730225be93 | ||
|
|
e29dc62978 | ||
|
|
13b46590d0 | ||
|
|
1984f7689e | ||
|
|
698969cadb | ||
|
|
47ebcd6628 | ||
|
|
190342575e | ||
|
|
68dcf6ab21 | ||
|
|
0a926f1bae | ||
|
|
5ce44529bb | ||
|
|
67378607b3 | ||
|
|
df1b4e8907 | ||
|
|
3989c31582 | ||
|
|
f5d82f7435 | ||
|
|
1794aa74fa | ||
|
|
fce332798e | ||
|
|
4a77288f57 | ||
|
|
4ddcd01688 | ||
|
|
ea2221c54c | ||
|
|
b9473852b9 | ||
|
|
8b8fc3e773 | ||
|
|
d2203618af | ||
|
|
96a23ad48f | ||
|
|
9f6a2fe42d | ||
|
|
55a391f95d | ||
|
|
68ae3b55eb | ||
|
|
edcefa98b3 | ||
|
|
96356ac5d1 | ||
|
|
e0ccdbd5db | ||
|
|
0b4d71977f | ||
|
|
93ffd7b960 | ||
|
|
bf387d1584 | ||
|
|
ae92d79d83 | ||
|
|
44a1ee787c | ||
|
|
578d953950 | ||
|
|
792ce9e9e0 | ||
|
|
df3cf10287 | ||
|
|
63316af2d6 | ||
|
|
77a41c719a | ||
|
|
5efe450d78 | ||
|
|
2131e6ae58 | ||
|
|
aefb7ceb00 | ||
|
|
c6ebb95ed3 | ||
|
|
4aaa101400 | ||
|
|
85c2d70b81 | ||
|
|
ade7a53cad | ||
|
|
c1812b2a45 | ||
|
|
c9aa60ecfd | ||
|
|
d912edeb89 | ||
|
|
115cbb68fc | ||
|
|
9082083465 | ||
|
|
3921329fe2 | ||
|
|
31be875c67 | ||
|
|
626dca3fd9 | ||
|
|
1ad903bf10 | ||
|
|
c7c5270356 | ||
|
|
d4f8fe6b52 | ||
|
|
9013217734 | ||
|
|
9995008d1d | ||
|
|
63c299f206 | ||
|
|
6f19505b83 | ||
|
|
53221483fd | ||
|
|
b0ede429fc | ||
|
|
c1446daf89 | ||
|
|
5b80990bd5 | ||
|
|
117020b8b4 | ||
|
|
d49c98b6df | ||
|
|
264bb156ff | ||
|
|
07efdcb28f | ||
|
|
fb78eec84e | ||
|
|
f5e85ddbc2 | ||
|
|
97ffd13089 | ||
|
|
8f08c4af81 | ||
|
|
1edfd2c06f | ||
|
|
fc27f25f94 | ||
|
|
5f8f9603dc | ||
|
|
c768194983 | ||
|
|
509e328c03 | ||
|
|
1dd2c5ae24 | ||
|
|
ea74679b4a | ||
|
|
8a6bdbe207 | ||
|
|
7c6c92d7ed | ||
|
|
01f00f4bc7 | ||
|
|
6d5693a73a | ||
|
|
a0c8b88bab | ||
|
|
1fe6812f30 | ||
|
|
19f5d89152 | ||
|
|
5e228452ec | ||
|
|
1e52d61178 | ||
|
|
d425c1275b | ||
|
|
b129dd215d | ||
|
|
613c562c1c | ||
|
|
184508f0fd | ||
|
|
2b24267c0c | ||
|
|
b5a44c52b2 | ||
|
|
1606e0c74b | ||
|
|
5293258eb8 | ||
|
|
1c88c7327f | ||
|
|
b3fb776f91 | ||
|
|
c69fedc984 | ||
|
|
1915273f81 | ||
|
|
8a72ccebbe | ||
|
|
4600694a36 | ||
|
|
fad611823f | ||
|
|
f13d108c7b | ||
|
|
cb205dda2f | ||
|
|
d613ea63a1 | ||
|
|
664bf13a20 | ||
|
|
ccd3942725 | ||
|
|
573468ca94 | ||
|
|
2c22ba9212 | ||
|
|
c1c6282713 | ||
|
|
8cca306890 | ||
|
|
6b49519190 | ||
|
|
688d6e0809 | ||
|
|
ad51e789de | ||
|
|
0a7fda4e15 | ||
|
|
100c012314 | ||
|
|
945b25304d | ||
|
|
82066a8a21 | ||
|
|
f8b3bfd75e | ||
|
|
36d4809b37 | ||
|
|
b7e6978342 | ||
|
|
03ee8135c8 | ||
|
|
1ce40c7a36 | ||
|
|
8d2f3e98de | ||
|
|
c3e0205fdf | ||
|
|
a606d3f6e4 | ||
|
|
42e0359d03 | ||
|
|
0377b500b6 | ||
|
|
90c7adc62d | ||
|
|
17c0a3f87d | ||
|
|
3143d46834 | ||
|
|
4dda73f087 | ||
|
|
45bcf699d9 | ||
|
|
d153773b1f | ||
|
|
7d8da1f68e | ||
|
|
641aa555b9 | ||
|
|
34e55b8daa | ||
|
|
777e4bb9d7 | ||
|
|
7dceb23655 | ||
|
|
81c5c3456a | ||
|
|
0731dd1fde | ||
|
|
7e62ab3012 | ||
|
|
14022aebbf | ||
|
|
8738625ad9 | ||
|
|
51a6d0005d | ||
|
|
f3a4231218 | ||
|
|
422384497c | ||
|
|
8c26dd2569 | ||
|
|
ae963404b7 | ||
|
|
96f89812de | ||
|
|
968d0637dd | ||
|
|
1166516576 | ||
|
|
f664975bcc | ||
|
|
26fa0b0c10 | ||
|
|
ac2740f888 | ||
|
|
aa1a12757b | ||
|
|
ccef3195ff | ||
|
|
dd3bda21f5 | ||
|
|
547389c182 | ||
|
|
ace58ce24d | ||
|
|
adaeb4a650 | ||
|
|
fa29b0d633 | ||
|
|
94273ae2b6 | ||
|
|
2d32561415 | ||
|
|
0dcfa86d11 | ||
|
|
557ae16217 | ||
|
|
49083bf184 | ||
|
|
9634a10686 | ||
|
|
6f7c78b749 | ||
|
|
04fc40c8e1 | ||
|
|
05ba8586ae | ||
|
|
e8cb9b14f4 | ||
|
|
7b794c11e4 | ||
|
|
d4673a204a | ||
|
|
95913b4d0d | ||
|
|
964fc699e3 | ||
|
|
b3b147ab37 | ||
|
|
cdcc71462b | ||
|
|
999a06f938 | ||
|
|
4bf1e1d523 | ||
|
|
ddc60fd6f1 | ||
|
|
c94872a931 | ||
|
|
d09bd30a25 | ||
|
|
cc5ec05502 | ||
|
|
e0894f3e13 | ||
|
|
360d5b6cab | ||
|
|
8d2cab7155 | ||
|
|
afb5a5859c | ||
|
|
53c3fe877a | ||
|
|
835cbf9b43 | ||
|
|
1b97935413 | ||
|
|
fc67f6f575 | ||
|
|
bc5ea890ad | ||
|
|
fefcd16f82 | ||
|
|
10050fa7ff | ||
|
|
20086c63f7 | ||
|
|
619b96a6fc | ||
|
|
4fbb729d85 | ||
|
|
78fd87188c | ||
|
|
8a737cfb34 | ||
|
|
fcfd177593 | ||
|
|
1336af517e | ||
|
|
b0beb5177f | ||
|
|
921bd8bb31 | ||
|
|
ff1a1a43a7 | ||
|
|
9a9173df92 | ||
|
|
e9ca2b5cda | ||
|
|
0695f8b6b9 | ||
|
|
1657411b7e | ||
|
|
14007e78b8 | ||
|
|
7318726847 | ||
|
|
374c55cbb3 | ||
|
|
7df6ea76b7 | ||
|
|
5e0a8aac54 | ||
|
|
8dd1f08f27 | ||
|
|
9873dd74d1 | ||
|
|
ffaa26a050 | ||
|
|
b17ef026ad | ||
|
|
808094ae3c | ||
|
|
609fcf579b | ||
|
|
022da7d3f9 | ||
|
|
afb2678f68 | ||
|
|
4ed96a4d38 | ||
|
|
f7ff85a805 | ||
|
|
101fc96feb | ||
|
|
01f39562ff | ||
|
|
933bdca053 | ||
|
|
748faac28b | ||
|
|
fe8fbff04c | ||
|
|
50f49ed956 | ||
|
|
b809ecd035 | ||
|
|
eda1d36130 | ||
|
|
c9bf9ae2fd | ||
|
|
38ac1f9702 | ||
|
|
f493c774ab | ||
|
|
09a35e9c31 | ||
|
|
a1e992c956 | ||
|
|
360542f9d4 | ||
|
|
e5a8d8b491 | ||
|
|
3ce5fdba6a | ||
|
|
5ec78ce639 | ||
|
|
b597af908d | ||
|
|
6f085030b3 | ||
|
|
82497488ed | ||
|
|
ee7b34ddf4 | ||
|
|
353dc12fca | ||
|
|
a410d925f4 | ||
|
|
2c48e3a330 | ||
|
|
2344cd77bf | ||
|
|
aba1e70956 | ||
|
|
bbcbc9fe1e | ||
|
|
5bce9e1d44 | ||
|
|
80f7041632 | ||
|
|
ffcae17092 | ||
|
|
0bd3a7cd36 | ||
|
|
eddc39bc40 | ||
|
|
564d56e56f | ||
|
|
80556cacaf | ||
|
|
2c8d775e9e | ||
|
|
19532baa21 | ||
|
|
2ff27e96c3 | ||
|
|
979f03052e | ||
|
|
3a7a506645 | ||
|
|
62c55d9750 | ||
|
|
101b5c64b2 | ||
|
|
497a8c0685 | ||
|
|
00e4fd27e5 | ||
|
|
85d5a3bee5 | ||
|
|
2ae4bda8b3 | ||
|
|
12cadb86ad | ||
|
|
3c9927a362 | ||
|
|
d69101077b | ||
|
|
6497efb00a | ||
|
|
79703f9d62 | ||
|
|
53994238c8 | ||
|
|
ddcdc18564 | ||
|
|
f505690ed6 | ||
|
|
96cb5ddcdc | ||
|
|
2858ba97c4 | ||
|
|
833817d85c | ||
|
|
7097fb5d73 | ||
|
|
52f3be600b | ||
|
|
0a9a2ee8fe | ||
|
|
ed3c106e27 | ||
|
|
c94d7d31fc | ||
|
|
abf168587d | ||
|
|
3e9a8eae07 | ||
|
|
090ab28970 | ||
|
|
59ebf178c7 | ||
|
|
249717ed89 | ||
|
|
2520ce4839 | ||
|
|
5d5750f120 | ||
|
|
f90dd7a7c8 | ||
|
|
730773e42b | ||
|
|
c00e178df3 | ||
|
|
f8c7676c85 | ||
|
|
29592abb40 | ||
|
|
62b2641413 | ||
|
|
04023ac155 | ||
|
|
4dcb3ff7a9 | ||
|
|
ca30a2f9e9 | ||
|
|
88ea495d5a | ||
|
|
d08a3acf74 | ||
|
|
d26f303437 | ||
|
|
ed0db21a9f | ||
|
|
18e02bc9c8 | ||
|
|
6882b01afc | ||
|
|
fec6ae3e56 | ||
|
|
660551f2fc | ||
|
|
80afa7dfe7 | ||
|
|
509b344c69 | ||
|
|
3b3a3361fa | ||
|
|
fba7575503 | ||
|
|
4d77f0415e | ||
|
|
8b35afeec5 | ||
|
|
e0c69c3fa5 | ||
|
|
410f6e8d2e | ||
|
|
56d9125152 | ||
|
|
779b75f3a8 | ||
|
|
b0c7a2d4ce | ||
|
|
b84dbe3872 | ||
|
|
1555ec02ca | ||
|
|
906db9eac4 | ||
|
|
0d091d93c1 | ||
|
|
b347128ec5 | ||
|
|
1e5a55de64 | ||
|
|
d052923897 | ||
|
|
ba0afba7eb | ||
|
|
6aa24ecb61 | ||
|
|
454ae86aba | ||
|
|
24b087aa1e | ||
|
|
56317210a6 | ||
|
|
d8e7753112 | ||
|
|
4700bc1c52 | ||
|
|
29f6296a1c | ||
|
|
891d8ef2f6 | ||
|
|
e4117816c5 | ||
|
|
b109b0d840 | ||
|
|
8bc4dd8587 | ||
|
|
eef810d850 | ||
|
|
752c233013 | ||
|
|
8b62f62420 | ||
|
|
46d0e0ce4a | ||
|
|
f643128cf5 | ||
|
|
165f6ea9dc | ||
|
|
7fc7ab2466 | ||
|
|
2407555015 | ||
|
|
5b65602c07 | ||
|
|
a2b1278038 | ||
|
|
07d5ea174a | ||
|
|
554b2bd6d4 | ||
|
|
145328fb3c | ||
|
|
9691336e5c | ||
|
|
f7ce11e99d | ||
|
|
eb631a1cdc | ||
|
|
46ce4e4ee3 | ||
|
|
0bd03af309 | ||
|
|
767c31694d | ||
|
|
b27372c20d | ||
|
|
b830088e5e | ||
|
|
9f5884befb | ||
|
|
8af7ef896b | ||
|
|
09a60d3ae4 | ||
|
|
830655bd52 | ||
|
|
95023d68d3 | ||
|
|
d8e6a50166 | ||
|
|
e6d805fba5 | ||
|
|
9386f961d1 | ||
|
|
b84666a6b6 | ||
|
|
07526b9ada | ||
|
|
e31338113d | ||
|
|
7eda1b4eef | ||
|
|
3b1a9e4f00 | ||
|
|
7288a7ba8b | ||
|
|
63631e6ad3 | ||
|
|
5ed5ac768b | ||
|
|
ae5b3e1e82 | ||
|
|
b7857fcd66 | ||
|
|
81101cde20 | ||
|
|
99e4a94a9f | ||
|
|
c4294612eb | ||
|
|
38df9bd3e4 | ||
|
|
0019ac0fbc | ||
|
|
1b8caefe58 | ||
|
|
9804c8964e | ||
|
|
861e468aa6 | ||
|
|
90bc8f942b | ||
|
|
09f4738295 | ||
|
|
ea71df8c8c | ||
|
|
1a8c107333 | ||
|
|
c40ba60a6e | ||
|
|
9494d82747 | ||
|
|
f89c38f8d8 | ||
|
|
6a9202a62b | ||
|
|
8a10db07d1 | ||
|
|
17ab25b998 | ||
|
|
17ae656734 | ||
|
|
b28bb464c1 | ||
|
|
0fd5dc83f2 | ||
|
|
ee64d1e961 | ||
|
|
636bbfb62b | ||
|
|
bb19e4f7dd | ||
|
|
b8a0db90a3 | ||
|
|
ec7034f2f1 | ||
|
|
60f0b0940c | ||
|
|
a8da3fa115 | ||
|
|
37373fbdcd | ||
|
|
e96b379620 | ||
|
|
4795c730c9 | ||
|
|
bf4d22b10b | ||
|
|
22806b5657 | ||
|
|
9f86e73f61 | ||
|
|
fdceec75ba | ||
|
|
182a939f5e | ||
|
|
b71d013431 | ||
|
|
e64d6f9b7f |
@@ -4,17 +4,13 @@ PVE 系统正式安装之前,需要准备 PVE 的安装镜像和一些必要
|
|||||||
|
|
||||||
### 0.1. PVE 镜像下载
|
### 0.1. PVE 镜像下载
|
||||||
|
|
||||||
PVE 下载地址:https://www.proxmox.com/en/downloads
|
PVE 下载地址:[Proxmox Virtual Environment](https://www.proxmox.com/en/downloads/proxmox-virtual-environment/iso)
|
||||||
|
|
||||||
页面中可能有多个 PVE 的安装 ISO ,可以根据需要进行选择,目前以最新的 `Proxmox VE 8.0 ISO` 作为演示。
|
页面中有多个 PVE 相关文件,本文以目前最新的 `Proxmox VE 9.x ISO Installer` 作为演示。
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
点击 `Proxmox VE 8.x ISO Installer` 链接。
|
|
||||||
|
|
||||||
下载 ISO 时请注意 `SHA256SUM` ,后续将使用该校验信息对下载下来的 ISO 进行校验,以确保 ISO 文件的完整性。
|
下载 ISO 时请注意 `SHA256SUM` ,后续将使用该校验信息对下载下来的 ISO 进行校验,以确保 ISO 文件的完整性。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 0.2.启动盘制作工具
|
### 0.2.启动盘制作工具
|
||||||
|
|
||||||
@@ -24,11 +20,9 @@ PVE 下载地址:https://www.proxmox.com/en/downloads
|
|||||||
|
|
||||||
官方网站地址:https://www.ventoy.net/cn/index.html
|
官方网站地址:https://www.ventoy.net/cn/index.html
|
||||||
|
|
||||||
强烈推荐的引导盘制作工具,优点是可以在一个 U 盘中放入复数个可引导的 ISO 文件。
|
其优点在于可在单个 U 盘内存储多个可引导 ISO 文件,省去多次格式化 U 盘并写入 ISO 的操作,使用便捷。
|
||||||
|
|
||||||
免去了多次格式化 U 盘再写入 ISO 文件的操作,非常友好。
|
缺点是仅支持 Windows 与 Linux 系统,且部分机型可能无法在 UEFI 模式下启用 Secure Boot(安全启动)。
|
||||||
|
|
||||||
缺点是只支持 Windows 、Linux 。
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -50,25 +44,31 @@ PVE 下载地址:https://www.proxmox.com/en/downloads
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 0.3. SSH 工具
|
### 0.3.终端工具
|
||||||
|
|
||||||
考虑到配置 PVE 服务器、路由器、DNS 服务器时,需要在 CLI 中输入命令,因此这里推荐几个常用的 SSH 工具。
|
考虑到配置 PVE 服务器、路由器及 DNS 服务器时需在 CLI 中执行命令,以下推荐几款常用终端工具。
|
||||||
|
|
||||||
#### Tabby
|
#### Windows Terminal
|
||||||
|
|
||||||
官方网站地址:https://tabby.sh
|
官方网站地址:https://aka.ms/terminal
|
||||||
|
|
||||||
基于 Electron 开发的开源跨平台终端工具,内部集成了 SFTP ,可以在 Github 平台上进行下载。
|
Microsoft 官方终端工具,可以在 Github 平台或 Microsoft 应用商店中进行下载。
|
||||||
|
|
||||||
支持 Windows 、macOS 、Linux 。
|

|
||||||
|
|
||||||

|
#### Termius
|
||||||
|
|
||||||
|
官方地址:https://termius.com/
|
||||||
|
|
||||||
|
企业级终端工具,支持 Windows、macOS、Linux 系统以及移动端系统。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
#### MobaXterm
|
#### MobaXterm
|
||||||
|
|
||||||
官方地址:https://mobaxterm.mobatek.net
|
官方地址:https://mobaxterm.mobatek.net
|
||||||
|
|
||||||
功能强大的 SSH 工具,仅支持 Windows 。
|
功能强大的终端工具,仅支持 Windows 系统。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -78,19 +78,21 @@ PVE 下载地址:https://www.proxmox.com/en/downloads
|
|||||||
|
|
||||||
在设置 BIOS 时需要注意以下几点:
|
在设置 BIOS 时需要注意以下几点:
|
||||||
|
|
||||||
- 建议暂时关闭 **安全启动**
|
- 确保启用了硬件虚拟化支持
|
||||||
|
|
||||||
- 确保打开硬件虚拟化支持
|
- 确保启用了设备来电自启动
|
||||||
|
|
||||||
- 确保设备来电自动启动
|
|
||||||
|
|
||||||
- 对于不支持 `UEFI` 启动的设备,检查 `Legacy` 引导模式
|
|
||||||
|
|
||||||
- 检查 CPU 的功耗设置(可选)
|
- 检查 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.设备引导
|
### 1.1.设备引导
|
||||||
|
|
||||||
使用 Ventoy 进行设备引导后,出现如下画面,选择 PVE 的安装 ISO 。
|
使用 Ventoy 进行设备引导后出现如下画面,需选择 PVE 的安装 ISO 进行系统引导。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
@@ -112,23 +114,23 @@ PVE 下载地址:https://www.proxmox.com/en/downloads
|
|||||||
|
|
||||||
使用 `方向键` 选择第一项 `Install Proxmox VE (Graphical)` 图形化安装界面,按键盘 `Enter` 进入下一步骤。
|
使用 `方向键` 选择第一项 `Install Proxmox VE (Graphical)` 图形化安装界面,按键盘 `Enter` 进入下一步骤。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
设备将继续跑码,直到出现最终用户许可协议 EULA ,按键盘组合键 `ALT + N ` 进入下一步骤。
|
设备将继续跑码,直到出现最终用户许可协议 EULA ,按键盘组合键 `ALT + N ` 进入下一步骤。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 1.3. PVE 硬盘选项
|
### 1.3. PVE 硬盘选项
|
||||||
|
|
||||||
此时会出现 `Target Harddisk` 选项,会显示出设备中存在的硬盘列表,可通过下拉框选择安装 PVE 的目标硬盘。
|
此时会出现 `Target Harddisk` 选项,会显示出设备中存在的硬盘列表,可通过下拉框选择安装 PVE 的目标硬盘。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
点击硬盘列表右侧的 `Options` ,对 PVE 的硬盘安装参数进行一些调整。
|
点击硬盘列表右侧的 `Options` ,对 PVE 的硬盘安装参数进行一些调整。
|
||||||
|
|
||||||
推荐将 `Filesystem` 也就是硬盘的文件系统,设置成 `xfs` 。
|
推荐将 `Filesystem` 也就是硬盘的文件系统,设置成 `xfs` 。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 1.4. PVE 时区选项
|
### 1.4. PVE 时区选项
|
||||||
|
|
||||||
@@ -136,7 +138,7 @@ PVE 下载地址:https://www.proxmox.com/en/downloads
|
|||||||
|
|
||||||
在 `Contry` 处手动输入 `China` ,下方的 `Time zone` 将自动变更为 `Asia/Shanghai` 。
|
在 `Contry` 处手动输入 `China` ,下方的 `Time zone` 将自动变更为 `Asia/Shanghai` 。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 1.5. PVE 账户与邮箱
|
### 1.5. PVE 账户与邮箱
|
||||||
|
|
||||||
@@ -144,7 +146,7 @@ PVE 为最关键的虚拟化层,建议使用强密码,包含大小写字母
|
|||||||
|
|
||||||
`Email` 必须为一个 “合法” 的邮箱地址,不然系统会判定邮箱地址不合法并拒绝继续安装。
|
`Email` 必须为一个 “合法” 的邮箱地址,不然系统会判定邮箱地址不合法并拒绝继续安装。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 1.6. PVE 网络设置
|
### 1.6. PVE 网络设置
|
||||||
|
|
||||||
@@ -152,36 +154,36 @@ PVE 为最关键的虚拟化层,建议使用强密码,包含大小写字母
|
|||||||
|
|
||||||
而某些设备,其物理网口顺序与该页面显示的网口顺序 **不一致** ,因此保持默认设置即可。
|
而某些设备,其物理网口顺序与该页面显示的网口顺序 **不一致** ,因此保持默认设置即可。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
FQDN 为 PVE 的域,PVE 将使用 FQDN 中的二级域名作为其主机名。
|
FQDN 为 PVE 的域,PVE 将使用 FQDN 中的二级域名作为其主机名。
|
||||||
|
|
||||||
演示中 FQDN 为 `node01.fox.local` ,因此 PVE 的主机名为 `node01` 。
|
演示中 FQDN 为 `node01.fox.internal` ,因此 PVE 的主机名为 `node01` 。
|
||||||
|
|
||||||
根据规划,PVE 的 IPv4 管理地址为 `172.16.1.254` 。
|
根据规划,PVE 的 IPv4 管理地址为 `172.16.1.254` 。
|
||||||
|
|
||||||
未来主路由的 IPv4 地址为 `172.16.1.1` ,因此均使用该地址作为 PVE 的网关地址和 DNS 地址。
|
未来主路由的 IPv4 地址为 `172.16.1.1` ,因此均使用该地址作为 PVE 的网关地址和 DNS 地址。
|
||||||
|
|
||||||
当 PVE 安装完成后, 将使用 PVE 提供的 WEB 管理页面,进一步对该管理口的设置进行调整。
|
PVE 安装完成后,可通过其提供的 Web 管理界面,进一步调整管理口的相关设置。
|
||||||
|
|
||||||
|参数|值|说明|
|
|参数|值|说明|
|
||||||
|--|--|--|
|
|--|--|--|
|
||||||
|Hostname (FQDN)|`node01.fox.local`|设置 PVE `域` 和 `主机名` |
|
|Hostname (FQDN)|`node01.fox.internal`|设置 PVE `域` 和 `主机名` |
|
||||||
|IP Address (CIDR)|`172.16.1.254/24`|设置 PVE IPv4 地址|
|
|IP Address (CIDR)|`172.16.1.254/24`|设置 PVE IPv4 地址|
|
||||||
|Gateway|`172.16.1.1`|设置 PVE IPv4 网关|
|
|Gateway|`172.16.1.1`|设置 PVE IPv4 网关|
|
||||||
|DNS Server|`172.16.1.1`|设置 PVE IPv4 DNS |
|
|DNS Server|`172.16.1.1`|设置 PVE IPv4 DNS |
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 1.7. PVE 参数确认
|
### 1.7. PVE 参数确认
|
||||||
|
|
||||||
该页面会显示当前 PVE 的安装配置总览,确认无误后即可开始安装。
|
该页面会显示当前 PVE 的安装配置总览,确认无误后即可开始安装。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
安装完成后,PVE 会告知用户登录的 `IP 地址` 和 `端口` 。
|
安装完成后,PVE 会告知用户登录的 `IP 地址` 和 `端口` 。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 2. PVE 安装后检查
|
## 2. PVE 安装后检查
|
||||||
|
|
||||||
@@ -205,9 +207,9 @@ $ cat /etc/fstab
|
|||||||
$ cat /etc/os-release
|
$ cat /etc/os-release
|
||||||
```
|
```
|
||||||
|
|
||||||
此处显示出 PVE 底层使用的是 Debian 的系统,代号为 `bookworm` ,该代号后续会使用到。
|
此处显示出 PVE 底层使用的是 Debian 的系统,代号为 `trixie` ,该代号后续会使用到。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
至此 PVE 的安装步骤已经完成。
|
至此 PVE 的安装步骤已经完成。
|
||||||
|
|
||||||
|
|||||||
@@ -2,112 +2,116 @@
|
|||||||
|
|
||||||
在上一篇文章 [01.PVE系统安装](./01.PVE系统安装.md) 中,从刚装好的 PVE 系统中获取了系统的一些参数。
|
在上一篇文章 [01.PVE系统安装](./01.PVE系统安装.md) 中,从刚装好的 PVE 系统中获取了系统的一些参数。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
此处显示出 PVE 底层使用的是 Debian 的系统,代号为 `bookworm` 。
|
此处显示出 PVE 底层使用的是 Debian 的系统,代号为 `trixie` 。
|
||||||
|
|
||||||
为了后续能对 PVE 系统进行升级,需要更换其镜像仓库,也就是大家熟知的软件源。
|
为了后续能对 PVE 系统进行升级,需要更换其镜像仓库,也就是大家熟知的软件源。
|
||||||
|
|
||||||
由于目前处于 **“离线”** 安装状态,因此更换完软件源后,在没有网络的情况下无法对系统更新。
|
当前处于 “离线” 安装状态,更换软件源后,因无网络连接,无法执行系统更新操作。
|
||||||
|
|
||||||
### 1.1.系统软件源
|
### 1.1.系统软件源
|
||||||
|
|
||||||
使用 SSH 工具登录到 PVE 服务器,首先对现有的软件源配置进行备份。
|
使用终端工具登录到 PVE 服务器,查看现有软件源配置文件。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 进入系统软件源配置文件目录
|
## 查看系统默认软件源
|
||||||
$ cd /etc/apt
|
$ cat /etc/apt/sources.list.d/debian.sources
|
||||||
|
|
||||||
## 查看系统默认镜像配置
|
#### 系统默认软件源示例输出
|
||||||
$ cat sources.list
|
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
|
||||||
$ cp sources.list sources.list.bak
|
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
|
```bash
|
||||||
deb http://ftp.debian.org/debian bookworm main contrib
|
## 配置 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
|
||||||
|
|
||||||
deb http://ftp.debian.org/debian bookworm-updates main contrib
|
Types: deb
|
||||||
|
URIs: https://mirrors.ustc.edu.cn/debian-security
|
||||||
# security updates
|
Suites: trixie-security
|
||||||
deb http://security.debian.org bookworm-security main contrib
|
Components: main contrib non-free non-free-firmware
|
||||||
```
|
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||||
|
EOF
|
||||||
这里我将使用 [中国科技大(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
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
如果希望能更新 CPU 的 `microcode` ,则需要手动添加镜像 `non-free` 、 `non-free-firmware` 参数,完整系统源示例如下。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
deb https://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
|
|
||||||
|
|
||||||
deb https://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
|
|
||||||
|
|
||||||
# security updates
|
|
||||||
deb https://mirrors.ustc.edu.cn/debian-security/ bookworm-security main contrib non-free non-free-firmware
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.2. PVE 软件源
|
### 1.2. PVE 软件源
|
||||||
|
|
||||||
默认情况下,PVE 额外启用了 2 个官方源,且为订阅收费制,因此需要替换为免费源。
|
默认情况下,PVE 额外启用了 2 个官方源,且为订阅收费制,因此需要替换为免订阅源。
|
||||||
|
|
||||||
删除 PVE 官方付费软件源,使用以下命令。
|
首先创建 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 为高风险命令,请正确使用,请勿手抖,请勿手抖。**
|
**注意:rm 为高风险命令,请正确使用,请勿手抖,请勿手抖。**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 删除付费软件源
|
## 删除付费软件源
|
||||||
$ rm -rvf /etc/apt/sources.list.d/*.list
|
$ rm -rvf /etc/apt/sources.list.d/pve-enterprise.sources /etc/apt/sources.list.d/ceph.sources
|
||||||
```
|
|
||||||
|
|
||||||
创建 PVE 免费软件源。
|
|
||||||
|
|
||||||
**注意:该命令为三行,在输入时请逐行输入并回车执行。**
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 创建 PVE 免费源
|
|
||||||
|
|
||||||
$ source /etc/os-release
|
|
||||||
|
|
||||||
$ echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy $VERSION_CODENAME no-subscription" > /etc/apt/sources.list.d/ceph-no-subscription.list
|
|
||||||
|
|
||||||
$ 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
|
```bash
|
||||||
## 检查PVE免费源
|
## 检查 PVE 免费源
|
||||||
|
$ cat /etc/apt/sources.list.d/*
|
||||||
$ cat /etc/apt/sources.list.d/ceph-no-subscription.list
|
|
||||||
|
|
||||||
$ cat /etc/apt/sources.list.d/pve-no-subscription.list
|
|
||||||
```
|
```
|
||||||
|
|
||||||
如果输出结果中有 USTC 的镜像地址,则表示命令已经正确执行。
|
如果输出结果中均为 USTC 的镜像地址,则表示命令已经正确执行。
|
||||||
|
|
||||||
```bash
|
|
||||||
#### PVE 免费软件源示例输出
|
|
||||||
|
|
||||||
#### Ceph
|
|
||||||
deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-quincy bookworm no-subscription
|
|
||||||
|
|
||||||
#### PVE
|
|
||||||
deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription
|
|
||||||
```
|
|
||||||
|
|
||||||
### 1.3. PVE CT 源
|
### 1.3. PVE CT 源
|
||||||
|
|
||||||
@@ -116,19 +120,21 @@ deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bookworm pve-no-subscription
|
|||||||
由于该功能暂时未被使用,因此本文只做记录。
|
由于该功能暂时未被使用,因此本文只做记录。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 替换 CT Templates 源
|
## 替换 CT Templates 链接
|
||||||
|
$ sed -i.bak 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
|
||||||
|
|
||||||
$ cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm.bak
|
## 重启 PVE API 守护进程
|
||||||
|
$ systemctl restart pvedaemon.service
|
||||||
$ sed -i 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
|
|
||||||
|
|
||||||
|
## 更新 CT Templates 列表
|
||||||
|
$ pveam update
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.4.镜像同步
|
### 1.4.镜像同步
|
||||||
|
|
||||||
更换完成系统源之后,需要同步系统源数据。
|
更换完成系统源之后,需要同步系统源数据。
|
||||||
|
|
||||||
考虑到 **“离线”** 安装时无法同步系统源,因此该步骤可以等到 PVE 正确连接 Internet 后再执行。
|
因 “离线” 安装时无法同步系统源,此步骤可待 PVE 成功连接 Internet 后再执行。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 清理软件包
|
## 清理软件包
|
||||||
@@ -138,54 +144,57 @@ $ apt clean && apt autoclean && apt autoremove --purge
|
|||||||
$ apt update
|
$ apt update
|
||||||
|
|
||||||
## 更新系统
|
## 更新系统
|
||||||
$ apt dist-upgrade
|
$ apt full-upgrade
|
||||||
```
|
```
|
||||||
|
|
||||||
## 2.安装必要软件
|
## 2.安装必要软件
|
||||||
|
|
||||||
安装软件前,同样需要让 PVE 能够访问外网。
|
|
||||||
|
|
||||||
安装 `iperf3` 后,系统将询问是否将其作为系统服务开机自启,选择 `no` 即可。
|
安装 `iperf3` 后,系统将询问是否将其作为系统服务开机自启,选择 `no` 即可。
|
||||||
|
|
||||||
其中 `unattended-upgrades` 为系统自动更新服务,后续会对其进行配置。
|
其中 `unattended-upgrades` 为系统自动更新服务,后续会对其进行配置。
|
||||||
|
|
||||||
`cpufrequtils` 为 CPU 调度器的配置工具,后续会对 CPU 调度算法进行调整。
|
`linux-cpupower` 为 CPU 调度器的配置工具,后续会对 CPU 调度器进行调整。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 同步镜像仓库
|
## 同步镜像仓库
|
||||||
$ apt update
|
$ apt update
|
||||||
|
|
||||||
## 安装系统软件
|
## 安装系统软件
|
||||||
$ apt install htop lm-sensors unzip vim tmux unattended-upgrades powermgmt-base
|
$ apt install btop curl knot-dnsutils lm-sensors neovim powermgmt-base unattended-upgrades sshguard tmux
|
||||||
|
|
||||||
## 安装网络工具
|
|
||||||
$ apt install iperf iperf3 iftop
|
|
||||||
|
|
||||||
## 安装 CPU 调度调整工具
|
## 安装 CPU 调度调整工具
|
||||||
$ apt install cpufrequtils
|
$ apt install linux-cpupower
|
||||||
|
|
||||||
## 根据 CPU 厂商安装 CPU 微码工具
|
|
||||||
$ apt install intel-microcode (amd64-microcode)
|
|
||||||
|
|
||||||
## 更新 PCI 数据库
|
## 更新 PCI 数据库
|
||||||
$ update-pciids
|
$ 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 网络
|
## 3.配置 PVE 网络
|
||||||
|
|
||||||
设置电脑的 IPv4 地址为静态地址,电脑 IPv4 地址段需要与 PVE 的地址段保持一致。
|
设置电脑的 IPv4 地址为静态地址,电脑 IPv4 地址段需要与 PVE 的地址段保持一致。
|
||||||
|
|
||||||
用网线将电脑的网口与 PVE 的管理网口,此时应该为编号最小的第一个网口,相连接。
|
用网线连接电脑网口与 PVE 管理网口(此时应为编号最小的第一个网口)。
|
||||||
|
|
||||||
访问 PVE 的 WEB 管理界面,对 PVE 的网络进行一些调整。
|
访问 PVE 的 Web 管理界面,根据 **网络设备** 规划调整其网络配置。
|
||||||
|
|
||||||
根据 **网络设备** 规划, PVE 中虚拟机规划如下。
|
|
||||||
|
|
||||||
|系统|作用|说明|
|
|系统|作用|说明|
|
||||||
|--|--|--|
|
|--|--|--|
|
||||||
|RouterOS|主路由|PPPoE 拨号上网|
|
|RouterOS|主路由|PPPoE 拨号上网|
|
||||||
|Debian12|Linux 服务器|内网 DNS 服务器|
|
|Debian|DNS 服务器|内网 DNS 服务器|
|
||||||
|OpenWrt|旁路由|内网插件服务|
|
|Debian|TS 服务器|内网 TS 组网服务器|
|
||||||
|
|OpenWrt|旁路网关|内网插件服务|
|
||||||
|
|
||||||
根据 **内部网络地址** 规划,PVE IP 地址规划如下。
|
根据 **内部网络地址** 规划,PVE IP 地址规划如下。
|
||||||
|
|
||||||
@@ -194,23 +203,19 @@ $ update-pciids
|
|||||||
|IPv4|管理地址|`172.16.1.254`|PVE IPv4 地址|
|
|IPv4|管理地址|`172.16.1.254`|PVE IPv4 地址|
|
||||||
||网关地址|`172.16.1.1`|PVE IPv4 网关|
|
||网关地址|`172.16.1.1`|PVE IPv4 网关|
|
||||||
||DNS 地址|`172.16.1.1`|PVE IPv4 DNS 服务器|
|
||DNS 地址|`172.16.1.1`|PVE IPv4 DNS 服务器|
|
||||||
|IPv6|管理地址|`fdac::fe`|PVE IPv6 地址|
|
|IPv6|管理地址|`fdac::fe`|PVE IPv6 地址(可选)|
|
||||||
||网关地址|`-`|IPv6 网关将使用 `LLA` 自动配置|
|
||网关地址|`-`|PVE IPv6 网关将使用 `SLAAC` 自动配置|
|
||||||
||DNS 地址|`fdac::1`|PVE IPv6 DNS 服务器|
|
||DNS 地址|`fdac::1`|PVE IPv6 DNS 服务器(可选)|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
初次登录 PVE 的 WEB 管理后台,打开网络管理页面,此时只有一个 `vmbr0` 。
|
初次登录 PVE 的 WEB 管理后台,打开网络管理页面,此时只有一个 `vmbr0` 。
|
||||||
|
|
||||||
该 `vmbr0` 与列表中的第一个物理网口绑定,且在 `CIDR` 和 `网关` 处有 IP 地址参数,说明 `vmbr0` 为当前管理网口。
|
该 `vmbr0` 与列表中的第一个物理网口绑定,且在 `CIDR` 和 `网关` 处有 IP 地址参数,说明 `vmbr0` 为当前管理网口。
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
接下来将修改 PVE 网络配置,在修改完成前, **请不要点击 “应用配置”** ,否则会导致 PVE 无法访问。
|
接下来将修改 PVE 网络配置,在修改完成前, **请不要点击 “应用配置”** ,否则会导致 PVE 无法访问。
|
||||||
|
|
||||||
在 PVE 内部网络设置完成后,将如图所示。
|

|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 3.1.修改 vmbr0
|
### 3.1.修改 vmbr0
|
||||||
|
|
||||||
@@ -218,21 +223,17 @@ $ update-pciids
|
|||||||
|
|
||||||
删除 `IPv4/CIDR` 和 `网关` 信息,确保 `自动启动` 为勾选状态。
|
删除 `IPv4/CIDR` 和 `网关` 信息,确保 `自动启动` 为勾选状态。
|
||||||
|
|
||||||
在备注处填写 `wan` ,然后点击 `OK` 按钮。
|
在备注处填写 `wan` ,然后点击 `OK` 。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 3.2.创建网桥
|
### 3.2.创建网桥
|
||||||
|
|
||||||
点击左上角的 `创建` 按钮,选择 `Linux Bridge` :
|
点击左上角的 `创建` 选项,选择 `Linux Bridge` 。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
因为 `vmbr0` 名称已被使用,因此名称填写 `vmbr1` 。
|
桥接端口填写顺序的第二个网卡名称,演示中为 `nic1` ,在备注处填写 `lan1` ,并点击 `创建` 。
|
||||||
|
|
||||||
桥接端口填写顺序的第二个网卡名称,演示中为 `enp3s0` 。
|
|
||||||
|
|
||||||
确保 `自动启动` 为勾选状态,在备注处填写 `lan1` ,点击 `创建` 按钮。
|
|
||||||
|
|
||||||
然后,依次创建所有物理接口的内部网桥,直到最后一个网桥,即 PVE 的管理网口。
|
然后,依次创建所有物理接口的内部网桥,直到最后一个网桥,即 PVE 的管理网口。
|
||||||
|
|
||||||
@@ -240,59 +241,44 @@ $ update-pciids
|
|||||||
|
|
||||||
### 3.3.创建管理网口
|
### 3.3.创建管理网口
|
||||||
|
|
||||||
在创建最后一个物理网口的网桥时,需要额外配置 `IPv4` 地址和对应的 `网关` 参数。
|
在创建最后一个物理网口的网桥时,需配置 `IPv4` 地址和对应的 `网关` 参数。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
额外说明:
|
**额外说明:**
|
||||||
|
- 如非特殊需求,通常情况下 PVE 系统无需使用 IPv6 网络
|
||||||
1. 如非特殊需求,通常情况下 PVE 系统无需使用 IPv6 网络。
|
- 当主路由未配置 IPv6 ULA 网段时,无需填写 `IPv6/CIDR` 参数(如本文演示地址 `fdac::fe/64` )
|
||||||
|
- 多数情况下无需填写 IPv6 `网关` 参数,其网关将通过 IPv6 LLA (链路本地地址)自动配置
|
||||||
2. 根据实际测试,仅 PVE 纯内部网桥( `vmbr4` )可通过主路由获取公网 GUA IPv6 地址。
|
|
||||||
|
|
||||||
3. 主路由未配置 ULA IPv6 网段时,例如本文演示地址 `fdac::/64` ,无需填写 `IPv6/CIDR` 参数。
|
|
||||||
|
|
||||||
4. 通常情况下 IPv6 无需填写 `网关` 参数,IPv6 网关将通过 LLA IPv6 地址自动配置。
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
在所有物理网口的 PVE 网桥创建完成后,可以点击 `应用配置` 按钮,此时页面会失去连接。
|
所有物理网口的 PVE 网桥创建完成后,点击 `应用配置` ,页面会断开连接。
|
||||||
|
|
||||||
无需担心,只需要将电脑的网线从 PVE 物理机的第一个网口拔出,并插入到最后一个网口即可。
|
此时,只需将电脑网线从 PVE 物理机的第一个网口拔出,并插入最后一个网口即可恢复。
|
||||||
|
|
||||||
如果万一还是无法访问到 PVE,可以尝试使用网线 “拔插” 方法,挨个测试 PVE 网口的访问情况。
|
若仍无法访问 PVE,可尝试通过网线拔插的方式,逐一测试各 PVE 网口的访问连通性。
|
||||||
|
|
||||||
### 3.4.创建内部网桥
|
### 3.4.创建内部网桥
|
||||||
|
|
||||||
纯内部网桥,在没有内部路由系统提供额外桥接的情况下,无法直接通过物理网口进行访问。
|
纯内部网桥在无其他系统提供额外桥接时,无法直接通过物理网口访问。
|
||||||
|
|
||||||
只有在主路由(例如 RouterOS )安装完成并建立了内部网桥后,才可正常使用。
|
其主要作用是借助其他系统创建的虚拟网桥,为内部虚拟机提供统一的网络访问接口。
|
||||||
|
|
||||||
该纯内部网桥,其主要作用是通过 **主路由** 给内部其他虚拟机提供 **统一** 的网络访问接口。
|
|
||||||
|
|
||||||
创建纯内部网桥的方法,与创建物理网口网桥的方法基本一致,唯一区别是 `桥接端口` 参数为 **空** 即可。
|
创建纯内部网桥的方法,与创建物理网口网桥的方法基本一致,唯一区别是 `桥接端口` 参数为 **空** 即可。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
当然,内部网桥的作用不仅如此,比如还可以作为内部级联路由的连接器。
|
在 PVE 内部网络设置完成后,将如图所示。
|
||||||
|
|
||||||
例如,安装了 OPNsense 和 RouterOS 两个虚拟机,OPNsense 作为网关防火墙使用。
|

|
||||||
|
|
||||||
此时 RouterOS 作为二级路由系统,OPNsense 的 LAN 口需要与 RouterOS 的 WAN 口相连。
|
|
||||||
|
|
||||||
如果 OPNsense 和 RouterOS 均使用了绑定物理网口的 PVE 网桥,则需用网线在 PVE 服务器上连接两个物理网口。
|
|
||||||
|
|
||||||
浪费了宝贵的网线不说,还占用了网口,得不偿失。
|
|
||||||
|
|
||||||
而纯内部网桥则能很好的解决该问题,有了纯内部网桥,不论多少个虚拟机使用该网桥,只要 IP 地址段相同,即可相互访问。
|
|
||||||
|
|
||||||
## 4.配置 PVE DNS
|
## 4.配置 PVE DNS
|
||||||
|
|
||||||
在 PVE 系统的安装过程中,设置了 DNS 的 IPv4 地址 `172.16.1.1` ,但并未设置 DNS 的 IPv6 地址。
|
在 PVE 系统的安装过程中,设置了 DNS 的 IPv4 地址 `172.16.1.1` ,但并未设置 DNS 的 IPv6 地址。
|
||||||
|
|
||||||
在 PVE 的 DNS 设置页面,手动添加 DNS IPv6 地址,即主路由 LAN 口 ULA IPv6 地址。
|
在 PVE 的 DNS 设置页面,手动添加 DNS IPv6 地址,即主路由 LAN 口 IPv6 ULA 地址。
|
||||||
|
|
||||||
同样,若 PVE 不使用 IPv6 网络或主路由未配置 ULA IPv6 网段,本步骤可跳过。
|
同样,若 PVE 不使用 IPv6 网络或主路由未配置 IPv6 ULA 网段,本步骤可跳过。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
|||||||
@@ -4,31 +4,40 @@
|
|||||||
|
|
||||||
在 PVE 系统调整之前,请确认必要的软件包已经安装完成,本文后续命令均在 SSH 终端下执行。
|
在 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
|
```bash
|
||||||
## 同步镜像仓库
|
## 修改系统默认编辑器(选择 nvim 所在条目,即可将 neovim 设为默认编辑器)
|
||||||
$ apt update
|
$ update-alternatives --config editor
|
||||||
|
|
||||||
## 安装系统软件
|
#### 系统默认编辑器示例输出
|
||||||
$ apt install htop lm-sensors unzip vim tmux unattended-upgrades powermgmt-base
|
There are 3 choices for the alternative editor (providing /usr/bin/editor).
|
||||||
|
|
||||||
## 安装网络工具
|
Selection Path Priority Status
|
||||||
$ apt install iperf iperf3 iftop
|
------------------------------------------------------------
|
||||||
|
* 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
|
||||||
|
|
||||||
## 安装 CPU 调度调整工具
|
Press <enter> to keep the current choice[*], or type selection number: 2
|
||||||
$ apt install cpufrequtils
|
update-alternatives: using /usr/bin/nvim to provide /usr/bin/editor (editor) in manual mode
|
||||||
|
```
|
||||||
|
|
||||||
## 根据 CPU 厂商安装 CPU 微码工具
|
若需完全禁用 `neovim` 鼠标功能;即关闭所有鼠标交互,右键行为完全交给终端 / 控制台处理,需执行以下命令。
|
||||||
$ apt install intel-microcode (amd64-microcode)
|
|
||||||
|
|
||||||
## 更新 PCI 数据库
|
```bash
|
||||||
$ update-pciids
|
## 配置 nvim 鼠标交互行为脚本
|
||||||
|
$ install -D -m 0644 /dev/stdin /etc/xdg/nvim/sysinit.vim <<'EOF'
|
||||||
|
set mouse=
|
||||||
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
## 1.系统时区
|
## 1.系统时区
|
||||||
|
|
||||||
如果在安装 PVE 系统时选错了时区,导致系统时间和北京时间不一致,可以使用以下命令修正。
|
如果在安装 PVE 系统时选错了时区,导致系统时间和北京时间不一致,可以执行以下命令修正。
|
||||||
|
|
||||||
输出结果如果和北京时间一致,则代表修改正确。
|
若输出结果和北京时间一致,则代表修改正确。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 修改系统时区
|
## 修改系统时区
|
||||||
@@ -38,18 +47,16 @@ $ timedatectl set-timezone Asia/Shanghai
|
|||||||
$ date -R
|
$ date -R
|
||||||
|
|
||||||
#### 系统时间示例输出
|
#### 系统时间示例输出
|
||||||
Sun, 25 Jun 2023 12:12:12 +0800
|
Wed, 27 Aug 2025 15:12:21 +0800
|
||||||
```
|
```
|
||||||
|
|
||||||
Debian 系统常用 `systemd-timesyncd.service` 来同步时间,而 PVE 系统使用 `chrony.service` 来同步时间。
|
Debian 系统常用 `systemd-timesyncd.service` 来同步时间,而 PVE 系统使用 `chrony.service` 来同步时间。
|
||||||
|
|
||||||
为了使用国内的 NTP 服务器,需要对 `chrony.service` 进行配置。
|
为了使用国内的 NTP 服务器,需要对 `chrony.service` 进行配置,执行以下命令。
|
||||||
|
|
||||||
执行以下命令对 `chrony` 的配置文件进行修改。
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 编辑 chrony 配置文件
|
## 编辑 chrony 配置文件
|
||||||
$ nano /etc/chrony/chrony.conf
|
$ editor /etc/chrony/chrony.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
在编辑器对话框中,将 `pool 2.debian.pool.ntp.org iburst` “注释” 掉,并添加国内的 NTP 服务器。
|
在编辑器对话框中,将 `pool 2.debian.pool.ntp.org iburst` “注释” 掉,并添加国内的 NTP 服务器。
|
||||||
@@ -61,15 +68,16 @@ $ nano /etc/chrony/chrony.conf
|
|||||||
# pool 2.debian.pool.ntp.org iburst ## 在这行前面增加注释符 # 来注释
|
# pool 2.debian.pool.ntp.org iburst ## 在这行前面增加注释符 # 来注释
|
||||||
|
|
||||||
# Use Custom vendor zone.
|
# Use Custom vendor zone.
|
||||||
pool ntp.tencent.com iburst
|
|
||||||
pool ntp.aliyun.com iburst
|
pool ntp.aliyun.com iburst
|
||||||
|
pool ntp.tencent.com iburst
|
||||||
|
pool cn.pool.ntp.org iburst
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
保存该配置文件后,需重启 `chrony` 服务,并再次检查系统 NTP 服务器地址。
|
配置文件编辑完成后,需重启 `chrony.service` ,并再次检查系统 NTP 服务器地址。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 重启 chrony 服务
|
## 重启 chrony.service
|
||||||
$ systemctl restart chrony.service
|
$ systemctl restart chrony.service
|
||||||
|
|
||||||
## 检查系统 NTP 服务器
|
## 检查系统 NTP 服务器
|
||||||
@@ -78,71 +86,66 @@ $ chronyc sources -V
|
|||||||
#### 系统 NTP 服务器示例输出
|
#### 系统 NTP 服务器示例输出
|
||||||
MS Name/IP address Stratum Poll Reach LastRx Last sample
|
MS Name/IP address Stratum Poll Reach LastRx Last sample
|
||||||
===============================================================================
|
===============================================================================
|
||||||
^+ 106.55.184.199 2 6 17 11 +752us[ +273us] +/- 40ms
|
^* 203.107.6.88 2 6 17 0 -875us[-2496us] +/- 22ms
|
||||||
^* 203.107.6.88 2 6 17 11 -1868us[-2348us] +/- 17ms
|
^- 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 调度器
|
## 2. CPU 调度器
|
||||||
|
|
||||||
安装好 `cpufrequtils` 后,需检查 CPU 当前调度器。
|
安装 `linux-cpupower` 后,需检查 CPU 当前调度器。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 检查 CPU 当前调度器
|
## 检查 CPU 当前调度器
|
||||||
$ cpufreq-info
|
$ cpupower -c all frequency-info
|
||||||
|
|
||||||
#### 设备 CPU - J4125 示例输出
|
#### 设备 CPU - J4125 示例输出
|
||||||
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
|
|
||||||
Report errors and bugs to cpufreq@vger.kernel.org, please.
|
|
||||||
analyzing CPU 0:
|
analyzing CPU 0:
|
||||||
driver: intel_cpufreq
|
driver: intel_cpufreq
|
||||||
CPUs which run at the same hardware frequency: 0
|
CPUs which run at the same hardware frequency: 0
|
||||||
CPUs which need to have their frequency coordinated by software: 0
|
CPUs which need to have their frequency coordinated by software: 0
|
||||||
maximum transition latency: 20.0 us.
|
maximum transition latency: 20.0 us
|
||||||
hardware limits: 800 MHz - 2.70 GHz
|
hardware limits: 800 MHz - 2.70 GHz
|
||||||
available cpufreq governors: conservative, ondemand, userspace, powersave, performance, schedutil
|
available cpufreq governors: conservative ondemand userspace powersave performance schedutil
|
||||||
current policy: frequency should be within 800 MHz and 2.70 GHz.
|
current policy: frequency should be within 800 MHz and 2.70 GHz.
|
||||||
The governor "ondemand" may decide which speed to use
|
The governor "performance" may decide which speed to use
|
||||||
within this range.
|
within this range.
|
||||||
current CPU frequency is 1.84 GHz.
|
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 - N6005 示例输出
|
#### 设备 CPU - N100 示例输出
|
||||||
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
|
|
||||||
Report errors and bugs to cpufreq@vger.kernel.org, please.
|
|
||||||
analyzing CPU 0:
|
analyzing CPU 0:
|
||||||
driver: intel_pstate
|
driver: intel_pstate
|
||||||
CPUs which run at the same hardware frequency: 0
|
CPUs which run at the same hardware frequency: 0
|
||||||
CPUs which need to have their frequency coordinated by software: 0
|
CPUs which need to have their frequency coordinated by software: 0
|
||||||
maximum transition latency: 4294.55 ms.
|
maximum transition latency: Cannot determine or is not supported.
|
||||||
hardware limits: 800 MHz - 3.30 GHz
|
hardware limits: 800 MHz - 3.30 GHz
|
||||||
available cpufreq governors: performance, powersave
|
available cpufreq governors: performance powersave
|
||||||
current policy: frequency should be within 800 MHz and 3.30 GHz.
|
current policy: frequency should be within 800 MHz and 3.30 GHz.
|
||||||
The governor "performance" may decide which speed to use
|
The governor "performance" may decide which speed to use
|
||||||
within this range.
|
within this range.
|
||||||
current CPU frequency is 2.00 GHz.
|
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`
|
||||||
- driver: `intel_cpufreq` 或 `intel_pstate`
|
- `governor` :调频策略中使用的调度器,例如 `performance`
|
||||||
|
- CPU 驱动为 `intel_cpufreq` 时,推荐使用 `schedutil` 调度器
|
||||||
- current policy: `governor "ondemand"` 或 `governor "performance"`
|
- CPU 驱动为 `intel_pstate` 时,推荐使用 `powersave` 调度器
|
||||||
|
|
||||||
还有另外一个命令可用来显示 CPU 当前调度器。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 检查 CPU 当前调度器
|
|
||||||
$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
|
|
||||||
|
|
||||||
#### 设备 CPU - J4125 示例输出
|
|
||||||
ondemand
|
|
||||||
|
|
||||||
#### 设备 CPU - N6005 示例输出
|
|
||||||
performance
|
|
||||||
```
|
|
||||||
|
|
||||||
CPU 驱动一般不建议手动调整,而 `governor` 后面的参数表示 CPU 当前调度器设置。
|
CPU 驱动一般不建议手动调整,而 `governor` 后面的参数表示 CPU 当前调度器设置。
|
||||||
|
|
||||||
接下来,需要了解 CPU 支持的调度器有哪些,使用以下命令。
|
接下来,需要了解 CPU 支持的调度器有哪些,执行以下命令。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 检查 CPU 调度器支持情况
|
## 检查 CPU 调度器支持情况
|
||||||
@@ -151,40 +154,41 @@ $ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
|
|||||||
#### 设备 CPU - J4125 示例输出
|
#### 设备 CPU - J4125 示例输出
|
||||||
conservative ondemand userspace powersave performance schedutil
|
conservative ondemand userspace powersave performance schedutil
|
||||||
|
|
||||||
#### 设备 CPU - N6005 示例输出
|
#### 设备 CPU - N100 示例输出
|
||||||
performance powersave
|
performance powersave
|
||||||
```
|
```
|
||||||
|
|
||||||
根据 CPU 所使用的驱动不同,可选调度器也不同,至于每种调度器有什么优劣,欢迎大家深度挖掘。
|
本文通过 systemd 服务自动管理 `cpupower` ,服务启动时将 CPU 调度器设置为 `powersave` ,停止时恢复为 `performance` 。
|
||||||
|
|
||||||
- CPU 驱动为 `intel_cpufreq` 时,推荐使用 `schedutil` 调度器。
|
|
||||||
|
|
||||||
- CPU 驱动为 `intel_pstate` 时,推荐使用 `powersave` 调度器。
|
|
||||||
|
|
||||||
本文使用 `powersave` 调度器为演示,使用 `nano` 编辑器来编辑 `cpufrequtils` 的配置文件。
|
|
||||||
|
|
||||||
因为该配置文件很长,完整的配置文件可查看 [pve_cpufrequtils.conf](./src/pve_cpufrequtils.conf) 以便对比。
|
|
||||||
|
|
||||||
修改完成后,需要重启 PVE 服务器来使参数生效。
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 编辑 cpufrequtils 配置文件
|
## 创建 cpupower.service 配置文件
|
||||||
$ nano /etc/init.d/cpufrequtils
|
$ systemctl edit --force --full cpupower.service
|
||||||
```
|
```
|
||||||
|
|
||||||
在配置文件中修改以下配置项,并保存。
|
在服务配置文件中输入以下内容,并保存。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## cpufrequtils 配置项
|
[Unit]
|
||||||
|
Description=CPU Power Governor Management
|
||||||
|
ConditionVirtualization=!container
|
||||||
|
|
||||||
ENABLE="true"
|
[Service]
|
||||||
GOVERNOR="powersave" ## 修改本行的调度器为 powersave
|
Type=oneshot
|
||||||
MAX_SPEED="0"
|
ExecStart=/usr/bin/cpupower frequency-set --governor powersave
|
||||||
MIN_SPEED="0"
|
ExecStop=/usr/bin/cpupower frequency-set --governor performance
|
||||||
|
RemainAfterExit=yes
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
PVE 服务器重启完成后需再次查看 CPU 调度器,检验配置文件是否生效。
|
执行以下命令让 `cpupower` 服务立即启动并置为开机自启状态。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
## 设置 cpupower 服务开机自启
|
||||||
|
$ systemctl enable --now cpupower.service
|
||||||
|
```
|
||||||
|
|
||||||
这里提供两个额外命令,方便实时查看 CPU 当前频率和温度状况。
|
这里提供两个额外命令,方便实时查看 CPU 当前频率和温度状况。
|
||||||
|
|
||||||
@@ -196,36 +200,13 @@ $ watch cat /sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_cur_freq
|
|||||||
$ watch -d sensors
|
$ watch -d sensors
|
||||||
```
|
```
|
||||||
|
|
||||||
## 3. PVE 定时重启
|
## 3. PVE 自动更新
|
||||||
|
|
||||||
有时需要让 PVE 服务器周期性的定时重启,则可使用以下命令。
|
### 3.1.系统定时器
|
||||||
|
|
||||||
参数表示每月 `1` 、 `16` 号的 `5` 点 `0` 分执行系统重启命令。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 查看系统定时任务
|
|
||||||
$ crontab -l
|
|
||||||
|
|
||||||
## 编辑系统定时任务,编辑器选择 nano
|
|
||||||
$ crontab -e
|
|
||||||
```
|
|
||||||
|
|
||||||
在配置文件末尾,增加以下配置项。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 定时任务配置项
|
|
||||||
|
|
||||||
0 5 1,16 * * /usr/sbin/reboot
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## 4. PVE 自动更新
|
|
||||||
|
|
||||||
### 4.1.系统定时器
|
|
||||||
|
|
||||||
配置系统自动更新之前,需检查系统当前定时器状态。
|
配置系统自动更新之前,需检查系统当前定时器状态。
|
||||||
|
|
||||||
后续将手动调整该定时器的时间,使其每 `5` 天凌晨 `02:00` 进行触发。
|
后续将手动调整该定时器的时间,使其每 `10` 天的 `01:30` 进行触发。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 检查系统定时器
|
## 检查系统定时器
|
||||||
@@ -233,18 +214,18 @@ $ systemctl status apt-daily-upgrade.timer
|
|||||||
|
|
||||||
#### 系统定时器示例输出
|
#### 系统定时器示例输出
|
||||||
● apt-daily-upgrade.timer - Daily apt upgrade and clean activities
|
● apt-daily-upgrade.timer - Daily apt upgrade and clean activities
|
||||||
Loaded: loaded (/lib/systemd/system/apt-daily-upgrade.timer; enabled; preset: enabled)
|
Loaded: loaded (/usr/lib/systemd/system/apt-daily-upgrade.timer; enabled; preset: enabled)
|
||||||
Active: active (waiting) since Fri 2023-06-23 18:55:58 CST; 1 day 18h ago
|
Active: active (waiting) since Mon 2026-08-10 09:51:05 CST; 27min ago
|
||||||
Until: Fri 2023-06-23 18:55:58 CST; 1 day 18h ago
|
Invocation: edb5962fda4c4a8395cb2c04c736db45
|
||||||
Trigger: Mon 2023-06-26 06:26:25 CST; 16h left
|
Trigger: Tue 2026-08-11 06:21:38 CST; 20h left
|
||||||
Triggers: ● apt-daily-upgrade.service
|
Triggers: ● apt-daily-upgrade.service
|
||||||
|
|
||||||
Jun 23 18:55:58 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities.
|
Aug 10 09:51:05 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt upgrade and clean activities.
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4.2.配置更新策略
|
### 3.2.配置更新策略
|
||||||
|
|
||||||
使用以下命令,启用系统自动更新。
|
执行以下命令,启用系统自动更新。
|
||||||
|
|
||||||
执行命令后,使用 “左右” 方向键进行选择,“回车” 键进行确认。
|
执行命令后,使用 “左右” 方向键进行选择,“回车” 键进行确认。
|
||||||
|
|
||||||
@@ -252,64 +233,43 @@ Jun 23 18:55:58 node01 systemd[1]: Started apt-daily-upgrade.timer - Daily apt u
|
|||||||
## 配置自动更新策略
|
## 配置自动更新策略
|
||||||
$ dpkg-reconfigure -plow unattended-upgrades
|
$ dpkg-reconfigure -plow unattended-upgrades
|
||||||
|
|
||||||
## 选择 “是” (“YES”)
|
## 选择 “是”
|
||||||
|
<Yes>
|
||||||
#### 系统自动更新示例输出
|
|
||||||
Creating config file /etc/apt/apt.conf.d/20auto-upgrades with new version
|
|
||||||
```
|
```
|
||||||
|
|
||||||
进一步调整 apt 的 `20auto-upgrades` 配置文件。
|
开始调整 `20auto-upgrades` 配置文件。
|
||||||
|
|
||||||
|
配置文件中,用来控制更新周期的参数为 `APT::Periodic::Unattended-Upgrade` ,`10` 表示更新周期为 `10` 天。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 进入 apt 的配置目录
|
|
||||||
$ cd /etc/apt/apt.conf.d
|
|
||||||
|
|
||||||
## 编辑 20auto-upgrades 配置文件
|
## 编辑 20auto-upgrades 配置文件
|
||||||
$ nano /etc/apt/apt.conf.d/20auto-upgrades
|
$ tee /etc/apt/apt.conf.d/20auto-upgrades >/dev/null <<'EOF'
|
||||||
```
|
|
||||||
|
|
||||||
删除里面全部内容,添加以下配置项,并保存。
|
|
||||||
|
|
||||||
配置文件中,用来控制更新周期的参数为 `APT::Periodic::Unattended-Upgrade` ,`5` 表示更新周期为 `5` 天。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 系统更新周期配置项
|
|
||||||
|
|
||||||
APT::Periodic::Update-Package-Lists "1";
|
APT::Periodic::Update-Package-Lists "1";
|
||||||
APT::Periodic::Unattended-Upgrade "5";
|
APT::Periodic::Unattended-Upgrade "10";
|
||||||
APT::Periodic::AutocleanInterval "1";
|
APT::Periodic::AutocleanInterval "1";
|
||||||
APT::Periodic::CleanInterval "1";
|
APT::Periodic::CleanInterval "1";
|
||||||
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
进一步调整 apt 的 `50unattended-upgrades` 配置文件。
|
进一步调整 `50unattended-upgrades` 配置文件。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 编辑 50unattended-upgrades 配置文件
|
## 编辑 50unattended-upgrades 配置文件
|
||||||
$ nano /etc/apt/apt.conf.d/50unattended-upgrades
|
$ editor /etc/apt/apt.conf.d/50unattended-upgrades
|
||||||
```
|
```
|
||||||
|
|
||||||
配置文件中,被修改的参数解释如下:
|
配置文件中,被修改的参数解释如下:
|
||||||
|
- 启用了 Debian `trixie-updates` 相关更新
|
||||||
|
- 增加并启用 PVE 自有仓库的更新
|
||||||
|
- 增加并启用 PVE Ceph 仓库的更新,请按需启用
|
||||||
|
- 自动修复被打断的 Dpkg 安装
|
||||||
|
- 自动移除无用的的内核包
|
||||||
|
- 自动移除因更新而出现的无用依赖包
|
||||||
|
- 自动移除以前的无用依赖包
|
||||||
|
- 自动重启:开启
|
||||||
|
- 自动重启时间:`02:30`
|
||||||
|
|
||||||
- 启用了 Debian `bookworm-updates` 相关更新。
|
因为该配置文件很长,完整的配置文件可查看 [pve_50unattended_upgrades.conf](./src/pve/pve_50unattended_upgrades.conf) 以便对比。
|
||||||
|
|
||||||
- 增加并启用 PVE 自有仓库的更新。
|
|
||||||
|
|
||||||
- 增加并启用 PVE Ceph 仓库的更新,请按需启用。
|
|
||||||
|
|
||||||
- 自动修复被打断的 Dpkg 安装。
|
|
||||||
|
|
||||||
- 自动移除无用的的内核包。
|
|
||||||
|
|
||||||
- 自动移除因更新而出现的无用依赖包。
|
|
||||||
|
|
||||||
- 自动移除以前的无用依赖包。
|
|
||||||
|
|
||||||
- 自动重启:开启。
|
|
||||||
|
|
||||||
- 自动重启时间:`05:00` 。
|
|
||||||
|
|
||||||
因为该配置文件很长,完整的配置文件可查看 [pve_50unattended_upgrades.conf](./src/pve_50unattended_upgrades.conf) 以便对比。
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 删除以下行前面的注释符 // ,代表启用
|
## 删除以下行前面的注释符 // ,代表启用
|
||||||
@@ -322,9 +282,9 @@ $ nano /etc/apt/apt.conf.d/50unattended-upgrades
|
|||||||
|
|
||||||
## 按需添加 PVE Ceph 更新项目
|
## 按需添加 PVE Ceph 更新项目
|
||||||
|
|
||||||
"origin=Proxmox,codename=${distro_codename},label=Proxmox Ceph Debian Repository";
|
"origin=Proxmox,codename=${distro_codename},label=Proxmox Ceph 19 Squid Debian Repository";
|
||||||
|
|
||||||
## 在配置文件末尾增加以下配置项,代表启用,并调整参数
|
## 在配置文件末尾增加以下内容,代表启用,并调整参数
|
||||||
|
|
||||||
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
|
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
|
||||||
|
|
||||||
@@ -336,29 +296,29 @@ Unattended-Upgrade::Remove-Unused-Dependencies "true";
|
|||||||
|
|
||||||
Unattended-Upgrade::Automatic-Reboot "true";
|
Unattended-Upgrade::Automatic-Reboot "true";
|
||||||
|
|
||||||
Unattended-Upgrade::Automatic-Reboot-Time "05:00";
|
Unattended-Upgrade::Automatic-Reboot-Time "02:30";
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4.3.重设触发器
|
### 3.3.重设触发器
|
||||||
|
|
||||||
系统自动更新配置文件修改完成后,需要重设自动更新定时器,执行以下命令。
|
系统自动更新配置文件修改完成后,需要重设自动更新定时器,执行以下命令。
|
||||||
|
|
||||||
完整的配置文件可查看 [pve_apt_daily_upgrade.conf](./src/pve_apt_daily_upgrade.conf) 以便对比。
|
完整的配置文件可查看 [pve_apt_daily_upgrade.conf](./src/pve/pve_apt_daily_upgrade.conf) 以便对比。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 配置系统定时器
|
## 配置系统定时器
|
||||||
$ systemctl edit apt-daily-upgrade.timer
|
$ systemctl edit apt-daily-upgrade.timer
|
||||||
```
|
```
|
||||||
|
|
||||||
根据配置文件中的提示,在中间空白处填入以下配置项。
|
根据配置文件中的提示,在中间空白处填入以下内容。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 定时器配置项
|
## 定时器配置项
|
||||||
|
|
||||||
[Timer]
|
[Timer]
|
||||||
OnCalendar=
|
OnCalendar=
|
||||||
OnCalendar=02:00
|
OnCalendar=01:30
|
||||||
RandomizedDelaySec=0
|
RandomizedDelaySec=0
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -374,30 +334,30 @@ $ systemctl status apt-daily-upgrade.timer
|
|||||||
|
|
||||||
#### 系统自动更新触发器示例输出
|
#### 系统自动更新触发器示例输出
|
||||||
● apt-daily-upgrade.timer - Daily apt upgrade and clean activities
|
● apt-daily-upgrade.timer - Daily apt upgrade and clean activities
|
||||||
Loaded: loaded (/lib/systemd/system/apt-daily-upgrade.timer; enabled; preset: enabled)
|
Loaded: loaded (/usr/lib/systemd/system/apt-daily-upgrade.timer; enabled; preset: enabled)
|
||||||
Drop-In: /etc/systemd/system/apt-daily-upgrade.timer.d
|
Drop-In: /etc/systemd/system/apt-daily-upgrade.timer.d
|
||||||
└─override.conf
|
└─override.conf
|
||||||
Active: active (waiting) since Sun 2023-06-25 14:35:06 CST; 9s ago
|
Active: active (waiting) since Mon 2026-08-10 10:35:09 CST; 5s ago
|
||||||
Until: Sun 2023-06-25 14:35:06 CST; 9s ago
|
Invocation: e73c9dd167cc4814836a1da4dab015db
|
||||||
Trigger: Mon 2023-06-26 02:00:00 CST; 11h left
|
Trigger: Tue 2026-08-11 01:30:00 CST; 14h left
|
||||||
Triggers: ● apt-daily-upgrade.service
|
Triggers: ● apt-daily-upgrade.service
|
||||||
|
|
||||||
Jun 25 14:35:06 node01 systemd[1]: Stopped apt-daily-upgrade.timer - Daily apt upgrade and clean activities.
|
Aug 10 10:35:09 node01 systemd[1]: Stopping apt-daily-upgrade.timer - Daily apt upgrade and clean activities...
|
||||||
Jun 25 14:35:06 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.
|
||||||
Jun 25 14:35:06 node01 systemd[1]: Started 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.
|
||||||
```
|
```
|
||||||
|
|
||||||
## 5.硬件直通
|
## 4.硬件直通
|
||||||
|
|
||||||
### 5.1.修改 Grub
|
### 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 硬件直通功能。
|
参考官方文档 [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` 。
|
使用终端工具登录到 PVE 服务器,编辑系统 `Grub` 的配置文件 `/etc/default/grub` 。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 编辑 Grub 配置文件
|
## 编辑 Grub 配置文件
|
||||||
$ nano /etc/default/grub
|
$ editor /etc/default/grub
|
||||||
```
|
```
|
||||||
|
|
||||||
在编辑器对话框中修改 `GRUB_CMDLINE_LINUX_DEFAULT` 参数,注意命令中间的空格。
|
在编辑器对话框中修改 `GRUB_CMDLINE_LINUX_DEFAULT` 参数,注意命令中间的空格。
|
||||||
@@ -425,36 +385,32 @@ GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
|
|||||||
$ update-grub
|
$ update-grub
|
||||||
```
|
```
|
||||||
|
|
||||||
### 5.2.添加内核模块
|
### 4.2.添加内核模块
|
||||||
|
|
||||||
修改系统 `/etc/modules` 配置文件,增加必要的系统模块。
|
编辑 **内核模块** 配置文件,增加必要的系统模块,执行以下命令。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 编辑系统配置文件
|
## 编辑系统配置文件
|
||||||
$ nano /etc/modules
|
$ 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.
|
||||||
在配置文件中添加以下配置项,并保存。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 硬件直通配置项
|
|
||||||
|
|
||||||
vfio
|
vfio
|
||||||
vfio_iommu_type1
|
vfio_iommu_type1
|
||||||
vfio_pci
|
vfio_pci
|
||||||
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
使用以下命令更新 `initramfs` ,更新完成后,建议重启 PVE 服务器。
|
执行以下命令更新 `initramfs` ,更新完成后,建议重启 PVE 服务器。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 更新 initramfs
|
## 更新 initramfs
|
||||||
$ update-initramfs -u -k all
|
$ update-initramfs -u -k all
|
||||||
```
|
```
|
||||||
|
|
||||||
### 5.3.检查硬件直通
|
### 4.3.检查硬件直通
|
||||||
|
|
||||||
PVE 服务器重启完成后,再次使用 SSH 工具登录,并使用以下命令检查硬件直通状态。
|
PVE 服务器重启完成后,再次使用终端工具登录,并执行以下命令检查硬件直通状态。
|
||||||
|
|
||||||
主要查看 `IOMMU` 、 `Directed I/O` 或 `Interrupt Remapping` 的启用状态。
|
主要查看 `IOMMU` 、 `Directed I/O` 或 `Interrupt Remapping` 的启用状态。
|
||||||
|
|
||||||
@@ -462,89 +418,130 @@ PVE 服务器重启完成后,再次使用 SSH 工具登录,并使用以下
|
|||||||
## 检查系统硬件直通状态
|
## 检查系统硬件直通状态
|
||||||
$ dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
|
$ dmesg | grep -e DMAR -e IOMMU -e AMD-Vi
|
||||||
|
|
||||||
#### 设备 CPU - N6005 示例输出
|
#### 设备 CPU - J4125 示例输出
|
||||||
[ 0.017937] ACPI: DMAR 0x00000000746C2000 000088 (v02 INTEL EDK2 00000002 01000013)
|
[ 0.008356] ACPI: DMAR 0x000000007953E000 0000A8 (v01 INTEL GLK-SOC 00000003 BRXT 0100000D)
|
||||||
[ 0.017965] ACPI: Reserving DMAR table memory at [mem 0x746c2000-0x746c2087]
|
[ 0.008406] ACPI: Reserving DMAR table memory at [mem 0x7953e000-0x7953e0a7]
|
||||||
[ 0.047812] DMAR: IOMMU enabled
|
[ 0.055618] AMD-Vi: Unknown option - 'on'
|
||||||
[ 0.116031] DMAR: Host address width 39
|
[ 0.220916] DMAR: Host address width 39
|
||||||
[ 0.116032] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
|
[ 0.220919] DMAR: DRHD base: 0x000000fed64000 flags: 0x0
|
||||||
[ 0.116038] DMAR: dmar0: reg_base_addr fed90000 ver 4:0 cap 1c0000c40660462 ecap 49e2ff0505e
|
[ 0.220939] DMAR: dmar0: reg_base_addr fed64000 ver 1:0 cap 1c0000c40660462 ecap 9e2ff0505e
|
||||||
[ 0.116041] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
|
[ 0.220944] DMAR: DRHD base: 0x000000fed65000 flags: 0x1
|
||||||
[ 0.116046] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da
|
[ 0.220954] DMAR: dmar1: reg_base_addr fed65000 ver 1:0 cap d2008c40660462 ecap f050da
|
||||||
[ 0.116048] DMAR: RMRR base: 0x0000007b800000 end: 0x0000007fbfffff
|
[ 0.220960] DMAR: RMRR base: 0x000000794a9000 end: 0x000000794c8fff
|
||||||
[ 0.116051] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1
|
[ 0.220963] DMAR: RMRR base: 0x0000007b800000 end: 0x0000007fffffff
|
||||||
[ 0.116052] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
|
[ 0.220967] DMAR-IR: IOAPIC id 1 under DRHD base 0xfed65000 IOMMU 1
|
||||||
[ 0.116053] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
|
[ 0.220970] DMAR-IR: HPET id 0 under DRHD base 0xfed65000
|
||||||
[ 0.117774] DMAR-IR: Enabled IRQ remapping in x2apic mode
|
[ 0.220973] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
|
||||||
[ 1.746431] pci 0000:00:02.0: DMAR: Skip IOMMU disabling for graphics
|
[ 0.223069] DMAR-IR: Enabled IRQ remapping in x2apic mode
|
||||||
[ 2.290116] DMAR: No ATSR found
|
[ 0.493005] DMAR: No ATSR found
|
||||||
[ 2.290117] DMAR: No SATC found
|
[ 0.493008] DMAR: No SATC found
|
||||||
[ 2.290118] DMAR: IOMMU feature fl1gp_support inconsistent
|
[ 0.493010] DMAR: dmar0: Using Queued invalidation
|
||||||
[ 2.290119] DMAR: IOMMU feature pgsel_inv inconsistent
|
[ 0.493018] DMAR: dmar1: Using Queued invalidation
|
||||||
[ 2.290120] DMAR: IOMMU feature nwfs inconsistent
|
[ 0.494092] DMAR: Intel(R) Virtualization Technology for Directed I/O
|
||||||
[ 2.290121] DMAR: IOMMU feature pds inconsistent
|
|
||||||
[ 2.290122] DMAR: IOMMU feature eafs inconsistent
|
|
||||||
[ 2.290123] DMAR: IOMMU feature prs inconsistent
|
|
||||||
[ 2.290123] DMAR: IOMMU feature nest inconsistent
|
|
||||||
[ 2.290124] DMAR: IOMMU feature mts inconsistent
|
|
||||||
[ 2.290124] DMAR: IOMMU feature sc_support inconsistent
|
|
||||||
[ 2.290125] DMAR: IOMMU feature dev_iotlb_support inconsistent
|
|
||||||
[ 2.290126] DMAR: dmar0: Using Queued invalidation
|
|
||||||
[ 2.290129] DMAR: dmar1: Using Queued invalidation
|
|
||||||
[ 2.290568] DMAR: Intel(R) Virtualization Technology for Directed I/O
|
|
||||||
```
|
```
|
||||||
|
|
||||||
检查系统 `IOMMU` 分组,使用以下命令。
|
检查系统 `IOMMU` 分组,执行以下命令。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 检查 IOMMU group
|
## 检查 IOMMU group
|
||||||
$ find /sys/kernel/iommu_groups/ -type l
|
$ find /sys/kernel/iommu_groups/ -type l
|
||||||
|
|
||||||
#### 设备 CPU - N6005 示例输出
|
#### 设备 CPU - J4125 示例输出
|
||||||
/sys/kernel/iommu_groups/7/devices/0000:00:1c.4
|
/sys/kernel/iommu_groups/17/devices/0000:04:00.0
|
||||||
/sys/kernel/iommu_groups/15/devices/0000:04:00.0
|
/sys/kernel/iommu_groups/7/devices/0000:00:13.3
|
||||||
/sys/kernel/iommu_groups/5/devices/0000:00:17.0
|
/sys/kernel/iommu_groups/15/devices/0000:02:00.0
|
||||||
/sys/kernel/iommu_groups/13/devices/0000:02:00.0
|
/sys/kernel/iommu_groups/5/devices/0000:00:13.0
|
||||||
/sys/kernel/iommu_groups/3/devices/0000:00:15.2
|
/sys/kernel/iommu_groups/13/devices/0000:00:1f.0
|
||||||
/sys/kernel/iommu_groups/3/devices/0000:00:15.0
|
/sys/kernel/iommu_groups/13/devices/0000:00:1f.1
|
||||||
/sys/kernel/iommu_groups/11/devices/0000:00:1f.0
|
/sys/kernel/iommu_groups/3/devices/0000:00:0f.0
|
||||||
/sys/kernel/iommu_groups/11/devices/0000:00:1f.5
|
/sys/kernel/iommu_groups/11/devices/0000:00:17.0
|
||||||
/sys/kernel/iommu_groups/11/devices/0000:00:1f.3
|
/sys/kernel/iommu_groups/11/devices/0000:00:17.3
|
||||||
/sys/kernel/iommu_groups/11/devices/0000:00:1f.4
|
/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/1/devices/0000:00:00.0
|
||||||
/sys/kernel/iommu_groups/8/devices/0000:00:1c.5
|
/sys/kernel/iommu_groups/18/devices/0000:05:00.0
|
||||||
/sys/kernel/iommu_groups/16/devices/0000:05:00.0
|
/sys/kernel/iommu_groups/8/devices/0000:00:14.0
|
||||||
/sys/kernel/iommu_groups/6/devices/0000:00:1c.0
|
/sys/kernel/iommu_groups/16/devices/0000:03:00.0
|
||||||
/sys/kernel/iommu_groups/14/devices/0000:03:00.0
|
/sys/kernel/iommu_groups/6/devices/0000:00:13.2
|
||||||
/sys/kernel/iommu_groups/4/devices/0000:00:16.0
|
/sys/kernel/iommu_groups/14/devices/0000:01:00.0
|
||||||
/sys/kernel/iommu_groups/12/devices/0000:01:00.0
|
/sys/kernel/iommu_groups/4/devices/0000:00:12.0
|
||||||
/sys/kernel/iommu_groups/2/devices/0000:00:14.5
|
/sys/kernel/iommu_groups/12/devices/0000:00:1c.0
|
||||||
/sys/kernel/iommu_groups/2/devices/0000:00:14.2
|
/sys/kernel/iommu_groups/2/devices/0000:00:0e.0
|
||||||
/sys/kernel/iommu_groups/2/devices/0000:00:14.0
|
/sys/kernel/iommu_groups/10/devices/0000:00:15.0
|
||||||
/sys/kernel/iommu_groups/10/devices/0000:00:1c.7
|
|
||||||
/sys/kernel/iommu_groups/0/devices/0000:00:02.0
|
/sys/kernel/iommu_groups/0/devices/0000:00:02.0
|
||||||
/sys/kernel/iommu_groups/9/devices/0000:00:1c.6
|
/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.系统清理
|
## 6.系统清理
|
||||||
|
|
||||||
PVE 系统配置完成后,可逐条执行以下命令,对系统进行清理。
|
PVE 系统配置完成后,可执行以下命令,对系统进行清理。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 清理系统软件包
|
## 清理系统软件包
|
||||||
$ apt clean && apt autoclean && apt autoremove --purge
|
$ apt clean && apt autoclean && apt autoremove --purge
|
||||||
|
|
||||||
## 清理系统缓存
|
## 清理系统缓存
|
||||||
$ rm -rvf /var/cache/apt/* /var/lib/apt/lists/* /tmp/*
|
$ bash -c 'find /var/cache/apt/ /var/lib/apt/lists/ /tmp/ -type f -print -delete'
|
||||||
|
|
||||||
## 清理系统日志
|
## 清理系统日志
|
||||||
$ find /var/log/ -type f | xargs rm -rvf
|
$ bash -c 'find /var/log/ -type f -print -delete'
|
||||||
|
|
||||||
## 清理命令历史记录文件
|
## 清理命令历史记录文件
|
||||||
$ rm -rvf ~/.bash_history
|
$ rm -rvf ~/.bash_history && history -c
|
||||||
|
|
||||||
## 清理命令历史
|
|
||||||
$ history -c
|
|
||||||
```
|
```
|
||||||
|
|
||||||
至此 PVE 的系统调整已经完成。
|
至此 PVE 的系统调整已经完成。
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
将虚拟机制作成模板,可在后续新建虚拟机时快速从模板中创建,减少系统安装配置时间。
|
将虚拟机制作成模板,可在后续新建虚拟机时快速从模板中创建,减少系统安装配置时间。
|
||||||
|
|
||||||
该虚拟机模板主要作为内网 DNS 服务器使用,并会安装 Adguard Home 。
|
该虚拟机模板主要用作内网 DNS 服务器,由 `Adguard Home` 或 `SmartDNS` 提供 DNS 解析服务。
|
||||||
|
|
||||||
本文将使用 Debian 的云镜像 `debian-12-genericcloud-amd64.qcow2` 作为模板虚拟机的镜像。
|
本文将使用 Debian 的云镜像 `debian-13-generic-amd64.qcow2` 作为模板虚拟机的镜像。
|
||||||
|
|
||||||
访问 [Debian Official Cloud Images](https://cloud.debian.org/images/cloud/) 官方网站,下载最新版 `Bookworm` 云镜像以及对应的校验文件。
|
访问 [Debian Official Cloud Images](https://cloud.debian.org/images/cloud/) 官方网站,下载最新版 `Trixie` 云镜像以及对应的校验文件。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 1.创建虚拟机
|
## 1.创建虚拟机
|
||||||
|
|
||||||
@@ -18,163 +18,190 @@
|
|||||||
|
|
||||||
勾选底部 `高级` 选项,显示完整的配置参数,节点即 “本机” ,`VM ID` 和 `名称` 可自定义。
|
勾选底部 `高级` 选项,显示完整的配置参数,节点即 “本机” ,`VM ID` 和 `名称` 可自定义。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 1.2.操作系统
|
### 1.2.操作系统
|
||||||
|
|
||||||
无需使用任何安装介质,客户机操作系统类别选择 `Linux` , 版本选择 `6.x - 2.6 Kernel` 即可。
|
无需使用任何安装介质,客户机操作系统类别选择 `Linux` , 版本选择 `7.x - 2.6 Kernel` 即可。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 1.3.系统
|
### 1.3.系统
|
||||||
|
|
||||||
SCSI 控制器保持默认 `VirtIO SCSI single` ,并勾选 `Qemu代理` 选项。
|
SCSI 控制器保持默认 `VirtIO SCSI single` ,机型可选 `q35` ,并勾选 `Qemu 代理` 选项。
|
||||||
|
|
||||||

|
固件可选 `OVMF (UEFI)` ,并勾选 `添加 TPM` 选项,存储路径需根据实际情况进行调整,演示为 `local-lvm` 。
|
||||||
|
|
||||||
|
`预注册密钥` 可启用,启用后将预装特定于发行版和 Microsoft 标准的安全启动密钥。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
### 1.4.磁盘
|
### 1.4.磁盘
|
||||||
|
|
||||||
一般情况下,如果该虚拟机仅为 Adguard Home 服务器,`20G` 磁盘空间足够使用。
|
因使用 Debian 云镜像制作虚拟机模板,此处需删除所有 `磁盘` 。
|
||||||
|
|
||||||
由于使用 Debian 云镜像制作虚拟机模板,此处删除所有 `磁盘` 。
|

|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 1.5.CPU
|
### 1.5.CPU
|
||||||
|
|
||||||
CPU `类别` 选择 `host` ,`插槽` 与 `核心` 数根据物理 CPU 核心数进行酌情设置。
|
CPU `类型` 选择 `host` ,`插槽` 与 `核心` 数根据物理 CPU 核心数进行酌情设置。
|
||||||
|
|
||||||
若 PVE 服务器内有多颗物理 CPU ,则推荐勾选 `启用NUMA` 选项。
|
若 PVE 服务器内有多颗物理 CPU ,则推荐勾选 `启用 NUMA` 选项。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 1.6.内存
|
### 1.6.内存
|
||||||
|
|
||||||
内存一般 `2G` 足够使用,取消勾选 `Ballooning设备` 。
|
建议将 `内存` 设置为业务峰值需求,`最小内存` 原则上不低于 `内存` 的 `75%` 。
|
||||||
|
|
||||||

|
默认启用 `Ballooning 设备` ,使 PVE 能够获取虚拟机内部的内存统计,并在宿主机出现内存压力时动态回收和调配内存。
|
||||||
|
|
||||||
|
将 `最小内存` 设置为与 `内存` 相同,可保留统计能力,同时为虚拟机提供固定的内存保障。
|
||||||
|
|
||||||
|
对于 `允许 KSM` 内核同页合并功能,建议保留勾选状态。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
### 1.7.网络
|
### 1.7.网络
|
||||||
|
|
||||||
在 [02.PVE初始化配置](./02.PVE初始化配置.md) 中,曾创建了一个没有桥接任何物理网口的内部网桥。
|
通常情况下,模板虚拟机的 `桥接` 参数设为 PVE 管理口所在虚拟网桥即可。
|
||||||
|
|
||||||
该内部网桥接口同属于主路由内部网桥成员接口。
|
因在 [02.PVE初始化配置](./02.PVE初始化配置.md) 中曾创建未桥接物理网口的内部网桥,故可根据实际需求选择是否使用纯内部网桥作为该参数值。
|
||||||
|
|
||||||
因此,模板虚拟机的 `桥接` 参数可设置为该纯内部网桥。
|

|
||||||
|
|
||||||

|
多数情况下,无需使用 PVE 内建防火墙,因此 **取消勾选** 网络设备的 `防火墙` 选项。
|
||||||
|
|
||||||
由于演示环境中暂未安装主路由系统,因此选择其他网桥接口替代。
|
|
||||||
|
|
||||||
通常情况下无需使用 PVE 内建防火墙,因此 **取消勾选** 网络设备的 `防火墙` 选项。
|
|
||||||
|
|
||||||
推荐在 `Multiqueue` 处根据前面设置的 CPU 核心数进行网卡多队列设置,设置比例为 1:1 。
|
推荐在 `Multiqueue` 处根据前面设置的 CPU 核心数进行网卡多队列设置,设置比例为 1:1 。
|
||||||
|
|
||||||
即有 n 个 CPU 核心,此处多队列也设置为 n 。
|
即有 n 个 CPU 核心,此处多队列也设置为 n 。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 1.8.确认
|
### 1.8.确认
|
||||||
|
|
||||||
接下来查看设置总览,确认无误后即可点击 `完成` 。
|
接下来查看设置总览,确认无误后即可点击 `完成` 。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 2.调整硬件参数
|
## 2.调整硬件参数
|
||||||
|
|
||||||
### 2.1.删除光驱
|
### 2.1.删除光驱
|
||||||
|
|
||||||
查看虚拟机详情页,在虚拟机硬件配置页面,移除其 `CD/DVD驱动器` 。
|
查看虚拟机详情页,在虚拟机 `硬件` 配置页面,移除其 `CD/DVD 驱动器` 。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 2.2.导入镜像文件
|
### 2.2.添加 VirtIO RNG
|
||||||
|
|
||||||
使用 SSH 工具登录 PVE 服务器,并进入 `tmp` 目录,逐条执行以下命令创建一个文件夹。
|
为确保系统拥有充足的可用熵,需为模板虚拟机添加 `VirtIO RNG` 熵源。
|
||||||
|
|
||||||
|
点击顶部 `新增` 菜单,选择 `VirtIO RNG` 。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
`熵源` 选择 `/dev/urandom` ,其余参数保持默认即可。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 2.3.添加串行端口
|
||||||
|
|
||||||
|
在基于 Debian Cloud Image 创建 VM 时,须在虚拟机硬件列表中添加 `串行端口` 设备 `serial0` 。
|
||||||
|
|
||||||
|
补全串口硬件可避免系统因缺失 `/dev/ttyS0` 而无限循环报 `agetty` 输入/输出错误,同时可启用 PVE 的 `xterm.js` 控制台(支持原生复制粘贴)。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
`串行端口` 设置为 `0` 即可。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 2.4.导入镜像文件
|
||||||
|
|
||||||
|
使用终端工具登录到 PVE 服务器,在 `/tmp` 目录中创建一个目录用于下载 Debian 云镜像文件。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 进入 tmp 目录
|
## 创建并进入目录
|
||||||
$ cd /tmp
|
$ mkdir -p /tmp/Debian && cd /tmp/Debian
|
||||||
|
|
||||||
## 创建文件夹
|
|
||||||
$ mkdir Debian
|
|
||||||
|
|
||||||
## 进入文件夹
|
|
||||||
$ cd Debian
|
|
||||||
```
|
|
||||||
|
|
||||||
将 Debian 云镜像传输到该文件夹,并检查 `hash` 。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 下载云镜像校验文件
|
## 下载云镜像校验文件
|
||||||
$ wget https://cloud.debian.org/images/cloud/bookworm/latest/SHA512SUMS
|
$ curl -LR -O https://cloud.debian.org/images/cloud/trixie/latest/SHA512SUMS
|
||||||
|
|
||||||
## 下载云镜像
|
## 下载云镜像
|
||||||
$ wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2
|
$ curl -LR -O https://cloud.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.qcow2
|
||||||
|
|
||||||
## 检查文件是否存在
|
|
||||||
$ ls -la
|
|
||||||
|
|
||||||
## 显示校验文件内容
|
|
||||||
$ cat SHA512SUMS
|
|
||||||
|
|
||||||
## 计算文件 hash
|
|
||||||
$ sha512sum debian-12-genericcloud-amd64.qcow2
|
|
||||||
```
|
```
|
||||||
|
|
||||||
确认无误后,将镜像文件导入刚才创建的虚拟机,命令中的 `VM ID` 需要根据实际情况替换,演示为 `1000` 。
|
镜像文件下载完成后,使用官方提供的校验文件验证镜像完整性。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
## 检查文件是否存在
|
||||||
|
$ ls -lah
|
||||||
|
|
||||||
|
## 执行镜像文件校验
|
||||||
|
$ sha512sum --check --ignore-missing SHA512SUMS
|
||||||
|
|
||||||
|
#### 镜像校验成功示例输出
|
||||||
|
debian-13-generic-amd64.qcow2: OK
|
||||||
|
```
|
||||||
|
|
||||||
|
确认无误后,将镜像文件导入刚才创建的虚拟机,命令中的 `VM ID` 需要根据实际情况替换,演示为 `1001` 。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 将 qcow2 镜像导入虚拟机中
|
## 将 qcow2 镜像导入虚拟机中
|
||||||
$ qm importdisk 1000 debian-12-genericcloud-amd64.qcow2 local-lvm
|
$ qm importdisk 1001 debian-13-generic-amd64.qcow2 local-lvm
|
||||||
|
|
||||||
#### 镜像导入示例输出
|
#### 镜像导入示例输出
|
||||||
Successfully imported disk as 'unused0:local-lvm:vm-1000-disk-0'
|
unused0: successfully imported disk 'local-lvm:vm-1001-disk-2'
|
||||||
```
|
```
|
||||||
|
|
||||||

|
磁盘导入成功后,虚拟机硬件列表中将显示一块未使用的磁盘设备,可鼠标 **双击** 该设备进行配置调整。
|
||||||
|
|
||||||
鼠标 **双击** 该未使用的磁盘,点击 `添加` 。
|

|
||||||
|
|
||||||

|
当宿主机使用 SSD 作为物理存储设备,并且虚拟磁盘采用 Thin Provisioning (精简置备)模式时,可考虑开启以下选项:
|
||||||
|
|
||||||
导入的镜像只有 `2G` 磁盘空间,为了后续方便使用,需要对磁盘进行扩容。
|
- `丢弃` ( `Discard` ) 选项,有助于存储空间回收。
|
||||||
|
|
||||||
鼠标 **单击** 选中该磁盘,选择页面顶部 `磁盘操作` 菜单的子菜单 `调整大小` 。
|
- `SSD 仿真` ( `SSD Emulation` ) 选项,让虚拟机将虚拟磁盘视为 SSD 存储设备。
|
||||||
|
|
||||||

|
在弹出的对话框中,确认 `IO thread` 选项为 **勾选** 状态,并点击 `新增` 。
|
||||||
|
|
||||||
在弹出的对话框中,给该磁盘增加 `18G` 磁盘空间。
|

|
||||||
|
|
||||||

|
导入的镜像仅具备 `3GiB` 磁盘空间,为方便后续使用,可通过 `qm` 命令直接将该磁盘调整至目标容量。
|
||||||
|
|
||||||
### 2.3.添加 CloudInit
|
```bash
|
||||||
|
## 将镜像容量设置为 24G
|
||||||
|
$ qm disk resize 1001 scsi0 24G
|
||||||
|
|
||||||
为了能够正常使用 Cloud-Init 初始化系统,需要给模板虚拟机添加 `CloudInit设备` 。
|
#### 镜像扩容示例输出
|
||||||
|
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.
|
||||||
|
```
|
||||||
|
|
||||||
点击顶部 `添加` 菜单,选择 `CloudInit设备` 。
|
或 **单击** 选中该磁盘,然后使用 `磁盘操作` 菜单中的 `调整大小` 选项对磁盘镜像进行扩容。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
`总线/设备` 选择 `SCSI` ,编号为 `1` ,`存储` 选择 `local-lvm` 。
|
在弹出的对话框中,给该磁盘增加 `21GiB` 磁盘空间。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 2.4.添加串行端口
|
### 2.5.添加 CloudInit
|
||||||
|
|
||||||
部分云镜像需要使用 `serial` 端口作为视频输出端口,否则虚拟机无法启动,因此给模板虚拟机添加串行端口。
|
为确保 Cloud-Init 能正常初始化系统,需为模板虚拟机添加 `CloudInit 设备` 。
|
||||||
|
|
||||||
点击顶部 `添加` 菜单,选择 `串行端口` 。
|
同样通过 `新增` 菜单,选择 `CloudInit 设备` 。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
串行端口编号为 `0` 。
|
`总线/设备` 选择 `SCSI` ,编号为 `1` ,存储路径需根据实际情况进行调整,演示为 `local-lvm` 。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
虚拟机硬件设备修改完成后,如下图所示。
|
虚拟机硬件设备修改完成后,如下图所示。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 3.调整配置参数
|
## 3.调整配置参数
|
||||||
|
|
||||||
@@ -194,21 +221,19 @@ Successfully imported disk as 'unused0:local-lvm:vm-1000-disk-0'
|
|||||||
|
|
||||||
鼠标 **双击** `引导顺序` 选项,进入编辑界面。
|
鼠标 **双击** `引导顺序` 选项,进入编辑界面。
|
||||||
|
|
||||||
在 `scsi0` 设备处,勾选前面的 “已启用” 复选框,并使用行首的排序功能,将该设备拖拽到第一个。
|
在 `scsi0` 设备处勾选 “已启用” 复选框,并通过排序功能将其拖拽至首位,点击 `确定` 即可。
|
||||||
|
|
||||||
然后点击 `OK` 按钮。
|

|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 3.2.设置平板指针
|
### 3.2.设置平板指针
|
||||||
|
|
||||||
关闭 `使用平板指针` 选项,可以一定程度上降低虚拟机的 CPU 使用率。
|
关闭 `使用平板指针` 选项,可以一定程度上降低虚拟机的 CPU 使用率。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## 4.设置 Cloud-Init
|
## 4.设置 Cloud-Init
|
||||||
|
|
||||||
进入左侧虚拟机 `Cloud-Init` 菜单,可以看到当前虚拟机的初始化参数。
|
进入左侧虚拟机 `Cloud-Init` 页面,可以看到当前虚拟机的初始化参数。
|
||||||
|
|
||||||
### 4.1.自动配置 IPv6
|
### 4.1.自动配置 IPv6
|
||||||
|
|
||||||
@@ -216,47 +241,69 @@ Successfully imported disk as 'unused0:local-lvm:vm-1000-disk-0'
|
|||||||
|
|
||||||
|参数|值|说明|
|
|参数|值|说明|
|
||||||
|--|--|--|
|
|--|--|--|
|
||||||
|用户|fox|新系统的管理员账户|
|
|用户|`fox`|新系统的管理员账户|
|
||||||
|密码|********|使用强密码|
|
|密码|`********`|使用强密码|
|
||||||
|DNS域|fox.local|内网域名(可选)|
|
|DNS 域|`fox.internal`|内网域名(可选)|
|
||||||
|DNS服务器|`172.16.1.1 127.0.0.1`|本机DNS服务器,用空格隔开|
|
|DNS 服务器|`172.16.1.1`|本机 DNS 服务器|
|
||||||
|SSH公钥|无|使用秘钥登录服务器,暂不使用|
|
|SSH 公钥|`无`|使用秘钥登录服务器,暂不使用|
|
||||||
|IP配置(net0)|`ip=172.16.1.250/24,gw=172.16.1.1,ip6=auto`|模板的 IP 设置|
|
|升级程序包|`是`|启动时更新软件包,保持默认即可|
|
||||||
|
|IP 配置 (net0)|`ip=172.16.1.250/24,gw=172.16.1.1,ip6=auto`|模板的 IP 设置|
|
||||||
|
|
||||||
**额外说明:**
|
**额外说明:**
|
||||||
|
- 修改 `Cloud-Init` 参数时,需要在虚拟机关机情况下修改才会生效
|
||||||
1. 修改 `Cloud-Init` 参数时,需要在虚拟机关机情况下修改才会生效。
|
- `DNS服务器` 参数支持输入多个 IPv4 / IPv6 地址,使用空格隔开
|
||||||
|
- 当前 `DNS服务器` 参数为主路由 LAN 口 IPv4 地址,确保虚拟机能正常联网
|
||||||
2. 在 `DNS服务器` 设置部分,如果先设置了 `127.0.0.1` 作为 DNS 服务器,后续其他 DNS 的 IP 地址将被忽略。
|
|
||||||
|
|
||||||
此时内网没有其他 DNS 服务器,因此将 `DNS服务器` 设置为 `172.16.1.1 127.0.0.1` ,IP 之间用空格隔开。
|
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
`Cloud-Init` 的 `IP配置` ,IPv4 使用静态地址,IPv6 使用 `SLAAC` 自动配置,如下图所示。
|
`Cloud-Init` 的 `IP 配置` ,IPv4 使用 `静态` 地址,IPv6 使用 `SLAAC` 自动配置,如下图所示。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
### 4.2.手动配置 IPv6
|
### 4.2.手动配置 IPv6
|
||||||
|
|
||||||
当主路由配置了 ULA IPv6 网段,且希望指定内网 DNS 服务器的 ULA IPv6 地址时,需要调整 `Cloud-Init` 参数。
|
当主路由配置了 IPv6 ULA 网段,且希望指定内网 DNS 服务器的 IPv6 ULA 地址时,需要调整 `Cloud-Init` 参数。
|
||||||
|
|
||||||
本文 ULA IPv6 演示地址为 `fdac::/64` ,`DNS服务器` 和 `IP配置` 参数调整如下。
|
本文 IPv6 ULA 演示地址段为 `fdac::/64` ,`DNS 服务器` 和 `IP 配置` 参数调整如下。
|
||||||
|
|
||||||
|参数|值|说明|
|
|参数|值|说明|
|
||||||
|--|--|--|
|
|--|--|--|
|
||||||
|DNS服务器|`172.16.1.1 fdac::1 127.0.0.1`|本机DNS服务器,用空格隔开|
|
|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 设置|
|
|IP配置(net0)|`ip=172.16.1.250/24,gw=172.16.1.1,ip6=fdac::fa/64`|模板的 IP 设置|
|
||||||
|
|
||||||
`DNS服务器` 参数中需要加入主路由 LAN 口 ULA IPv6 地址。
|
`DNS 服务器` 参数中需要加入主路由 LAN 口 IPv6 ULA 地址。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
`IP配置` 参数,IPv4 使用静态地址,IPv6 同样使用静态地址,如下图所示。
|
`IP 配置` 参数,IPv4 使用 `静态` 地址,IPv6 同样使用 `静态` 地址,如下图所示。
|
||||||
|
|
||||||
IPv6 使用静态地址后,并不影响虚拟机通过主路由获取公网 GUA IPv6 地址。
|
IPv6 使用 `静态` 地址后,并不影响虚拟机通过主路由获取 IPv6 GUA 公网地址。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
|
## 5.设置备注信息
|
||||||
|
|
||||||
|
进入左侧虚拟机 `概要` 页面,修改虚拟机的备注信息。
|
||||||
|
|
||||||
|
```bash
|
||||||
|
### 服务器信息
|
||||||
|
|
||||||
|
- 系统: Debian 13
|
||||||
|
|
||||||
|
- 用途: 内网服务器 ( 模板 )
|
||||||
|
|
||||||
|
- 自启: 否
|
||||||
|
|
||||||
|
- 用户: fox
|
||||||
|
|
||||||
|
- IPv4: 172.16.1.250/24
|
||||||
|
|
||||||
|
- IPv6: SLAAC
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
至此,模板虚拟机创建完成,可将该虚拟机开机。
|
至此,模板虚拟机创建完成,可将该虚拟机开机。
|
||||||
|
|
||||||
|
|||||||
@@ -1,31 +1,29 @@
|
|||||||
## 1.配置系统
|
## 1.配置系统
|
||||||
|
|
||||||
在上一篇文章 [04.PVE创建模板虚拟机](./04.PVE创建模板虚拟机.md) 中,已经创建好了用于制作虚拟机模板的模板虚拟机。
|
在上一篇文章 [04.PVE创建模板虚拟机](./04.PVE创建模板虚拟机.md) 中,已经创建好了用于制作 `虚拟机模板` 的虚拟机。
|
||||||
|
|
||||||
并调整了模板虚拟机的硬件参数、配置参数,但还需对 Debian 系统进行调整。
|
此时将该虚拟机开机后,使用 `Cloud-Init` 中设置的账号密码进行登录。
|
||||||
|
|
||||||
此时将模板虚拟机开机后,使用 `Cloud-Init` 中设置的账号密码进行登录。
|
|
||||||
|
|
||||||
### 1.1.配置 SSH
|
### 1.1.配置 SSH
|
||||||
|
|
||||||
因为 Debian 的云镜像默认使用 SSH 秘钥登录,因此切换到左侧菜单的 `控制台` 进行登录。
|
因为 Debian 的云镜像默认使用 SSH 秘钥登录,因此切换到左侧菜单的 `控制台` 进行登录。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
在虚拟机的命令行界面,使用 `vim` 编辑器编辑 `sshd` 服务的配置文件,执行以下命令。
|
在虚拟机的命令行界面,使用 `vim` 编辑器编辑 `sshd` 服务的配置文件,执行以下命令。
|
||||||
|
|
||||||
`vim` 编辑器常用操作如下:
|
`vim` 编辑器常用操作如下:
|
||||||
|
|
||||||
- 编辑文件,按下键盘 `i` 键,进入编辑模式。
|
- 编辑文件:按下键盘 `i` 键,进入编辑模式。
|
||||||
|
|
||||||
- 保存文件,按下键盘 `Esc` 键,退出编辑模式,再输入组合键 `:wq` 即可保存。
|
- 保存文件:按下键盘 `Esc` 键,退出编辑模式,再输入组合键 `:wq` 即可保存。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 编辑 ssh 配置文件
|
## 编辑 SSH 配置文件
|
||||||
$ sudo vim /etc/ssh/sshd_config.d/server_sshd.conf
|
$ sudo vim /etc/ssh/sshd_config.d/10-server-sshd.conf
|
||||||
```
|
```
|
||||||
|
|
||||||
在配置文件中添加以下配置项,并保存。
|
在配置文件中输入以下内容,并保存。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## SSH 配置项
|
## SSH 配置项
|
||||||
@@ -39,87 +37,35 @@ UseDNS no
|
|||||||
修改完成后,需要重启 SSH 服务。
|
修改完成后,需要重启 SSH 服务。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 重启 sshd
|
## 重启 ssh.service
|
||||||
$ sudo systemctl restart ssh.service
|
$ sudo systemctl restart ssh.service
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.2.配置软件源
|
### 1.2.配置软件源
|
||||||
|
|
||||||
使用 SSH 工具登录模板虚拟机,常用 SSH 工具请参阅 [01.PVE系统安装](./01.PVE系统安装.md) 。
|
使用终端工具登录模板虚拟机,常用终端工具请参阅 [01.PVE系统安装](./01.PVE系统安装.md) 。
|
||||||
|
|
||||||
首先需要对 Debian 系统软件源进行修改,这里使用 [USTC](http://mirrors.ustc.edu.cn/help/debian.html) 镜像站作为演示。
|
首先需要对 Debian 系统软件源进行修改,这里使用 [USTC](https://mirrors.ustc.edu.cn) 镜像站作为演示。
|
||||||
|
|
||||||
当系统版本发生变化时,请参考使用 snullp 大叔开发的 [配置生成器](https://mirrors.ustc.edu.cn/repogen/) 。
|
当系统版本发生变化时,请参考 USTC 镜像站的官方说明 [USTC Mirror Help - Debian](https://mirrors.ustc.edu.cn/help/debian.html) 。
|
||||||
|
|
||||||
Debian12 云镜像的软件源配置采用了 `DEB822` 格式,新版 `sources.list` 配置文件内容如下。
|
使用如下命令对 `debian.sources` 配置文件进行修改。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 查看镜像配置文件
|
## 配置 Debian 系统默认软件源脚本
|
||||||
$ cat /etc/apt/sources.list
|
$ sudo tee /etc/apt/sources.list.d/debian.sources >/dev/null <<'EOF'
|
||||||
|
|
||||||
#### 配置文件示例输出
|
|
||||||
# See /etc/apt/sources.list.d/debian.sources
|
|
||||||
```
|
|
||||||
|
|
||||||
进一步查看新配置文件 `debian.sources` 的内容,其配置包含 `3` 个部分。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 查看新版镜像配置文件
|
|
||||||
$ cat /etc/apt/sources.list.d/debian.sources
|
|
||||||
|
|
||||||
#### 新版配置文件示例输出 (主体部分)
|
|
||||||
Types: deb deb-src
|
|
||||||
URIs: mirror+file:///etc/apt/mirrors/debian.list
|
|
||||||
Suites: bookworm bookworm-updates bookworm-backports
|
|
||||||
Components: main
|
|
||||||
|
|
||||||
Types: deb deb-src
|
|
||||||
URIs: mirror+file:///etc/apt/mirrors/debian-security.list
|
|
||||||
Suites: bookworm-security
|
|
||||||
Components: main
|
|
||||||
|
|
||||||
## 查看关联的配置文件
|
|
||||||
$ cat /etc/apt/mirrors/debian.list
|
|
||||||
|
|
||||||
#### 关联配置文件示例输出 (关联部分 1 )
|
|
||||||
https://deb.debian.org/debian
|
|
||||||
|
|
||||||
## 查看关联的配置文件
|
|
||||||
$ cat /etc/apt/mirrors/debian-security.list
|
|
||||||
|
|
||||||
#### 关联配置文件示例输出 (关联部分 2 )
|
|
||||||
https://deb.debian.org/debian-security
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
因此,修改 Debian12 软件源的方式也有两种,本文将尝试使用第 `2` 种修改方案。
|
|
||||||
|
|
||||||
1. 删除当前软件源配置文件,重新启用常规 `sources.list` 配置文件的配置方案。
|
|
||||||
|
|
||||||
2. 根据当前软件源配置文件的语法规则,仅修改配置文件。
|
|
||||||
|
|
||||||
使用 `vim` 编辑器编辑 `debian.sources` 配置文件,执行以下命令。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 编辑 debian.sources 配置文件
|
|
||||||
$ sudo vim /etc/apt/sources.list.d/debian.sources
|
|
||||||
```
|
|
||||||
|
|
||||||
删除里面全部内容,添加以下配置项,并保存。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 系统软件源配置项
|
|
||||||
|
|
||||||
Types: deb
|
Types: deb
|
||||||
URIs: https://mirrors.ustc.edu.cn/debian
|
URIs: https://mirrors.ustc.edu.cn/debian
|
||||||
Suites: bookworm bookworm-updates bookworm-backports
|
Suites: trixie trixie-updates
|
||||||
Components: main contrib non-free non-free-firmware
|
Components: main contrib non-free non-free-firmware
|
||||||
|
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||||
|
|
||||||
Types: deb
|
Types: deb
|
||||||
URIs: https://mirrors.ustc.edu.cn/debian-security
|
URIs: https://mirrors.ustc.edu.cn/debian-security
|
||||||
Suites: bookworm-security
|
Suites: trixie-security
|
||||||
Components: main contrib non-free non-free-firmware
|
Components: main contrib non-free non-free-firmware
|
||||||
|
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||||
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
为了防止 `Cloud-Init` 服务意外修改软件源配置,需要添加文件保护,执行以下命令。
|
为了防止 `Cloud-Init` 服务意外修改软件源配置,需要添加文件保护,执行以下命令。
|
||||||
@@ -137,85 +83,141 @@ $ lsattr /etc/apt/sources.list.d/debian.sources
|
|||||||
|
|
||||||
### 1.3.安装软件
|
### 1.3.安装软件
|
||||||
|
|
||||||
软件源设置完成后,需要更新系统,逐行执行以下命令。
|
软件源设置完成后,需要更新系统,执行以下命令。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 清理不必要的包
|
## 清理不必要的包
|
||||||
$ sudo apt clean && sudo apt autoclean && sudo apt autoremove --purge
|
$ sudo bash -c 'apt clean && apt autoclean && apt autoremove --purge'
|
||||||
|
|
||||||
## 更新软件源
|
## 更新软件源
|
||||||
$ sudo apt update
|
$ sudo apt update
|
||||||
|
|
||||||
## 更新系统
|
## 更新系统
|
||||||
$ sudo apt dist-upgrade
|
$ sudo apt full-upgrade
|
||||||
```
|
```
|
||||||
|
|
||||||
接下来安装系统必要软件,安装 `iperf3` 后,系统将询问是否将其作为系统服务开机自启,选择 `no` 即可。
|
接下来安装系统必要软件,安装 `iperf3` 后,系统将询问是否将其作为系统服务开机自启,选择 `no` 即可。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 安装系统软件
|
## 安装系统软件
|
||||||
$ sudo apt install qemu-guest-agent zsh git htop tmux cron nftables sshguard
|
$ sudo apt install btop cronie curl git logrotate neovim qemu-guest-agent tmux zsh
|
||||||
|
|
||||||
## 安装系统自动更新工具
|
## 安装系统自动更新工具
|
||||||
$ sudo apt install unattended-upgrades powermgmt-base python3-gi
|
$ sudo apt install powermgmt-base unattended-upgrades
|
||||||
|
|
||||||
## 安装网络工具
|
## 安装网络工具
|
||||||
$ sudo apt install iperf iperf3 iftop lsof ldnsutils
|
$ sudo apt install knot-dnsutils lsof nftables sshguard
|
||||||
|
|
||||||
|
## 安装网络检测工具(可选)
|
||||||
|
$ sudo apt install iftop iperf iperf3
|
||||||
|
|
||||||
|
## 刷新 systemd 日志分类索引
|
||||||
|
$ sudo journalctl --update-catalog
|
||||||
|
|
||||||
## 写入磁盘
|
## 写入磁盘
|
||||||
$ sudo sync
|
$ sudo sync
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.4.调整内核参数
|
### 1.4.配置 ZSH
|
||||||
|
|
||||||
由于该 Debian 虚拟机模板将用于克隆内网 DNS 服务器,因此需要调整内核参数来简单优化性能。
|
`Zsh` 是比 `Bash` 好用的 `Shell` 程序,使用 `oh-my-zsh` 进行配置。
|
||||||
|
|
||||||
使用 `vim` 编辑器编辑 **内核参数** 配置文件,执行以下命令。
|
```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 install -D -m 0644 /dev/stdin /etc/xdg/nvim/sysinit.vim <<'EOF'
|
||||||
|
set mouse=
|
||||||
|
EOF
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.6.调整内核参数
|
||||||
|
|
||||||
|
由于该虚拟机将作为内网 DNS 服务器的克隆模板,需调整内核参数以优化性能。
|
||||||
|
|
||||||
|
编辑 **内核参数** 配置文件,执行以下命令。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 编辑 内核参数 配置文件
|
## 编辑 内核参数 配置文件
|
||||||
$ sudo vim /etc/sysctl.d/99-sysctl.conf
|
$ 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.
|
||||||
在配置文件末尾输入以下配置项,注意配置中间的空格。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# This configuration file is customized by fox
|
|
||||||
# Optimize system parameters
|
|
||||||
|
|
||||||
kernel.panic = 20
|
kernel.panic = 20
|
||||||
kernel.panic_on_oops = 1
|
kernel.panic_on_oops = 1
|
||||||
|
|
||||||
net.core.default_qdisc = fq_codel
|
net.core.default_qdisc = fq_codel
|
||||||
net.ipv4.tcp_congestion_control = bbr
|
|
||||||
|
|
||||||
# Other adjustable system parameters
|
# Other adjustable system parameters
|
||||||
|
|
||||||
net.ipv4.conf.all.log_martians = 1
|
net.core.netdev_budget = 600
|
||||||
|
net.core.netdev_max_backlog = 4096
|
||||||
|
|
||||||
net.ipv4.igmp_max_memberships = 100
|
net.core.rmem_default = 262144
|
||||||
|
net.core.wmem_default = 262144
|
||||||
|
net.core.rmem_max = 16777216
|
||||||
|
net.core.wmem_max = 16777216
|
||||||
|
|
||||||
net.ipv4.tcp_challenge_ack_limit = 1000
|
net.ipv4.tcp_fastopen = 3
|
||||||
net.ipv4.tcp_fin_timeout = 30
|
net.ipv4.tcp_fin_timeout = 30
|
||||||
net.ipv4.tcp_keepalive_time = 120
|
net.ipv4.tcp_keepalive_time = 600
|
||||||
net.ipv4.tcp_max_orphans = 4096
|
net.ipv4.tcp_max_syn_backlog = 4096
|
||||||
net.ipv4.tcp_max_tw_buckets = 4096
|
net.ipv4.tcp_notsent_lowat = 131072
|
||||||
net.ipv4.tcp_syncookies = 1
|
net.ipv4.tcp_rmem = 4096 524288 16777216
|
||||||
|
net.ipv4.tcp_wmem = 4096 524288 16777216
|
||||||
|
|
||||||
net.ipv6.conf.all.use_tempaddr = 0
|
net.ipv6.conf.all.use_tempaddr = 0
|
||||||
net.ipv6.conf.default.use_tempaddr = 0
|
net.ipv6.conf.default.use_tempaddr = 0
|
||||||
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
保存该配置文件后,重启系统或者执行以下命令让配置生效。
|
配置文件编辑完成后,重启系统或者执行以下命令让配置生效。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 让内核参数生效
|
## 让内核参数生效
|
||||||
$ sudo sysctl -f
|
$ sudo sysctl --system
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.5.调整系统时间
|
### 1.7.调整系统时间
|
||||||
|
|
||||||
默认情况下的 Debian 云镜像的系统时间需要调整,执行以下命令将系统时区设置为中国时区。
|
默认情况下 Debian 云镜像的系统时间需要调整,执行以下命令将系统时区设置为中国时区。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 设置系统时区
|
## 设置系统时区
|
||||||
@@ -225,35 +227,31 @@ $ sudo timedatectl set-timezone Asia/Shanghai
|
|||||||
$ date -R
|
$ date -R
|
||||||
|
|
||||||
#### 系统时间示例输出
|
#### 系统时间示例输出
|
||||||
Mon, 26 Jun 2023 16:16:16 +0800
|
Mon, 10 Aug 2026 11:23:56 +0800
|
||||||
```
|
```
|
||||||
|
|
||||||
Debian 云镜像默认使用 `systemd-timesyncd.service` 同步时间,且需要调整为使用国内 NTP 服务器。
|
Debian 云镜像默认使用 `systemd-timesyncd.service` 同步时间,且需要调整为使用国内 NTP 服务器。
|
||||||
|
|
||||||
调整 NTP 服务器参数,逐行执行以下命令。
|
调整 NTP 服务器参数,执行以下命令。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 创建 NTP 配置文件的文件夹
|
## 创建 NTP 配置目录
|
||||||
$ sudo mkdir /etc/systemd/timesyncd.conf.d
|
$ sudo mkdir -p /etc/systemd/timesyncd.conf.d
|
||||||
|
|
||||||
## 创建 NTP 配置文件
|
## 创建 NTP 配置文件
|
||||||
$ sudo vim /etc/systemd/timesyncd.conf.d/server_ntp.conf
|
$ 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.
|
||||||
在配置文件中添加以下配置项,并保存。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## NTP 配置项
|
|
||||||
|
|
||||||
[Time]
|
[Time]
|
||||||
NTP=ntp.tencent.com ntp.aliyun.com
|
NTP=ntp.aliyun.com ntp.tencent.com cn.pool.ntp.org
|
||||||
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
保存该配置文件后,需重启 `systemd-timesyncd.service` 服务,并再次检查系统 NTP 服务器地址。
|
配置文件编辑完成后,需重启 `systemd-timesyncd.service` 服务,并再次检查系统 NTP 服务器地址。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 重启 chrony 服务
|
## 重启 systemd-timesyncd.service
|
||||||
$ sudo systemctl restart systemd-timesyncd.service
|
$ sudo systemctl restart systemd-timesyncd.service
|
||||||
|
|
||||||
## 检查系统 NTP 服务器
|
## 检查系统 NTP 服务器
|
||||||
@@ -265,24 +263,25 @@ $ sudo systemctl status systemd-timesyncd.service
|
|||||||
```bash
|
```bash
|
||||||
#### NTP 服务示例输出
|
#### NTP 服务示例输出
|
||||||
● systemd-timesyncd.service - Network Time Synchronization
|
● systemd-timesyncd.service - Network Time Synchronization
|
||||||
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; preset: enabled)
|
Loaded: loaded (/usr/lib/systemd/system/systemd-timesyncd.service; enabled; preset: enabled)
|
||||||
Active: active (running) since Mon 2023-06-26 16:16:00 CST; 16s ago
|
Active: active (running) since Mon 2026-08-10 11:24:43 CST; 5s ago
|
||||||
|
Invocation: 95cd4555913e45d8a7235347cf3d571a
|
||||||
Docs: man:systemd-timesyncd.service(8)
|
Docs: man:systemd-timesyncd.service(8)
|
||||||
Main PID: 18829 (systemd-timesyn)
|
Main PID: 6516 (systemd-timesyn)
|
||||||
Status: "Contacted time server 106.55.184.199:123 (ntp.tencent.com)."
|
Status: "Contacted time server 203.107.6.88:123 (ntp.aliyun.com)."
|
||||||
Tasks: 2 (limit: 2355)
|
Tasks: 2 (limit: 2189)
|
||||||
Memory: 1.4M
|
Memory: 1.6M (peak: 2.3M)
|
||||||
CPU: 37ms
|
CPU: 136ms
|
||||||
CGroup: /system.slice/systemd-timesyncd.service
|
CGroup: /system.slice/systemd-timesyncd.service
|
||||||
└─18829 /lib/systemd/systemd-timesyncd
|
└─6516 /usr/lib/systemd/systemd-timesyncd
|
||||||
|
|
||||||
Jun 26 16:48:00 DNST01 systemd[1]: Starting systemd-timesyncd.service - Network Time Synchronization...
|
Aug 10 11:24:43 TPL01 systemd[1]: Starting systemd-timesyncd.service - Network Time Synchronization...
|
||||||
Jun 26 16:48:00 DNST01 systemd[1]: Started systemd-timesyncd.service - Network Time Synchronization.
|
Aug 10 11:24:43 TPL01 systemd[1]: Started systemd-timesyncd.service - Network Time Synchronization.
|
||||||
Jun 26 16:48:00 DNST01 systemd-timesyncd[18829]: Contacted time server 106.55.184.199:123 (ntp.tencent.com).
|
Aug 10 11:24:43 TPL01 systemd-timesyncd[6516]: Contacted time server 203.107.6.88:123 (ntp.aliyun.com).
|
||||||
Jun 26 16:48:00 DNST01 systemd-timesyncd[18829]: Initial clock synchronization to Mon 2023-06-26 16:16:16.000000 CST.
|
Aug 10 11:24:43 TPL01 systemd-timesyncd[6516]: Initial clock synchronization to Mon 2026-08-10 11:24:43.569158 CST.
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.6.配置自动更新
|
### 1.8.配置自动更新
|
||||||
|
|
||||||
配置 Debian 云镜像的系统自动更新,与配置 PVE 系统自动更新方法基本一致,参阅 [03.PVE系统调整](./03.PVE系统调整.md) 。
|
配置 Debian 云镜像的系统自动更新,与配置 PVE 系统自动更新方法基本一致,参阅 [03.PVE系统调整](./03.PVE系统调整.md) 。
|
||||||
|
|
||||||
@@ -299,50 +298,39 @@ $ sudo systemctl status apt-daily-upgrade.timer
|
|||||||
## 配置自动更新策略
|
## 配置自动更新策略
|
||||||
$ sudo dpkg-reconfigure -plow unattended-upgrades
|
$ sudo dpkg-reconfigure -plow unattended-upgrades
|
||||||
|
|
||||||
## 选择 “是” (“YES”)
|
## 选择 “是”
|
||||||
|
<Yes>
|
||||||
#### 系统自动更新示例输出
|
|
||||||
Creating config file /etc/apt/apt.conf.d/20auto-upgrades with new version
|
|
||||||
```
|
```
|
||||||
|
|
||||||
接下来调整 apt 的 `20auto-upgrades` 配置文件。
|
开始调整 `20auto-upgrades` 配置文件。
|
||||||
|
|
||||||
```bash
|
|
||||||
## 编辑 20auto-upgrades 配置文件
|
|
||||||
$ sudo vim /etc/apt/apt.conf.d/20auto-upgrades
|
|
||||||
```
|
|
||||||
|
|
||||||
删除里面全部内容,添加以下配置项,并保存。
|
|
||||||
|
|
||||||
配置文件中,用来控制更新周期的参数为 `APT::Periodic::Unattended-Upgrade` ,`3` 表示更新周期为 `3` 天。
|
配置文件中,用来控制更新周期的参数为 `APT::Periodic::Unattended-Upgrade` ,`3` 表示更新周期为 `3` 天。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 系统更新周期配置项
|
## 编辑 20auto-upgrades 配置文件
|
||||||
|
$ sudo tee /etc/apt/apt.conf.d/20auto-upgrades >/dev/null <<'EOF'
|
||||||
APT::Periodic::Update-Package-Lists "1";
|
APT::Periodic::Update-Package-Lists "1";
|
||||||
APT::Periodic::Unattended-Upgrade "3";
|
APT::Periodic::Unattended-Upgrade "3";
|
||||||
APT::Periodic::AutocleanInterval "1";
|
APT::Periodic::AutocleanInterval "1";
|
||||||
APT::Periodic::CleanInterval "1";
|
APT::Periodic::CleanInterval "1";
|
||||||
|
EOF
|
||||||
```
|
```
|
||||||
|
|
||||||
进一步调整 apt 的 `50unattended-upgrades` 配置文件。
|
进一步调整 `50unattended-upgrades` 配置文件。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 编辑 50unattended-upgrades 配置文件
|
## 编辑 50unattended-upgrades 配置文件
|
||||||
$ sudo vim /etc/apt/apt.conf.d/50unattended-upgrades
|
$ sudo editor /etc/apt/apt.conf.d/50unattended-upgrades
|
||||||
```
|
```
|
||||||
|
|
||||||
根据 “注释” 中相关说明,调整配置文件。
|
因为该配置文件很长,完整的配置文件可查看 [debian_tpl_50unattended_upgrades.conf](./src/debian/debian_tpl_50unattended_upgrades.conf) 以便对比。
|
||||||
|
|
||||||
因为该配置文件很长,完整的配置文件可查看 [debian_50unattended_upgrades.conf](./src/debian_50unattended_upgrades.conf) 以便对比。
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 删除以下行前面的注释符 // ,代表启用
|
## 删除以下行前面的注释符 // ,代表启用
|
||||||
|
|
||||||
"origin=Debian,codename=${distro_codename}-updates";
|
"origin=Debian,codename=${distro_codename}-updates";
|
||||||
|
|
||||||
## 在配置文件末尾增加以下配置项,代表启用,并调整参数
|
## 在配置文件末尾增加以下内容,代表启用,并调整参数
|
||||||
|
|
||||||
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
|
Unattended-Upgrade::AutoFixInterruptedDpkg "true";
|
||||||
|
|
||||||
@@ -354,18 +342,18 @@ Unattended-Upgrade::Remove-Unused-Dependencies "true";
|
|||||||
|
|
||||||
Unattended-Upgrade::Automatic-Reboot "true";
|
Unattended-Upgrade::Automatic-Reboot "true";
|
||||||
|
|
||||||
Unattended-Upgrade::Automatic-Reboot-Time "04:30";
|
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
系统自动更新配置文件修改完成后,需要重设自动更新定时器,执行以下命令。
|
系统自动更新配置文件修改完成后,需调整自动更新定时器,执行以下命令。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 配置系统定时器
|
## 配置系统定时器
|
||||||
$ sudo systemctl edit apt-daily-upgrade.timer
|
$ sudo systemctl edit apt-daily-upgrade.timer
|
||||||
```
|
```
|
||||||
|
|
||||||
根据配置文件中的提示,在中间空白处填入以下配置项。
|
根据配置文件中的提示,在中间空白处填入以下内容。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 定时器配置项
|
## 定时器配置项
|
||||||
@@ -379,7 +367,7 @@ RandomizedDelaySec=0
|
|||||||
|
|
||||||
设置完成后,重启自动更新定时器并检查其状态,执行以下命令。
|
设置完成后,重启自动更新定时器并检查其状态,执行以下命令。
|
||||||
|
|
||||||
在输出结果中看到系统自动更新的触发时间为凌晨 `02:00` 则表示设置正确。
|
在输出结果中,看到系统自动更新的触发时间为 `02:00` 则表示设置正确。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 重启触发器
|
## 重启触发器
|
||||||
@@ -389,85 +377,59 @@ $ sudo systemctl restart apt-daily-upgrade.timer
|
|||||||
$ sudo systemctl status apt-daily-upgrade.timer
|
$ sudo systemctl status apt-daily-upgrade.timer
|
||||||
```
|
```
|
||||||
|
|
||||||
### 1.7.配置定时任务
|
### 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
|
```bash
|
||||||
## 查看系统定时任务
|
## 查看系统定时任务
|
||||||
$ sudo crontab -l
|
$ sudo cronnext -acl
|
||||||
|
|
||||||
## 编辑系统定时任务,编辑器选择 nano
|
|
||||||
$ sudo crontab -e
|
|
||||||
```
|
```
|
||||||
|
|
||||||
在配置文件末尾,增加以下配置项。
|
### 1.10.清理系统
|
||||||
|
|
||||||
```bash
|
|
||||||
## 定时任务配置项
|
|
||||||
|
|
||||||
0 6 8,24 * * /usr/sbin/reboot
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
### 1.8.配置 ZSH
|
|
||||||
|
|
||||||
`Zsh` 是比 `Bash` 好用的 `Shell` 程序,使用 `oh-my-zsh` 进行配置。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 返回 home 目录
|
|
||||||
$ cd
|
|
||||||
|
|
||||||
## 使用 curl 安装 oh-my-zsh
|
|
||||||
$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
|
|
||||||
|
|
||||||
## 或者使用 wget 安装 oh-my-zsh
|
|
||||||
$ sh -c "$(wget https://raw.githubusercontent.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.9.清理系统
|
|
||||||
|
|
||||||
Debian 模板虚拟机已经配置完成,在将其转换为模板前需要对系统进行清理。
|
Debian 模板虚拟机已经配置完成,在将其转换为模板前需要对系统进行清理。
|
||||||
|
|
||||||
逐条执行以下命令,注意命令中的空格。
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
## 清理系统软件包
|
## 清理系统软件包
|
||||||
$ sudo apt clean && sudo apt autoclean && sudo apt autoremove --purge
|
$ sudo bash -c 'apt clean && apt autoclean && apt autoremove --purge'
|
||||||
|
|
||||||
## 清理系统缓存
|
## 清理系统缓存
|
||||||
$ sudo rm -rvf /var/cache/apt/* /var/lib/apt/lists/* /tmp/*
|
$ 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 find /var/log/ -type f | xargs sudo rm -rvf
|
$ sudo bash -c 'find /var/log/ -type f -print -delete'
|
||||||
|
|
||||||
## 清理命令历史记录文件
|
## 清理命令历史记录文件并关闭系统
|
||||||
$ rm -rvf ~/.bash_history ~/.zsh_history
|
$ rm -rvf ~/.bash_history ~/.zsh_history ~/.zcompdump* && history -c && sudo shutdown now
|
||||||
|
|
||||||
## 清理命令历史
|
|
||||||
$ history -c
|
|
||||||
|
|
||||||
## 关闭系统
|
|
||||||
$ sudo shutdown now
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 2.虚拟机转为模板
|
## 2.虚拟机转为模板
|
||||||
|
|
||||||
在 Debian 模板虚拟机关机后,进入 PVE 的 WEB 管理界面。
|
在模板虚拟机关机后,进入 PVE 的 WEB 管理界面。
|
||||||
|
|
||||||
在左侧虚拟机列表中,鼠标 **右键单击** Debian 模板虚拟机,在弹出的菜单中选择 `转换成模板` 。
|
在左侧虚拟机列表中,鼠标 **右键单击** 模板虚拟机,在弹出的菜单中选择 `转换成模板` 。
|
||||||
|
|
||||||
需要说明的是,虚拟机 `转换成模板` 的操作是不可逆的。
|
需要说明的是,虚拟机 `转换成模板` 的操作具有不可逆性。
|
||||||
|
|
||||||
如果某些 Debian 系统的配置项有问题,只能在用该模板克隆出来的新虚拟机中进行修改,或者删除并重新制作模板。
|
若系统配置存在问题,仅能在该模板克隆的新虚拟机中修改,或删除现有模板并重新制作。
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
至此 Debian 虚拟机模板制作完成。
|
至此 Debian 虚拟机模板制作完成。
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,484 @@
|
|||||||
|
## 1.克隆虚拟机
|
||||||
|
|
||||||
|
在上一篇文章 [05.PVE制作虚拟机模板](./05.PVE制作虚拟机模板.md) 中,已经制作好了虚拟机模板。
|
||||||
|
|
||||||
|
接下来将基于该模板克隆新虚拟机,并通过安装 DNS 服务器软件,完成内网 DNS 服务器的搭建。
|
||||||
|
|
||||||
|
鼠标 **右键单击** 虚拟机模板,在弹出的菜单中选择 `克隆` 。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
在弹出的虚拟机克隆对话框中,根据实际情况及下方表格内容,修改虚拟机参数。
|
||||||
|
|
||||||
|
|参数|值|说明|
|
||||||
|
|--|--|--|
|
||||||
|
|目标节点|`node01`|当前 PVE 服务器节点|
|
||||||
|
|VM ID|`201`|可自定义,不能与现存虚拟机 `VM ID` 相同|
|
||||||
|
|名称|`DNS01`|可自定义,`Cloud-Init` 将使用该名称作为虚拟机 `hostname` |
|
||||||
|
|模式|`完整克隆`|选择虚拟机的克隆模式|
|
||||||
|
|目标存储|`local-lvm`|克隆出的虚拟机文件存储位置|
|
||||||
|
|
||||||
|
修改参数后,点击 `克隆` ,即可使用该模板克隆出新的虚拟机。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
|
## 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` 需要在新管理员下重新设置。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
当主路由配置了 IPv6 ULA 网段,内网 DNS 服务器 IPv6 ULA 地址规划如下:
|
||||||
|
|
||||||
|
- `fdac::2/64`
|
||||||
|
|
||||||
|
- `fdac::3/64`
|
||||||
|
|
||||||
|
此时需进一步调整新虚拟机的 `Cloud-Init` 参数,让该虚拟机使用指定的 IPv6 ULA 地址,参数如下。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 3.调整配置参数
|
||||||
|
|
||||||
|
在 [04.PVE创建模板虚拟机](./04.PVE创建模板虚拟机.md) 中提到过,新虚拟机需要修改配置参数才能自动启动。
|
||||||
|
|
||||||
|
进入左侧虚拟机 `选项` 页面,将虚拟机 `开机自启动` 参数设置为 `是` 。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
鼠标 **双击** `启动/关机顺序` 选项,可调整虚拟机的自动开机参数。
|
||||||
|
|
||||||
|
`启动/关机顺序` 为 `2` ,表示该虚拟机第 `2` 个启动,倒数第 `2` 个关机。
|
||||||
|
|
||||||
|
`启动延时` 为 `15` ,表示该虚拟机启动后,延迟 `15` 秒再启动下一个虚拟机。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 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
|
||||||
|
```
|
||||||
|
|
||||||
@@ -1,125 +0,0 @@
|
|||||||
## 1.克隆虚拟机
|
|
||||||
|
|
||||||
在上一篇文章 [05.PVE制作虚拟机模板](./05.PVE制作虚拟机模板.md) 中,已经制作好了虚拟机模板。
|
|
||||||
|
|
||||||
接下来将使用该模板克隆出新的虚拟机,并安装 Adguard Home 作为内网的 DNS 服务器。
|
|
||||||
|
|
||||||
鼠标 **右键单击** 虚拟机模板,在弹出的菜单中选择 `克隆` 。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
在弹出的虚拟机克隆对话框中,根据实际情况及下方表格内容,修改虚拟机参数。
|
|
||||||
|
|
||||||
|参数|值|说明|
|
|
||||||
|--|--|--|
|
|
||||||
|目标节点|`node01`|当前 PVE 服务器节点|
|
|
||||||
|VM ID|`201`|可自定义,不能与现存虚拟机 `VM ID` 相同|
|
|
||||||
|名称|`DNS01`|可自定义,`Cloud-Init` 将使用该名称作为虚拟机 `hostname` |
|
|
||||||
|模式|`完整克隆`|选择虚拟机的克隆模式|
|
|
||||||
|目标存储|`local-lvm`|克隆出的虚拟机文件存储位置|
|
|
||||||
|
|
||||||
修改参数后,点击 `克隆` ,即可使用该模板克隆出新的虚拟机。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
|
|
||||||
## 2.调整 Cloud-Init
|
|
||||||
|
|
||||||
克隆出来的虚拟机的 `Cloud-Init` 参数默认与模板完全一致。
|
|
||||||
|
|
||||||
根据 **内部网络地址** 规划,内网 DNS 服务器 IP 地址分别为:
|
|
||||||
|
|
||||||
- `172.16.1.2/24 (fdac::2/64)`
|
|
||||||
|
|
||||||
- `172.16.1.3/24 (fdac::3/64)`
|
|
||||||
|
|
||||||
因此需要调整新虚拟机的 `Cloud-Init` 参数。
|
|
||||||
|
|
||||||
- `IP配置` 中的 IPv4 地址参数为 `172.16.1.2/24` ,网关保持 `172.16.1.1` 不变。
|
|
||||||
|
|
||||||
- `IP配置` 中的 IPv6 地址参数为 `fdac::2/64` ,网关保持为空。
|
|
||||||
|
|
||||||
需要注意的是,如果修改了 `用户` 参数,相当于新建了一个系统管理员,之前设置的 `oh-my-zsh` 需要在新管理员下重新设置。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
当主路由配置了 ULA IPv6 网段,且指定了内网 DNS 服务器的 ULA IPv6 地址时,参数如下。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 3.调整配置参数
|
|
||||||
|
|
||||||
在 [04.PVE创建模板虚拟机](./04.PVE创建模板虚拟机.md) 中提到过,新虚拟机需要修改配置参数才能自动启动。
|
|
||||||
|
|
||||||
进入左侧虚拟机 `选项` 页面,将虚拟机 `开机自启动` 参数设置为 `是` 。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
鼠标 **双击** `启动/关机顺序` 选项,可调整虚拟机的自动开机参数。
|
|
||||||
|
|
||||||
`启动/关机顺序` 为 `2` ,表示该虚拟机第 `2` 个启动,倒数第 `2` 个关机。
|
|
||||||
|
|
||||||
`启动延时` 为 `10` ,表示该虚拟机在 PVE 启动后,延迟 `10` 秒后自动启动。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 4.安装 Adguard Home
|
|
||||||
|
|
||||||
设置完成后,将该虚拟机开机,并使用 SSH 工具登录。
|
|
||||||
|
|
||||||
Adguard Home 将采用 `snap` 形式安装,逐行执行以下命令。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 安装 snap
|
|
||||||
$ sudo apt install snapd
|
|
||||||
|
|
||||||
## 安装 Adguard Home
|
|
||||||
$ sudo snap install adguard-home
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4.1. 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
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4.2. Snap 定时任务
|
|
||||||
|
|
||||||
本步骤为可选操作,主要设置定时重启 Snap 服务。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 查看系统定时任务
|
|
||||||
$ sudo crontab -l
|
|
||||||
|
|
||||||
## 编辑系统定时任务,编辑器选择 nano
|
|
||||||
$ sudo crontab -e
|
|
||||||
```
|
|
||||||
|
|
||||||
在配置文件末尾,增加以下配置项。
|
|
||||||
|
|
||||||
```bash
|
|
||||||
## 定时任务配置项
|
|
||||||
|
|
||||||
0 5 * * * /usr/bin/snap restart adguard-home
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## 5.配置 Adguard Home
|
|
||||||
|
|
||||||
关于 Adguard Home 配置相关内容,请参阅 [Adguard Home 折腾手记](https://gitee.com/callmer/agh_toss_notes) 。
|
|
||||||
|
|
||||||
至此,新虚拟机已配置完成,可作为内网 DNS 服务器使用。
|
|
||||||
|
|
||||||
@@ -0,0 +1,759 @@
|
|||||||
|
## 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 install -D -m 0644 /dev/stdin /etc/xdg/nvim/sysinit.vim <<'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 服务器已配置完成。
|
||||||
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
## 1.添加备份作业
|
|
||||||
|
|
||||||
在所有虚拟机创建并配置完成后,可以使用 PVE 自带的备份功能周期性的将虚拟机备份。
|
|
||||||
|
|
||||||
点击 PVE 的 `数据中心` ,在右侧菜单中选择 `备份` 功能。
|
|
||||||
|
|
||||||
点击顶部 `添加` 按钮,添加一个 `备份作业` 。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 1.1.常规选项
|
|
||||||
|
|
||||||
在弹出的 `创建:备份作业` 对话框中,勾选底部 `高级` 选项,`备份作业` 的各项参数如下。
|
|
||||||
|
|
||||||
|参数|值|说明|
|
|
||||||
|--|--|--|
|
|
||||||
|节点|`node01`|选择当前 PVE 服务器节点|
|
|
||||||
|存储|`local`|选择存放备份文件的路径|
|
|
||||||
|计划|`*-01,16 03:30`|`备份作业` 执行的时间计划|
|
|
||||||
|选择模式|`包括选中的VMs`|执行备份的虚拟机对象|
|
|
||||||
|发送邮箱至|`your_email@domain.com`|`备份作业` 邮件的收件人邮箱|
|
|
||||||
|电子邮件|`始终通知`|何时发送 `备份作业` 邮件提醒|
|
|
||||||
|压缩|`ZSTD`|选择备份文件的压缩算法|
|
|
||||||
|模式|`停止`|选择备份虚拟机的方式,推荐使用 `停止` |
|
|
||||||
|启用|**勾选**|表示该 `备份作业` 为启用状态|
|
|
||||||
|作业评论|`Backup Your Server :)`|`备份作业` 的备注信息,使用英文输入|
|
|
||||||
|重复错过|**勾选**|表示当意外错过备份执行时间后,将重试备份|
|
|
||||||
|
|
||||||
**额外说明:**
|
|
||||||
|
|
||||||
1. 计划中的 `*-01,16 03:30` 表示每个月的 1、16 日凌晨 03:30 进行备份。
|
|
||||||
|
|
||||||
2. `备份作业` 在正确配置收件人邮箱之前,并不能发出邮件。
|
|
||||||
|
|
||||||
3. `停止` 模式表示备份时会将虚拟机置于关机状态,备份完成后再恢复至之前的状态。
|
|
||||||
|
|
||||||
4. 虚拟机列表中,勾选 `备份作业` 需要备份的虚拟机(可多选)。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 1.2.保留选项
|
|
||||||
|
|
||||||
该选项将控制备份文件的保留个数,选择保留最近 `3` 份备份文件。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### 1.3.日志模板
|
|
||||||
|
|
||||||
该选项将按照设置的内容,自动重命名备份文件。
|
|
||||||
|
|
||||||
在 `备份日志` 右侧文本框中输入 `{{vmid}}_{{guestname}}_Auto_Backup` 。
|
|
||||||
|
|
||||||
点击 `创建` 按钮,`备份作业` 创建完成。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
## 2.调度模拟器
|
|
||||||
|
|
||||||
在创建完成 `备份作业` 后,可以使用 `调度模拟器` 来模拟 `备份作业` 的执行时间。
|
|
||||||
|
|
||||||
鼠标 **单击** 选中一个 `备份作业` ,点击右上角的 `调度模拟器` 。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
`计划` 处将显示 `备份作业` 的执行时间参数,点击 `模拟` 按钮,在右侧将显示模拟的时间结果。
|
|
||||||
|
|
||||||
确认 `备份作业` 的执行时间周期是否符合预期。
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
至此,虚拟机的自动备份已配置完成。
|
|
||||||
|
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
## 1.添加备份作业
|
||||||
|
|
||||||
|
在所有虚拟机创建并配置完成后,可以使用 PVE 自带的备份功能周期性的将虚拟机备份。
|
||||||
|
|
||||||
|
点击 PVE 的 `数据中心` ,在右侧菜单中选择 `备份` 功能,并点击顶部 `添加` 。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 1.1.常规
|
||||||
|
|
||||||
|
在弹出的 `创建:备份作业` 对话框中,勾选底部 `高级` 选项,`备份作业` 的各项参数如下。
|
||||||
|
|
||||||
|
|参数|值|说明|
|
||||||
|
|--|--|--|
|
||||||
|
|节点|`node01`|选择当前 PVE 服务器节点|
|
||||||
|
|存储|`local`|选择存放备份文件的路径|
|
||||||
|
|计划|`*-01,16 03:30`|`备份作业` 执行的时间计划|
|
||||||
|
|选择模式|`包括选中的虚拟机`|执行备份的虚拟机对象|
|
||||||
|
|压缩|`ZSTD`|选择备份文件的压缩算法|
|
||||||
|
|模式|`停止`|选择备份虚拟机的方式,推荐使用 `停止` |
|
||||||
|
|启用|**勾选**|表示该 `备份作业` 为启用状态|
|
||||||
|
|作业评论|`Backup Your Server :)`|`备份作业` 的备注信息,使用英文输入|
|
||||||
|
|
||||||
|
**额外说明:**
|
||||||
|
- 计划中的 `*-01,16 03:30` 表示每月 `1` 、`16` 号的 `03:30` 执行备份任务
|
||||||
|
- `备份作业` 在正确配置收件人邮箱之前,并不能发出邮件
|
||||||
|
- `停止` 模式表示备份时会将虚拟机置于关机状态,备份完成后再恢复至之前的状态
|
||||||
|
- 虚拟机列表中,勾选 `备份作业` 需要备份的虚拟机(可多选)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 1.2.通知
|
||||||
|
|
||||||
|
|参数|值|说明|
|
||||||
|
|--|--|--|
|
||||||
|
|通知模式|`使用全局通知设置`|执行备份时的通知模式,保持默认即可|
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 1.3.保留
|
||||||
|
|
||||||
|
该选项将控制备份文件的保留个数,选择保留最近 `3` 份备份文件。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 1.4.备注模板
|
||||||
|
|
||||||
|
该选项将按照设置的内容,自动重命名备份文件。
|
||||||
|
|
||||||
|
在 `备份日志` 右侧文本框中输入 `{{vmid}}-{{guestname}}-Autobackup` 。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
### 1.5.高级
|
||||||
|
|
||||||
|
该选项提供 `备份作业` 执行时的高级可调参数,仅需勾选 `重复错过` 选项即可。
|
||||||
|
|
||||||
|
点击 `创建` ,此 `备份作业` 即完成设置与创建。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## 2.调度模拟器
|
||||||
|
|
||||||
|
在创建完成 `备份作业` 后,可以使用 `调度模拟器` 来模拟 `备份作业` 的执行时间。
|
||||||
|
|
||||||
|
鼠标 **单击** 选中一个 `备份作业` ,点击右上角的 `调度模拟器` 。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
`计划` 处将显示 `备份作业` 的执行时间参数,点击 `模拟` ,在右侧将显示模拟的时间结果。
|
||||||
|
|
||||||
|
确认 `备份作业` 的执行时间周期是否符合预期。
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
至此,虚拟机的自动备份已配置完成。
|
||||||
|
|
||||||
@@ -3,13 +3,7 @@
|
|||||||
## 介绍
|
## 介绍
|
||||||
PVE 虚拟化平台的安装以及折腾手记。
|
PVE 虚拟化平台的安装以及折腾手记。
|
||||||
|
|
||||||
- PVE ISO 版本:8.0-2 (更新时间: 2023-06-22)
|
- PVE ISO 版本:9.1-1 (更新时间: 2025-11-19)
|
||||||
|
|
||||||
- 演示机:
|
|
||||||
- CPU:英特尔奔腾 Silver N6005 处理器
|
|
||||||
- 内存:16 GB
|
|
||||||
- 网卡:英特尔以太网控制器 I226-V
|
|
||||||
- 硬盘:500 GB NVMe 固态硬盘
|
|
||||||
|
|
||||||
- PVE 网络:
|
- PVE 网络:
|
||||||
- IPv4 网络
|
- IPv4 网络
|
||||||
@@ -18,23 +12,23 @@ PVE 虚拟化平台的安装以及折腾手记。
|
|||||||
- 网关:`172.16.1.1`
|
- 网关:`172.16.1.1`
|
||||||
- DNS:`172.16.1.1`
|
- DNS:`172.16.1.1`
|
||||||
- IPv6 网络
|
- IPv6 网络
|
||||||
- 前缀:`fdac::/64`
|
- 首选 `SLAAC` 自动配置
|
||||||
- IP 地址:`fdac::fe`
|
- IPv6 ULA 网络使用 `fdac::/64` 作为演示
|
||||||
- DNS:`fdac::1`
|
|
||||||
|
|
||||||
### 系列章节
|
### 系列章节
|
||||||
|
|
||||||
0. [硬件 BIOS 配置](./00.硬件BIOS配置.md)
|
0. [硬件 BIOS 配置](./00.硬件BIOS配置.md)
|
||||||
1. [PVE 系统安装](./01.PVE系统安装.md)
|
1. [PVE 系统安装](./01.PVE系统安装.md)
|
||||||
2. [PVE 初始化配置](./02.PVE初始化配置.md)
|
2. [PVE 初始化配置](./02.PVE初始化配置.md)
|
||||||
3. [PVE 系统调整](./03.PVE系统调整.md)
|
3. [PVE 系统调整](./03.PVE系统调整.md)
|
||||||
4. [PVE 创建模板虚拟机](./04.PVE创建模板虚拟机.md)
|
4. [PVE 创建模板虚拟机](./04.PVE创建模板虚拟机.md)
|
||||||
5. [PVE 制作虚拟机模板](./05.PVE制作虚拟机模板.md)
|
5. [PVE 制作虚拟机模板](./05.PVE制作虚拟机模板.md)
|
||||||
6. [PVE 用模板克隆虚拟机](./06.PVE用模板克隆虚拟机.md)
|
6. [PVE 制作 DNS 服务器](./06.PVE制作DNS服务器.md)
|
||||||
7. [PVE 自动备份虚拟机](./07.PVE自动备份虚拟机.md)
|
7. [PVE 制作 TS 服务器](./07.PVE制作TS服务器.md)
|
||||||
|
8. [PVE 自动备份虚拟机](./08.PVE自动备份虚拟机.md)
|
||||||
|
|
||||||
### 文章说明
|
### 文章说明
|
||||||
|
|
||||||
1. 本系列文章涉及的部分参数需要手动调整来符合切实使用需求。
|
1. 本系列文章涉及的部分参数需要手动调整来符合切实使用需求。
|
||||||
2. 随着 PVE 系统的迭代更新,截图中的内容和实际页面显示可能存在差异。
|
2. 随着 PVE 系统的迭代更新,截图中的内容和实际页面显示可能存在差异。
|
||||||
3. 如需引用,请注明本文出处。
|
3. 如需引用,请注明本文出处。
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 205 KiB After Width: | Height: | Size: 227 KiB |
|
Before Width: | Height: | Size: 272 KiB |
|
After Width: | Height: | Size: 544 KiB |
|
Before Width: | Height: | Size: 144 KiB After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 283 KiB |
|
After Width: | Height: | Size: 594 KiB |
|
Before Width: | Height: | Size: 339 KiB |
|
After Width: | Height: | Size: 828 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 279 KiB |
|
After Width: | Height: | Size: 588 KiB |
|
Before Width: | Height: | Size: 269 KiB |
|
After Width: | Height: | Size: 508 KiB |
|
Before Width: | Height: | Size: 247 KiB |
|
After Width: | Height: | Size: 463 KiB |
|
Before Width: | Height: | Size: 216 KiB |
|
After Width: | Height: | Size: 373 KiB |
|
Before Width: | Height: | Size: 274 KiB |
|
After Width: | Height: | Size: 580 KiB |
|
Before Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 204 KiB |
|
After Width: | Height: | Size: 224 KiB |
|
Before Width: | Height: | Size: 169 KiB |
|
After Width: | Height: | Size: 586 KiB |
|
Before Width: | Height: | Size: 599 KiB |
|
After Width: | Height: | Size: 160 KiB |
|
Before Width: | Height: | Size: 263 KiB |
|
After Width: | Height: | Size: 470 KiB |
|
Before Width: | Height: | Size: 413 KiB After Width: | Height: | Size: 375 KiB |
|
Before Width: | Height: | Size: 239 KiB After Width: | Height: | Size: 403 KiB |
|
Before Width: | Height: | Size: 221 KiB After Width: | Height: | Size: 404 KiB |
|
After Width: | Height: | Size: 199 KiB |
|
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 119 KiB |
|
After Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 132 KiB After Width: | Height: | Size: 244 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 100 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 83 KiB |
|
Before Width: | Height: | Size: 141 KiB After Width: | Height: | Size: 230 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 81 KiB |
|
Before Width: | Height: | Size: 118 KiB |
|
After Width: | Height: | Size: 177 KiB |
|
Before Width: | Height: | Size: 165 KiB After Width: | Height: | Size: 248 KiB |
|
After Width: | Height: | Size: 244 KiB |
|
After Width: | Height: | Size: 495 KiB |
|
Before Width: | Height: | Size: 189 KiB |
|
After Width: | Height: | Size: 664 KiB |
|
Before Width: | Height: | Size: 322 KiB |
|
Before Width: | Height: | Size: 117 KiB |
|
After Width: | Height: | Size: 197 KiB |
|
Before Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 177 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 81 KiB After Width: | Height: | Size: 125 KiB |
|
Before Width: | Height: | Size: 100 KiB After Width: | Height: | Size: 158 KiB |
|
Before Width: | Height: | Size: 107 KiB After Width: | Height: | Size: 168 KiB |
|
Before Width: | Height: | Size: 128 KiB |
|
After Width: | Height: | Size: 252 KiB |
|
Before Width: | Height: | Size: 132 KiB |
|
After Width: | Height: | Size: 205 KiB |
|
Before Width: | Height: | Size: 173 KiB |
|
After Width: | Height: | Size: 315 KiB |
|
Before Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 232 KiB |
|
Before Width: | Height: | Size: 72 KiB |
|
After Width: | Height: | Size: 170 KiB |
|
Before Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 283 KiB |
|
Before Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 70 KiB |
|
Before Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 114 KiB |
|
After Width: | Height: | Size: 262 KiB |
|
After Width: | Height: | Size: 174 KiB |
|
Before Width: | Height: | Size: 89 KiB |
|
After Width: | Height: | Size: 140 KiB |
|
Before Width: | Height: | Size: 77 KiB |
|
After Width: | Height: | Size: 91 KiB |
|
Before Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 143 KiB |
|
Before Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 124 KiB |
|
After Width: | Height: | Size: 188 KiB |
|
Before Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 98 KiB |
|
After Width: | Height: | Size: 215 KiB |
|
After Width: | Height: | Size: 145 KiB |
|
Before Width: | Height: | Size: 127 KiB |
|
After Width: | Height: | Size: 224 KiB |