[Linux軟路由第二彈] - 1.創(chuàng)建Ubuntu服務(wù)器

0.背景
距離上一次使用 Debian Server 構(gòu)建路由器的時(shí)間已經(jīng)過去了近半年時(shí)間。
隨著家庭寬帶步了入千兆互聯(lián)時(shí)代, IPv6 也得到了進(jìn)一步的普及,而上一版 Linux Router 的折騰方式已不能滿足當(dāng)前的使用需求。
因此決定重新折騰一個(gè)支持 IPv6 的 Linux Router,并修復(fù)上版中存在的設(shè)置缺陷。
根據(jù)這段時(shí)間對(duì) Linux 的進(jìn)一步學(xué)習(xí),結(jié)合我在某云廠工作期間積累的知識(shí),本次 Linux Router 構(gòu)建過程中涉及的核心組件包括:
網(wǎng)口以及網(wǎng)橋設(shè)置:
systemd-networkd
PPPoE 撥號(hào):
pppoe
?、?systemd-networkd
DHCP 以及 DNS :
dnsmasq
防火墻:
nftables
系統(tǒng)自動(dòng)更新:
unattended-upgrades
由于使用了?systemd?
,因此本系列文章主要適用于支持?systemd
?的 Linux 發(fā)行版。
當(dāng)然,如果使用了其他方法來設(shè)置網(wǎng)口、網(wǎng)橋以及 PPPoE 自動(dòng)撥號(hào),即可繞開?systemd
?的約束。原本計(jì)劃使用?dhcpcd
?來完成服務(wù)器 IPv6 配置,但在實(shí)際測(cè)試中發(fā)現(xiàn),僅使用?systemd
?即可完成 IPv6 配置。
由于受到?systemd
?版本限制,各 Linux 發(fā)行版要求如下:
Debian 12(預(yù)計(jì)2023年中發(fā)布)
Ubuntu Server 22.10(已發(fā)布)
Alpine Linux(需要繞開?
systemd?
)Archlinux(資深玩家首選)
這次選擇 Ubuntu 22.10 的 Server 版本作為設(shè)置對(duì)象,一邊體驗(yàn)一下 Ubuntu,一邊等待 Debian 系統(tǒng)的大版本升級(jí)。
1.前期準(zhǔn)備
Ubuntu Server 既可以直接安裝在物理設(shè)備上,也能在虛擬化環(huán)境中良好運(yùn)行,本系列文章主要在 PVE 環(huán)境下進(jìn)行安裝設(shè)置。
PVE 的安裝與設(shè)置方法參考我的系列文章《Proxmox VE 折騰手記》。
?Gitee 更新地址:https://gitee.com/callmer/pve_toss_notes
需要一臺(tái)已連接外網(wǎng)的路由設(shè)備,用于給 Ubuntu Server 在初始化階段提供網(wǎng)絡(luò)。
訪問 Ubuntu 的發(fā)布頁面?Ubuntu Release?下載 Ubuntu 22.10 Server 版安裝 ISO 文件,并一同下載 ISO 的校驗(yàn)文件。

2.創(chuàng)建 Linux 虛擬機(jī)
登錄 PVE 管理后臺(tái),將 Ubuntu Server 的 ISO 文件上傳到 PVE 服務(wù)器。
進(jìn)入新建虛擬機(jī)流程,并打開?高級(jí)選項(xiàng) 。
2.1.常規(guī)
節(jié)點(diǎn)即本機(jī),VM ID
?和?名稱
?可自定義。
啟動(dòng)/關(guān)機(jī)順序
?以及?啟動(dòng)延時(shí)
?相關(guān)參數(shù)可以根據(jù)實(shí)際需要進(jìn)行調(diào)整。
關(guān)機(jī)超時(shí)
?參數(shù)一般無需填寫,此處設(shè)為?30
?僅供測(cè)試使用。

2.2.操作系統(tǒng)
使用的光盤鏡像文件選擇剛才上傳的 Ubuntu Server ISO 文件。
操作系統(tǒng)類別選擇?Linux
?、內(nèi)核版本?5.x - 2.6 Kernel
?即可。

2.3.系統(tǒng)
系統(tǒng)部分需要修改幾項(xiàng)參數(shù)。
顯卡選擇?默認(rèn)
?,SCSI 控制器選擇?VirtIO SCSI single
?。
機(jī)型可選擇?q35
?,對(duì)?PCIE設(shè)備
?的直通會(huì)有更好的支持。
后續(xù)將會(huì)在 Ubuntu Server 系統(tǒng)中安裝?Qemu Agent
?,因此建議勾選?Qemu代理
?選項(xiàng)。
BIOS 可選?默認(rèn)(SeaBIOS)
?,也可選?OVMF(UEFI)
?,可根據(jù)實(shí)際需求進(jìn)行調(diào)整。

2.4.磁盤
根據(jù) PVE 服務(wù)器的硬盤資源情況酌情分配 Ubuntu Server 的硬盤容量。
建議硬盤分配容量不要低于 20 GiB 。
勾選?IO thread
?選項(xiàng),與當(dāng)前的 SCSI 控制器搭配使用。

