## 1.更换软件源

在上一篇文章 [01.PVE系统安装](./01.PVE系统安装.md) 中，从刚装好的 PVE 系统中获取了系统的一些参数。  

![PVE系统信息](img/p01/pve_sys_info.jpeg)

此处显示出 PVE 底层使用的是 Debian 的系统，代号为 `trixie` 。  

为了后续能对 PVE 系统进行升级，需要更换其镜像仓库，也就是大家熟知的软件源。  

当前处于 “离线” 安装状态，更换软件源后，因无网络连接，无法执行系统更新操作。  

### 1.1.系统软件源

使用终端工具登录到 PVE 服务器，查看现有软件源配置文件。  

```bash
## 查看系统默认软件源
$ cat /etc/apt/sources.list.d/debian.sources

#### 系统默认软件源示例输出
Types: deb
URIs: http://deb.debian.org/debian/
Suites: trixie trixie-updates
Components: main contrib non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: http://security.debian.org/debian-security/
Suites: trixie-security
Components: main contrib non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
```

这里将使用 [中国科技大（USTC）](http://mirrors.ustc.edu.cn/help/proxmox.html) 的镜像仓库进行替换，使用如下命令。  

```bash
## 配置 PVE 系统默认软件源脚本
$ cat > /etc/apt/sources.list.d/debian.sources <<EOF
Types: deb
URIs: https://mirrors.ustc.edu.cn/debian
Suites: trixie trixie-updates
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: https://mirrors.ustc.edu.cn/debian-security
Suites: trixie-security
Components: main contrib non-free non-free-firmware
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

EOF

```

### 1.2. PVE 软件源

默认情况下，PVE 额外启用了 2 个官方源，且为订阅收费制，因此需要替换为免订阅源。  

首先创建 PVE 免订阅软件源，执行以下命令。  

```bash
## 配置 PVE 系统免订阅软件源脚本
$ cat > /etc/apt/sources.list.d/pve-no-subscription.sources <<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
  CEPH_CODENAME=`ceph -v | grep ceph | awk '{print $(NF-1)}'`
  source /etc/os-release
  cat > /etc/apt/sources.list.d/pve-ceph-no-subscription.sources <<EOF
Types: deb
URIs: https://mirrors.ustc.edu.cn/proxmox/debian/ceph-$CEPH_CODENAME
Suites: $VERSION_CODENAME
Components: no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg

EOF
fi

```

最后，删除 PVE 官方付费软件源，执行以下命令。  

**注意：rm 为高风险命令，请正确使用，请勿手抖，请勿手抖。**

```bash
## 删除付费软件源
$ rm -rvf /etc/apt/sources.list.d/pve-enterprise.sources /etc/apt/sources.list.d/ceph.sources
```

创建完成后对其进行检查。  

```bash
## 检查 PVE 免费源
$ cat /etc/apt/sources.list.d/*
```

如果输出结果中均为 USTC 的镜像地址，则表示命令已经正确执行。  

### 1.3. PVE CT 源

如果需要使用 Proxmox 网页端下载 CT Templates ，可替换 CT Templates 源。  

由于该功能暂时未被使用，因此本文只做记录。  

```bash
## 替换 CT Templates 链接
$ sed -i.bak 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm

## 重启 PVE API 守护进程
$ systemctl restart pvedaemon.service

## 更新 CT Templates 列表
$ pveam update
```

### 1.4.镜像同步

更换完成系统源之后，需要同步系统源数据。  

因 “离线” 安装时无法同步系统源，此步骤可待 PVE 成功连接 Internet 后再执行。  

```bash
## 清理软件包
$ apt clean && apt autoclean && apt autoremove --purge

## 同步软件源
$ apt update

## 更新系统
$ apt full-upgrade
```

## 2.安装必要软件

安装 `iperf3` 后，系统将询问是否将其作为系统服务开机自启，选择 `no` 即可。  

其中 `unattended-upgrades` 为系统自动更新服务，后续会对其进行配置。  

`linux-cpupower` 为 CPU 调度器的配置工具，后续会对 CPU 调度器进行调整。  

```bash
## 同步镜像仓库
$ apt update

## 安装系统软件
$ apt install btop lm-sensors curl tmux neovim unzip unattended-upgrades powermgmt-base sshguard knot-dnsutils

## 安装 CPU 调度调整工具
$ apt install linux-cpupower

## 更新 PCI 数据库
$ update-pciids

## 安装 Open vSwitch（可选）
$ apt install openvswitch-switch

## 安装网络检测工具（可选）
$ apt install iftop iperf3 iperf

## 根据 CPU 厂商安装 CPU 微码工具（可选，现已默认安装）
$ apt install intel-microcode (amd64-microcode)

## 刷新 systemd 日志分类索引
$ journalctl --update-catalog
```

## 3.配置 PVE 网络

设置电脑的 IPv4 地址为静态地址，电脑 IPv4 地址段需要与 PVE 的地址段保持一致。  

用网线连接电脑网口与 PVE 管理网口（此时应为编号最小的第一个网口）。  

访问 PVE 的 Web 管理界面，根据 **网络设备** 规划调整其网络配置。

|系统|作用|说明|
|--|--|--|
|RouterOS|主路由|PPPoE 拨号上网|
|Debian|DNS 服务器|内网 DNS 服务器|
|Debian|TS 服务器|内网 TS 组网服务器|
|OpenWrt|旁路网关|内网插件服务|

根据 **内部网络地址** 规划，PVE IP 地址规划如下。  

|地址类型|作用|值|说明|
|--|--|--|--|
|IPv4|管理地址|`172.16.1.254`|PVE IPv4 地址|
||网关地址|`172.16.1.1`|PVE IPv4 网关|
||DNS 地址|`172.16.1.1`|PVE IPv4 DNS 服务器|
|IPv6|管理地址|`fdac::fe`|PVE IPv6 地址（可选）|
||网关地址|`-`|PVE IPv6 网关将使用 `SLAAC` 自动配置|
||DNS 地址|`fdac::1`|PVE IPv6 DNS 服务器（可选）|

![PVE网络规划](img/p02/pve_net_schematization.jpeg)

初次登录 PVE 的 WEB 管理后台，打开网络管理页面，此时只有一个 `vmbr0` 。  

该 `vmbr0` 与列表中的第一个物理网口绑定，且在 `CIDR` 和 `网关` 处有 IP 地址参数，说明 `vmbr0` 为当前管理网口。  

接下来将修改 PVE 网络配置，在修改完成前， **请不要点击 “应用配置”** ，否则会导致 PVE 无法访问。  

![PVE默认网桥](img/p02/pve_net_default.jpeg)

### 3.1.修改 vmbr0

鼠标双击 `vmbr0` ，进入网桥配置界面。  

删除 `IPv4/CIDR` 和 `网关` 信息，确保 `自动启动` 为勾选状态。  

在备注处填写 `wan` ，然后点击 `OK` 。  

![修改vmbr0](img/p02/pve_modify_vmbr0.jpeg)

### 3.2.创建网桥

点击左上角的 `创建` 选项，选择 `Linux Bridge` 。  

![创建物理接口网桥](img/p02/pve_br_create.jpeg)

桥接端口填写顺序的第二个网卡名称，演示中为 `enp3s0` ，在备注处填写 `lan1` ，并点击 `创建` 。  

然后，依次创建所有物理接口的内部网桥，直到最后一个网桥，即 PVE 的管理网口。  

![指定物理接口](img/p02/pve_br_phyport.jpeg)

### 3.3.创建管理网口

在创建最后一个物理网口的网桥时，需配置 `IPv4` 地址和对应的 `网关` 参数。  

![最后的物理接口网桥](img/p02/pve_br_last_phyport.jpeg)

额外说明：  

1. 如非特殊需求，通常情况下 PVE 系统无需使用 IPv6 网络。  

2. 当主路由未配置 IPv6 ULA 网段时，无需填写 `IPv6/CIDR` 参数（如本文演示地址 `fdac::fe/64` ）。  

3. 多数情况下无需填写 IPv6 `网关` 参数，其网关将通过 IPv6 LLA （链路本地地址）自动配置。  

![最后的物理接口网桥](img/p02/pve_br_last_phyport_ipv6.jpeg)

所有物理网口的 PVE 网桥创建完成后，点击 `应用配置` ，页面会断开连接。  

此时，只需将电脑网线从 PVE 物理机的第一个网口拔出，并插入最后一个网口即可恢复。  

若仍无法访问 PVE，可尝试通过网线拔插的方式，逐一测试各 PVE 网口的访问连通性。  

### 3.4.创建内部网桥

纯内部网桥在无其他系统提供额外桥接时，无法直接通过物理网口访问。  

其主要作用是借助其他系统创建的虚拟网桥，为内部虚拟机提供统一的网络访问接口。  

创建纯内部网桥的方法，与创建物理网口网桥的方法基本一致，唯一区别是 `桥接端口` 参数为 **空** 即可。  

![纯内部网桥](img/p02/pve_br_nophyport.jpeg)

在 PVE 内部网络设置完成后，将如图所示。  

![PVE网桥最终设置显示](img/p02/pve_net_preview.jpeg)

## 4.配置 PVE DNS

在 PVE 系统的安装过程中，设置了 DNS 的 IPv4 地址 `172.16.1.1` ，但并未设置 DNS 的 IPv6 地址。  

在 PVE 的 DNS 设置页面，手动添加 DNS IPv6 地址，即主路由 LAN 口 IPv6 ULA 地址。  

同样，若 PVE 不使用 IPv6 网络或主路由未配置 IPv6 ULA 网段，本步骤可跳过。  

![PVE添加IPv6DNS](img/p02/pve_add_ipv6_dns.jpeg)

至此，PVE 的初始化配置完成。  

