随着家庭宽带步入 2.5Gbps 互联时代, IPv6 也进一步普及,上一版 Linux Router 的折腾方式已不能满足使用需求。
因此决定重新折腾一个支持 IPv6 的 Linux Router,并修复上版中存在的设置缺陷。
根据这段时间对 Linux 的进一步学习,结合我在某云厂工作期间积累的知识,本次 Linux Router 构建过程中涉及的核心组件包括:
- 网口以及网桥设置:
systemd-networkd
- PPPoE 拨号:
pppoe
、systemd-networkd
- DHCP 以及 DNS :
dnsmasq
- 防火墙:
nftables
、sshguard
- 系统自动更新:
unattended-upgrades
由于使用了 systemd
,因此本系列文章主要适用于支持 systemd
的 Linux 发行版。
当然,如果使用了其他方法来设置网口、网桥以及 PPPoE 自动拨号,即可绕开 systemd
的约束。
原本计划使用 dhcpcd
来完成服务器 IPv6 配置,但在实际测试中发现,仅使用 systemd
即可完成 IPv6 配置。
由于受到 systemd
版本限制,各 Linux 发行版要求如下:
- Debian 12
- Ubuntu Server 24.04
- Archlinux(资深玩家首选)
Ubuntu Server 既可以直接安装在物理设备上,也能运行于虚拟化环境中,本系列文章主要在 PVE 环境下进行安装设置。
PVE 的安装与设置方法请参阅系列文章 Proxmox VE 折腾手记 。
需要额外准备一台已连接外网的路由设备,用于给 Ubuntu Server 在初始化阶段提供网络。
访问 Ubuntu 的发布页面 Ubuntu Release 下载 Ubuntu 24.04 Server 版安装 ISO 文件,并一同下载 ISO 的校验文件。
登录 PVE 管理后台,将 Ubuntu Server 的 ISO 文件上传到 PVE 服务器。
进入新建虚拟机流程,并打开高级选项。
节点即本机,VM ID
和 名称
可自定义。
启动/关机顺序
以及 启动延时
相关参数可以根据实际需要进行调整。
使用的光盘镜像文件选择刚才上传的 Ubuntu Server ISO 文件。
操作系统 类别
选择 Linux
、内核 版本
选择 6.x - 2.6 Kernel
即可。
系统部分需要修改几项参数。
显卡选择 默认
,SCSI 控制器选择 VirtIO SCSI single
。
机型可选择 q35
,对 PCIE设备
的直通会有更好的支持。
后续将会在 Ubuntu Server 系统中安装 Qemu Agent
,因此建议勾选 Qemu代理
选项。
BIOS 可选 默认(SeaBIOS)
,也可选 OVMF(UEFI)
,可根据实际需求进行调整。
根据 PVE 服务器的硬盘资源情况酌情分配 Ubuntu Server 的硬盘容量。
当宿主机使用 SSD
作为物理存储设备,并且虚拟磁盘采用 精简置备
(Thin Provisioning) 模式时,可考虑开启以下选项:
-
丢弃
(Discard) 选项,有助于存储空间回收。 -
SSD仿真
(SSD Emulation) 选项,让虚拟机将虚拟磁盘视为SSD
存储设备。
建议硬盘分配容量不低于 20G
。
根据 PVE 服务器的 CPU 资源情况酌情分配 Ubuntu Server 的 CPU 资源。
CPU类别选择 host
,核心
数建议不少于 2
,请根据 CPU 性能以及设备 CPU 物理核心数来综合考虑。
J4125 CPU 在分配 2
核心的情况下,可基本满足千兆外网的使用需求,以供参考。
若 PVE 服务器内有多颗物理 CPU ,则推荐勾选 启用NUMA
选项。
内存一般 2G
足够使用,关闭 Ballooning设备
选项。
需要注意,此页设置只能添加一个网络设备,而网络设备的添加顺序将和 Ubuntu Server 内部显示的网卡顺序一致。
因此,此处先仅添加 WAN 对应的网口(此处为 vmbr0
),模型选择 VirtIO
,并取消勾选 防火墙
选项。
对于使用硬件直通的小伙伴,可根据实际情况修改此处网络设备选项。
推荐在 Multiqueue
处根据前面设置的 CPU 数量进行网卡多队列设置,设置比例为 1:1 。
即有 n 个 CPU 核心,此处多队列也设置为 n 。
接下来查看设置总览,确认无误,即可点击 完成
。
此时,查看虚拟机详情页,可以看到刚才创建的虚拟机。
根据实际情况,开始添加需要的网络设备。
所有网络设备去掉 防火墙
,并增加 Multiqueue
选项,示例如下。
注意:
经过实际测试,如果虚拟机配置了 直通网卡 ,在实际使用过程中,建议 避免 在短时间内让大流量穿过不同类型的网卡。
例如,假设 Ubuntu Server 有 3 个网络设备:
-
直通网卡 A
-
直通网卡 B
-
VirtIO 虚拟网卡 C
其中网卡 A 用作 WAN 口,网卡 B 和 C 在内部桥接并用作 LAN 口。
如果千兆流量经过网卡 A 和 C ,虚拟机的系统中断将会急剧增加,物理机 CPU 可能出现单个核心被完全占用的情况,从而严重影响网络 NAT 性能。
然而,如果流量经过网卡 A 和 B ,则可避免由于系统中断过高而导致的网络性能下降问题。
当前 Ubuntu Server 虚拟机的默认参数如下。
调整虚拟机的 引导顺序
选项,建议移除网络启动相关的 net0
引导项。
然后 关闭
虚拟机的 使用平板指针
选项,可以一定程度上降低虚拟机的 CPU 使用率。
此时虚拟机配置选项如图所示。在 Ubuntu Server 配置完成后,且运行无异常时,可开启虚拟机的 开机自启动
选项。
切换到左侧菜单的 控制台
,并让虚拟机开机。
需要注意的是,目前 Ubuntu Server 尚未进行配置,因此不会对网络造成影响。
然而,若之后 Ubuntu Server 设置了内部网桥,且此时 PVE 服务器内有其他路由系统(例如 Openwrt )在相同的网络接口上也设置了网桥,这将导致网络环路。
选择第一项,并使用回车键 Enter
,即可开始安装。
至此,Ubuntu 服务器创建步骤完成。