2.5.CPU
根據(jù) PVE 服務(wù)器的 CPU 資源情況酌情分配 Ubuntu Server 的 CPU 資源。
CPU類別選擇?host
?,核心數(shù)建議不要少于?2
?,具體數(shù)值需要根據(jù) CPU 性能以及設(shè)備 CPU 物理核心數(shù)來綜合考慮。
J4125 CPU 在分配?2
?核心的情況下,可基本滿足千兆外網(wǎng)的使用需求,以供參考。
由于測(cè)試環(huán)境中虛擬機(jī)較多,CPU 的超分(over-commit)比較嚴(yán)重,因此我加大了本虛擬機(jī)的?CPU權(quán)重
?,演示值為?2048
?,讓本虛擬機(jī)可獲得相較于其他虛擬機(jī)更多的 CPU 時(shí)間。
如果物理設(shè)備有多路 CPU 則推薦啟用?NUMA
?。

2.6.內(nèi)存
內(nèi)存一般?2G
?足夠使用,關(guān)閉?Ballooning設(shè)備
?選項(xiàng)。

2.7.網(wǎng)絡(luò)
需要注意,此頁設(shè)置只能添加一個(gè)網(wǎng)絡(luò)設(shè)備,而網(wǎng)絡(luò)設(shè)備的添加順序?qū)⒑?Ubuntu Server 內(nèi)部顯示的網(wǎng)卡順序一致。
因此我們此處先僅添加 WAN 對(duì)應(yīng)的網(wǎng)口(此處為?vmbr0
?),模型選擇?VirtIO
?,并取消勾選防火墻選項(xiàng)。
對(duì)于使用硬件直通的小伙伴,可以根據(jù)實(shí)際情況來修改此處網(wǎng)絡(luò)設(shè)備選項(xiàng)。
推薦在?Multiqueue
?處根據(jù)前面設(shè)置的 CPU 數(shù)量進(jìn)行網(wǎng)卡多隊(duì)列設(shè)置,設(shè)置比例為 1:1 。即有 n 個(gè) CPU 核心,此處多隊(duì)列也設(shè)置為 n 。

2.8.確認(rèn)
接下來查看設(shè)置總覽,確認(rèn)無誤,即可點(diǎn)擊 “完成” 。

3.調(diào)整虛擬機(jī)硬件參數(shù)
此時(shí),查看虛擬機(jī)詳情頁,可以看到我們剛才創(chuàng)建的虛擬機(jī)。

根據(jù)實(shí)際情況,開始添加需要的網(wǎng)絡(luò)設(shè)備:

所有網(wǎng)絡(luò)設(shè)備去掉防火墻,并增加網(wǎng)卡多隊(duì)列選項(xiàng)。示例如下:

注意:
經(jīng)過實(shí)際測(cè)試,如果此處添加了?直通網(wǎng)卡?,在實(shí)際使用過程中,盡量?不要?在短時(shí)間內(nèi)讓大流量穿過不同種類的網(wǎng)卡;
以避免因過高的系統(tǒng)中斷而引起的網(wǎng)絡(luò)性能降低。
例如:
虛擬機(jī)有?3 個(gè)網(wǎng)絡(luò)設(shè)備,分別為直通網(wǎng)卡?A 、直通網(wǎng)卡?B 、VirtIO橋接網(wǎng)卡?C?;
網(wǎng)卡 A 作為 WAN 口使用,網(wǎng)卡 B 和?C 進(jìn)行橋接作為 LAN 口使用;
如果千兆流量流經(jīng)網(wǎng)卡 A 與網(wǎng)卡 C ,則虛擬機(jī)的系統(tǒng)中斷將會(huì)陡增;
CPU 出現(xiàn)單個(gè)核心跑滿的現(xiàn)象,網(wǎng)絡(luò) NAT 性能將會(huì)受到嚴(yán)重影響;
此時(shí),如果讓流量流經(jīng)網(wǎng)卡 A 與網(wǎng)卡 B ,則可以避免這個(gè)現(xiàn)象的產(chǎn)生。
4.調(diào)整虛擬機(jī)配置參數(shù)
初創(chuàng)的 Ubuntu Server 的配置參數(shù)如下:

調(diào)整虛擬機(jī)的?引導(dǎo)順序
?選項(xiàng),建議移除網(wǎng)絡(luò)啟動(dòng)相關(guān)的?net0
?引導(dǎo)項(xiàng)。

然后?關(guān)閉
?虛擬機(jī)的?使用平板指針
?選項(xiàng),可以一定程度上降低虛擬機(jī)的 CPU 使用率。

修改完成后,總體情況如圖所示,等待 Ubuntu Server 完全設(shè)置好,運(yùn)行無異常之后,即可開啟該虛擬機(jī)的?開機(jī)自啟動(dòng)
?設(shè)置。

5.虛擬機(jī)開機(jī)
切換到虛擬機(jī)的 “控制臺(tái)” 選項(xiàng)卡,讓虛擬機(jī)開機(jī)。
此處需要注意的是,目前 Ubuntu Server 并未設(shè)置,因此不會(huì)對(duì)網(wǎng)絡(luò)造成什么影響,但是如果后續(xù) Ubuntu Server 設(shè)置了內(nèi)部網(wǎng)橋,且此時(shí) PVE 服務(wù)器內(nèi)有其他的路由系統(tǒng)(例如 Openwrt)也在相同的網(wǎng)絡(luò)接口上有網(wǎng)橋,就會(huì)引起網(wǎng)絡(luò)環(huán)路導(dǎo)致網(wǎng)絡(luò)無法訪問。
選擇第一項(xiàng),并使用回車鍵?Enter
?,即可開始安裝。

至此,Ubuntu Server 虛擬機(jī)創(chuàng)建步驟完成。