Hyper-V-跑openwrt

发布于 2021-09-18  28 次阅读


1. 准备工作

1.1 硬件要求

  • 至少有一张以太网卡(不然还上什么网)
  • 灵活的双手,聪明的大脑,勇于尝试的心

1.2 软件要求

  • Windows 10 专业版或企业版(需要Hyper-V环境)
  • 注:Linux可使用KVM虚拟机和brctl工具来搭建相应环境,macOS可使用Parallel Desktop等虚拟机软件,理论上在任何可运行Docker的操作系统中都可以使用Docker来搭建本环境

2. 搭建运行环境

2.1 开启Hyper-V

在Windows中打开 控制面板 > 程序 > 程序和功能 > 启用或关闭 Windows 功能,勾选Hyper-Vimage-20200827215845196

image-20200827215845196

确定后Windows将自动配置Hyper-V功能,并要求重启

2.2 下载OpenWRT镜像

可从OpenWRT项目官方网站下载stable release或snapshot镜像,推荐使用国内的清华镜像源

OpenWRT清华镜像

也有国内开发者制作的整合包,可自行寻找下载,此处推荐Github @SulingGG配置并自动编译的OpenWRT镜像

作者博客

下载地址

2.3 转换镜像格式

下载并解压后可看到,本系统镜像以img格式分发,而微软的Hyper-V不支持直接将img格式镜像作为虚拟机硬盘导入,此处需要进行格式转换。可使用StarWind V2V Converter

下载地址

安装后打开StarWind V2V Image Converter,根据软件提示选中img格式的系统镜像,转换为VHDX格式的硬盘镜像image-20200827221117190

image-20200827221117190

一路选择下一步,你会在img目录下看到一个转换完成的.vhdx文件,稍后需要将vhdx文件导入Hyper-V虚拟机

3. 创建Hyper-V虚拟机

3.1 添加虚拟交换机

开启Windows的Hyper-V功能后可以在开始菜单中搜索到 Hyper-V 管理器,如图所示image-20200827221831511

image-20200827221831511

由于我自己已经建立过虚拟机实例,所以有显示条目。

首先点击右侧的虚拟交换机管理器

3.1.1 添加桥接物理网卡的虚拟WAN

首先创建新的虚拟交换机,选择外部image-20200827222047148

image-20200827222047148

稍后此虚拟交换机将作为WAN口连接至OpenWRT虚拟机,由于本虚拟机的作为上级路由的角色提供服务,所以选择桥接物理网卡

选择外部网络,在下拉选项卡中选中电脑连接外部网络的物理网卡,此处我使用的是笔记本内置的Killer系列的无线网卡image-20200827222316744

image-20200827222316744

名称可以随意填写

注意:由于现在还没有完全配置,可先勾选允许管理操作系统共享此网络适配器,待配置**完成后再取消

3.1.2 添加连接操作系统的虚拟LAN

返回至新建虚拟网络交换机,创建类型为内部的虚拟交换机image-20200827222838397

image-20200827222838397

如图所示配置,此虚拟交换机将作为虚拟路由的LAN口连接虚拟机和本机操作系统,名称可以随意填写,但要自己分清。

3.2 添加虚拟机

回到Hyper-V管理器,点击右侧 新建 > 虚拟机image-20200827223142047

image-20200827223142047

  1. 指定名称和位置写自己喜欢的名称,放自己喜欢的文件夹里
  2. 指定代数第一代
  3. 分配内存不用太多,一般512MB足矣,至少128MB
  4. 配置网络在下拉选项卡中选择先前作为WAN口添加的虚拟网络交换机
  5. 连接虚拟硬盘将步骤2.3中的.vhdx格式虚拟硬盘文件放到你喜欢的文件夹里边选择使用现有虚拟硬盘,选择该.vhdx文件点击完成后即可在Hyper-V管理器中看到添加的虚拟机条目了。右键点击设置,在添加硬件中选择网络适配器,在虚拟交换机中选择先前新建的LAN口虚拟交换机image-20200827223840588

配置如图所示

4. 配置OpenWRT

4.1 配置OpenWRT网络设置

注:此处需要一些Linux操作系统基础,基本命令不再赘述

在Hyper-V管理器中右键虚拟机条目,选择连接,再点击启动

等待几秒后内核启动完成,按下Enter可激活当前console,如图image-20200827224420493

image-20200827224420493

使用vi编辑网络配置文件

vi /etc/config/network

按下i进入编辑模式

编辑config interface 'lan'部分

