这篇文章想了很久要起个啥名字。本来想归于大内网战略的,但是想了想,既然开始玩软路由了,以后肯定会上服务器是吧,四舍五入也算是个数据中心了是吧,于是干脆开个新系列

本文仅作为一分钱都不想出的抠比们体验软路由和锻炼技术用,实际部署请使用专门的硬件。如:个人数字基建(3):物理机安装 PVE,并新建 OpenWrt 虚拟机

先决条件

  • 有一台电脑(下文中称为台式机),承担作为虚拟化宿主机的任务。
  • 网络通过实体路由器接入。下文实践中软路由将作为这个实体路由器的下级路由。也可以直接使用软路由进行拨号,但是本次只是一个验证,所以不弄那么复杂。
  • 台式机上安装了 VMware。
  • 台式机上至少有两张网卡(可以是一张有线一张无线)。如果只有一张网卡,就没办法接笔记本验证实体设备能否通过软路由上网了。
  • 一台笔记本通过网线和台式机的有线网卡连接。
  • 台式机的无线网卡连接到实体路由器。如果你的电脑有多个有线网卡也是一样的。

本文环境

  • 宿主机:Windows 10 专业版 22H2,版本号 19045.3208
  • VMware WorkStation 17 Pro

网络拓扑设计

如果把虚拟的设备当成实体设备看待,那么网络的拓扑图可以看作如下(箭头指代上传时数据流动的方向):

可以认为是从网络层的角度去观察

而真实的拓扑如下:

可以认为是从物理层开始观察。注意,图中虚线的“软路由桥接”在上传时并不会被使用到,只有笔记本和 win 虚拟机进行局域网通信时才会走。
  • 软路由的 WAN 口网卡(VMNet2 网卡)桥接到台式的实体无线网卡上,使得软路由可以上网。虽然“寄宿”在实体网卡上,但是在上级路由器看来这是两张不同的网卡。
  • 软路由的一个 LAN 口网卡(VMNet0 网卡)桥接到台式的实体有线网卡上。这样,笔记本网线插到台式网卡上,相当于插到软路由的一个 LAN 口上。
  • 台式机的虚拟 VMNet3 网卡和 Window 虚拟机的 VMNet3 网卡连接到软路由的另一个 LAN 口网卡(VMNet3 网卡)上。

配置虚拟网络

打开 VMware 的虚拟网络编辑器:

一般默认的 VMNet0 就已经是桥接(不是就改成桥接,或者添加一个新的网络),改为桥接到物理有线网卡。

接下来添加一个虚拟网2(已经存在就自行使用其他数字)

把这个桥接到物理无线网卡上。

再添加个虚拟网3,仅主机模式,关闭 DHCP 服务器(将由软路由启用 DHCP 服务),子网 IP 中间的 114 按需修改。

点击确定,虚拟网络就编辑好了。

下载 OpenWrt 镜像

下载镜像文件

到网址:https://downloads.openwrt.org/releases/里搜索你想要版本的 64 位包。

比如:我依次点击 18.06.2 → targets → x86 → 64:(我出于个人需求下的是比较老的 18 版本,无需求完全可以下载更新的)

无脑下第一个就行了。下完解压。

转换镜像

下载的 img 镜像文件 vmware 不认,需要转为虚拟硬盘。

首先打开网址 V2V Converter / P2V Converter - Converting VM Formats ,拉到最下面,随便填个人信息(邮箱要真的),然后点击 download。

等几分钟,会有一封邮件发到你的邮箱,有个链接下载转换器。下载安装即可。

警告

接下来转换镜像时,源目录和目标目录路径不要包含中文,否则会报错。

安装完之后打开。首先选择本地文件,打开之前解压出来的 .img 文件。

然后选择保存到本地 VMDK 文件。

选择第一个,找个位置保存生成的 VMDK 文件。点击转换即可。

安装 OpenWrt 虚拟机

回到 VMware 控制面板,新建虚拟机。

