前言🔗
相信很多玩网络的朋友都听说过「软路由」这个词。相比于市面上各种硬路由(如 TP-Link、华硕、小米等),软路由的好处不言而喻:性能强大、功能灵活、可定制性极高。市面上比较流行的方案有 OpenWrt、iStoreOS、爱快、RouterOS 等,它们各有千秋,但本质都是基于 Linux 系统的路由发行版。
那么,能不能直接用原生的 Linux 来当路由器呢?
本系列文章将带你从零开始,基于 Fedora + 容器技术,一步步搭建一套完整的家用软路由系统。整个系列计划分为以下几篇:
- 搭建实验环境(本篇)—— 使用虚拟机模拟家庭网络拓扑
- 基础网络配置 —— 更改防火墙配置实现路由功能,包括DHCP服务等
- 容器化技术 —— 使用Podman
花点时间看完这个系列,你会发现:路由器不过也是一台 Linux 电脑而已。
为什么选择原生 Linux 而非 OpenWrt?🔗
OpenWrt 固然优秀,但它毕竟是一个面向嵌入式设备的精简发行版,包管理、内核版本、文件系统等都和主流的发行版有一定差异。如果你已经熟悉 Linux,直接在 Fedora 上搭建路由非常简单——你只是多配了几个网络参数而已。
- 包管理:dnf 生态远比 opkg 丰富,安装软件更方便
- 内核更新:及时跟进主线内核,支持更新的网卡驱动和协议
- 故障排查:标准的 Linux 网络调试手段全部适用
- 通用性:这台机器本质上还是一台正常的 Linux 主机
实验环境概览🔗
这一篇我们会用 Hyper-V 搭建如下拓扑:
eth1: 内部网桥] CLIENT[Client VM
验证 DHCP + DNS + NAT] end ROUTER -- eth1 连接 --> CLIENT end INTERNET((外网 Internet)) ROUTER -- eth0: NAT 连接 --> INTERNET style HOST fill:#E2F0D9,stroke:#70AD47,stroke-width:2px style INTERNAL fill:#D9E1F2,stroke:#4472C4,stroke-width:2px,stroke-dasharray: 5 5 style ROUTER fill:#FFF2CC,stroke:#BF8F00 style CLIENT fill:#FFF2CC,stroke:#BF8F00 style INTERNET fill:#F8CBAD,stroke:#ED7D31
我们会在 Router VM 上配置两个网络接口:
- eth0:以 NAT 方式连接宿主机网络,模拟 WAN 口(外网)
- eth1:连接到一个内部虚拟交换机,模拟 LAN 口(内网)
Client VM 则只需一个网卡,连接到同一个 Internal Network,用来验证路由器提供的 DHCP、DNS、NAT 等是否正常工作。
所需软件🔗
在开始之前,请确保你的宿主机上已安装以下软件:
| 软件 | 用途 |
|---|---|
| Hyper-V | 虚拟机管理平台 |
| Fedora Server ISO | 操作系统镜像 |
本系列均以 Fedora Server 44 为例。如果你用的是其他发行版,大部分命令同样适用,只需注意包名和网络配置文件的差异。
正式操作🔗
启用 Hyper-V🔗
如果你用的是 Windows 10/11 专业版或企业版,Hyper-V 默认已安装但可能未启用。检查方式如下:
- 打开 控制面板 → 程序和功能 → 启用或关闭 Windows 功能
- 找到 Hyper-V,确保其下的 Hyper-V 管理工具 和 Hyper-V 平台 均已勾选
- 若未勾选,勾选后点击确定,重启电脑
重启后在开始菜单搜索 Hyper-V 管理器 并打开。
创建虚拟交换机🔗
我们需要两个虚拟交换机:一个连接外网(WAN),一个连接内网(LAN)。
Hyper-V 管理器 默认启用的 Default Switch 会以 NAT 的形式为连接上的虚拟机提供网络,我们使用这个交换机当做外部网络。下面我们创建内部的交换机。
- 点击右侧的 虚拟交换机管理器,选择创建 内部 交换机
- 名称填
LAN,点击确定
💡 三种虚拟交换机的区别:
类型 虚拟机 ↔ 虚拟机 虚拟机 ↔ 宿主机 虚拟机 ↔ 外网 外部 (External) ✅ ✅ ✅ 内部 (Internal) ✅ ✅ ❌ 专用 (Private) ✅ ❌ ❌
完成后的虚拟交换机列表:
| 名称 | 类型 |
|---|---|
| Default Switch | NAT |
| LAN | 内部 |
创建 Router VM🔗
- 在 Hyper-V 管理器右侧点击 新建 → 虚拟机
- 名称:
Router - 代数:选择第二代(支持 UEFI 引导)
- 内存:分配 1024 MB,取消勾选 动态内存
- 网络:先选择 未连接(后续配置双网卡)
- 虚拟硬盘:创建新虚拟硬盘,大小 20 GB
- 安装选项:选择 从可引导的 CD/DVD-ROM 安装操作系统,点击 浏览 选中 Fedora Server ISO
- 点击完成
配置双网卡🔗
右键 Router 虚拟机 → 设置:
- 左侧选择 添加硬件 → 网络适配器 → 添加
- 第一个网卡(对应 eth0 / WAN):虚拟交换机选择
Default Switch - 再添加第二个网卡(对应 eth1 / LAN):虚拟交换机选择
LAN - 点击确定
网卡的添加顺序决定了 Linux 内核中的接口命名顺序,先添加的是 eth0,后添加的是 eth1。
安装系统🔗
- 右键 Router 虚拟机 → 连接 → 启动
- 从 ISO 引导后,选择 Install Fedora Server 44
- 选择语言(推荐 English,避免终端路径乱码)
- Installation Destination:直接使用自动分区
- Network & Host Name:
- 主机名改为
router.lan - 暂时无需配置 IP,安装完成后手动配置
- 主机名改为
- 设置 Root Password 和创建一个管理员用户
- 点击 Begin Installation,等待完成
- 完成后 Reboot
创建 Client VM🔗
- 名称:
Client - 代数:第二代
- 内存:2048 MB
- 网络:直接选择
LAN(只需要一个网卡) - 虚拟硬盘:20 GB
- 安装选项:同样使用 Fedora Server ISO
安装时注意:
- 主机名设为
client.lan - 网络配置保持 自动(DHCP),后续由 Router VM 分配 IP
两台虚拟机安装完成后,分别启动并登录。此时 Client VM 因为还没 DHCP 服务,暂时获取不到 IP,属于正常现象。下一节我们将进入 Router VM,配置完整的网络服务。