1
2
3
4
5
6
7
config interface 'lan'
option type 'bridge'
option ifname 'eth1'
option proto 'static'
option ipaddr '192.168.30.1'
option netmask '255.255.255.0'
option ip6assign '60'
Copy

ifname处填写先前作为LAN的网卡在OpenWRT中的网卡名称

一般在Hyper-V创建虚拟机时先添加的为eth0,后添加的为eth1,以此类推(有待考证)

反正就两个网卡eth0和eth1,不行就在配置文件里交换一下试试呗

ipaddr部分可以填写自己喜欢的C类网段,此处为OpenWRT虚拟机在LAN网络中的地址,子网掩码默认255.255.255.0,即前缀24,允许访问192.168.30.0/24的网段,子网掩码的工作方式此处不赘述。

之后在文件末尾添加

1
2
3
config interface 'wan'
option ifname 'eth0'
option proto 'dhcp'
Copy

此处意味使用dhcp协议从上级路由获取ip地址配置,具体情况需要由你所在的网络环境决定,一般来说自动获取即可

按下Esc退出编辑模式,输入:wq保存并退出

输入service network restart重启OpenWRT的网络服务,使得新配置文件生效

完成后输入ifconfig查看网卡配置

以下为我的情况

仅截取eth0(WAN)、eth1(LAN)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
eth0 Link encap:Ethernet HWaddr 00:15:5D:38:01:06
inet addr:192.168.200.25 Bcast:192.168.200.255 Mask:255.255.255.0
inet6 addr: fe80::215:5dff:fe38:106/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1104838 errors:0 dropped:0 overruns:0 frame:0
TX packets:507163 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:469979594 (448.2 MiB) TX bytes:39450872 (37.6 MiB)

eth1 Link encap:Ethernet HWaddr 00:15:5D:38:01:07
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:379616 errors:0 dropped:0 overruns:0 frame:0
TX packets:878441 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:26894447 (25.6 MiB) TX bytes:449428514 (428.6 MiB)
Copy

现在即为完成了OpenWRT的配置,可在OpenWRT中尝试输入

nslookup baidu.com 或 ping baidu.com

检验网络连通性

如果网络通畅,即可再次打开Hyper-V的虚拟交换机管理器image-20200827230638876

image-20200827230638876

取消勾选允许管理操作系统共享此网络适配器

现在Windows将会以虚拟机的OpenWRT作为上级路由访问互联网

注:一开始Windows有可能无法正确获取LAN网卡上的dhcp配置,需要手动在 控制面板 > 网络和 Internet > 网络连接 中指定LAN网卡的静态ip配置,将ip地址设置为先前OpenWRTip地址的同一网段,子网掩码设置为255.255.255.0,网关和首选DNS设置为OpenWRT的地址

如果配置正常工作,Windows的网络状态将会如下image-20200827231140238

image-20200827231140238

WiFi显示无Internet,网络连接状态图标为网线连接image-20200827231427864

image-20200827231427864

设置中看到的图样如图所示

4.2 配置OpenWRT的WebUI

输入opkg update,更新opkg的软件源

opkg为OpenWRT系发行版常用的包管理器

默认连接download.openwrt.org官方站点获取更新,若网络连接较慢可更换为国内镜像

由官方站点更换为清华镜像:

sed -i 's_downloads.openwrt.org_mirrors.tuna.tsinghua.edu.cn/openwrt_' /etc/opkg/distfeeds.conf

由官方站点更换为北外镜像:

sed -i 's_downloads.openwrt.org_mirrors.bfsu.edu.cn/openwrt_' /etc/opkg/distfeeds.conf

除此之外腾讯云也提供OpenWRT镜像服务,需要的朋友可自行更换

完成后可安装软件包

opkg install *

,*处替换为需要安装的软件包

  • luci
  • luci-base
  • luci-compat
  • luci-i18n-base-zh-cn

安装好后,即可在浏览器中输入OpenWRT的地址,打开WebUI管理页面image-20200827231611178

image-20200827231611178

此处我配置好后更改了主题

5. 其它事项

现在你的系统网络流量将会经由OpenWRT虚拟机转发,可以在OpenWRT中安装插件或其它软件来实现不同的功能image-20200827231902745

image-20200827231902745

详细步骤和教程请自行搜索,请不要将本教程用于非法用途

若需要其它的设备同样使用该OpenWRT虚拟机,可使用桥接网卡以旁路路由的架构连入本地网络中,详细教程以后有时间再说吧

转载于 @Vlist 原文地址已经放链接...