按照下面的步骤设置:

  1. 自定义
  2. 下一步
  3. 稍后安装
  4. 是“其他 Linux”,选 Ubuntu 等其他发行版会导致无法识别虚拟网卡,md 浪费了我一个下午才发现
  1. 起个名字
  2. 随便给核心
  3. 1G 内存够了
  4. 不使用网络连接,之后再配置
  1. 下一步
  2. 下一步
  3. 使用现有磁盘
  4. 选择之前从 .img 镜像转换得到的 .vmdk 文件。点击下一步,保持现有格式

接下来是重头戏:设置虚拟网络。点击自定义硬件。

首先删除声卡和打印机,没用。

然后添加一个网络适配器(也就是网卡)。

这个适配器选择虚拟的 VMNet3 虚拟局域网网卡(作为 LAN 口)。

依葫芦画瓢,依次添加一个 VMNet2 网卡(作为 WAN 口)和 VMNet0 网卡(作为另一个 LAN 口)。以上三张网卡顺序不要弄错

然后关闭,完成新建虚拟机的过程。

重要

OpenWrt 会将分配的第一个和第三个之后的网卡(eth0,eth2 .....)作为和下属设备链接的 LAN 口,第二个网卡(eth1)作为和上级网络链接 WAN 口。因此,上文新建网卡的顺序不能错。

配置 OpenWrt

第一次开机

vmware 开机刚刚建好的软路由虚拟机。在类似下面的界面静止不动大约 20-30 秒(或者显示 crng init done)之后,鼠标点进去并回车。

出来 openwrt 的欢迎界面和 bash:

输入 vim /etc/config/network 并回车

按 i 键进入 vim 输入模式,按方向键移动光标,修改 ip 地址为 192.168.114.1,然后按 esc 键,输入 :wq 回车来保存并退出。

然后输入并回车 service network restart 重启网络服务:

设置宿主机的网络适配器

在宿主机的控制面板 → 网络与 Internet → 查看网络状态和任务 → 更改适配器设置 中,修改 VMNet3 网卡的设置:

填入 IP 地址、子网掩码和网关(软路由的 IP),DNS 服务器输入软路由的 IP(192.168.114.1),确定。

访问 WebUI

现在可以在浏览器中输入 192.168.114.1 访问管理页面。初始没有密码。

需要到防火墙中允许 WAN 口的包转发,不然上不了网。

接下来,需要把多张 LAN 网卡的子网段统一。首先点击编辑 LAN 接口。

在“接口”中选上其他的 LAN 口网卡,保存即可。

网络测试

Windows 虚拟机上网测试

在 VMWare 里新建一个 Windows 虚拟机,网卡使用 VMNet3。

自动分配了内网 IP,并且上网毫无压力。

实体笔记本测试

首先,需要将台式机的实体有线网卡的 IPv4 功能剔掉,不然就相当于将网线另一头的笔记本当成路由器,而不是使用软路由,导致大家都上不了网。

然后网线连接笔记本和台式机的网口,关掉笔记本的 WIFI,笔记本依然能上网,并且 IP 是 192.168.114.x

宿主机使用软路由上网

目前,宿主机还是使用实体无线网卡走上级路由器上网,而不是走软路由。如果要走软路由,需要也把无线网卡的 IPv4 给搞掉。

之后台式机依然能上网。

警告

不要禁用无线网卡或者关闭无线网卡,因为软路由的 WAN 网卡桥接在实体无线网卡上。

警告

虽然宿主机使用虚拟网卡走软路由也能上网,但是 Windows 似乎不认(如下图)。在这种状态下,虽然有网,但是 UWP 和 onedrive 会仍以为是断网状态而无法使用。

安装汉化

来自:最新的openwrt 19.07官方版怎么设置成中文中?-OPENWRT专版-恩山无线论坛

输入 luci-i18n-base-zh-cn 并点击 OK 即可下载。之后刷新网页就变成中文了。