无需硬件!手把手教你在 VMware 上安装软路由,实现校园网多设备共享上网!
写这一篇文章是为了防止学校的校园网以后使用别的防检测手段,到时怕忘了如何编译 OpenWrt
本文绝大部分参考以下两位 up 主的视频,在这里万分感谢!!!
1.搭建本地编译环境
1.1 下载 Ubuntu 镜像,推荐 Ubuntu20.04.05 LTSx64
1 | https://cn.ubuntu.com/download/desktop |
1.2 安装 ubuntu 虚拟机
以 VMware Workstation 16 Pro 16.2.4 版本为例,新建虚拟机,选择自定义选项
PS:如果你要安装很多插件建议最低保持 100G
添加 Ubuntu 系统镜像
安装完成之后,打开软件与更新,将下载自(位于中国的服务器)修改为阿里云的地址,下载快点,也可以不修改。
安装完测试一下宿主机能不能和 ubuntu 虚拟机进行直通,后面会需要复制粘贴命令行到终端,如果能复制粘贴命令行到 ubuntu 虚拟机中,则跳过安装 vmware tools(以下三行)
1 | sudo apt upgrade |
1.3 配置编译环境
按 Ctrl+Alt+T 快捷键在终端输入以下命令
1 | sudo apt update |
执行完毕输入
1 | sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc-s1 libc6-dev-i386 subversion flex uglifyjs gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx-ucl libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync |
从这一步开始开启网络代理,否则有的文件无法下载
下载 lede 大佬的源码,注意下载路径不能有中文
1 | git clone https://github.com/coolsnowwolf/lede |
无法下载的话设置一下 git 代理
1 | git config --global --unset http.proxy |
进入 lede 目录
1 | cd lede |
拉取校园网防检测所需要的模块
1 | git clone https://github.com/EOYOHOO/UA2F |
然后进入 lede 源码的根目录中添加下面代码到 feeds.conf.default 文件
1 | src-git kenzo https://github.com/kenzok8/openwrt-packages |
更新 feed 模块,终端输入
1 | ./scripts/feeds update -a |
2. 本地编译.config
打开编译菜单,在终端输入
1 | make menuconfig |
前三项选择以下选项(VMware 是 x86 架构,所以咱们选 x86 的)
以下为校园网防检测必选
1 | 勾选上 ipid |
Copy
根据自己喜好选择插件,然后保存退出
插件参考链接:Applications 添加插件应用说明-L 大
3. 本地编译 openwrt 固件
下载 dl 库,在终端输入
1 | make download -j8 |
Copy
开始编译固件,在终端输入 (-j 后面是线程数,第一次编译推荐用单线程)
1 | make V=s -j1 |
Copy
编译完成后镜像包输出路径:lede/bin/targets
然后这里会有两个镜像文件分别是:openwrt-x86-64-generic-squashfs-rootfs.img.gz 和 openwrt-x86-64-generic-squashfs-combined.img.gz,
选择导出:openwrt-x86-64-generic-squashfs-combined.img.gz
如果第一次编译失败,进入虚拟机进行二次编译
1 | cd lede |
Copy
4. 在线编译 openwrt 固件
使用 github Actions 功能编译固件
此方法需要有 github 账号,将 P3TERX 项目拉到自己账号仓库
参考视频:校园网防检测!软路由固件编译教程——利用 github 编译 openwrt 固件
PS:GitHub Actions 是有限制的,安装很多插件可能会导致编译失败,不过安装文章里的插件是可以编译成功的,详情请看:GitHub Actions 官方文档-使用限制、计费和管理
然后编辑拉取到自己仓库下 diy2 脚本,添加 ua2f 和 rkp-ipid 模块
1 | git clone https://github.com/EOYOHOO/UA2F.git package/UA2F |
在虚拟机进入 lede 目录,将 feeds.conf.default 文件和 .config 文件导出虚拟机
以记事本打开.config 文件按 Ctrl+F 查找 Netfilter Extensions 关键词,在 Netfilter Extensions 下第二行后添加代码,保存
1 | CONFIG_NETFILTER_NETLINK_GLUE_CT=y |
上传 feeds.conf.default 文件和 .config 文件
查看一下是否上传完毕
开始编译
当出现这个界面时,Actions 已经开始编译,编译时间 4-6 小时(插件越多编译时间越长)
报错的话,到 Ubuntu 虚拟机上重新编译一次
5. 刷入 openwrt 系统
5.1 镜像转换
将编译好的固件包导出来,使用 StarWind V2V Converter 将 img 镜像文件转换为 vmdk 格式
StarWind V2V Converter 下载地址:https://www.starwindsoftware.com/tmplink/starwindconverter.exe
5.2 创建虚拟机并导入固件
以 VMware Workstation 16 Pro 16.2.4 版本为例,新建虚拟机,选择自定义选项
- 此时先不要开机,在创建好的虚拟机点击编辑虚拟机设置,添加另一个网络适配器
- 网络适配器 NAT 做 lan(第一个不用改,Openwrt 默认将第一个网口设置为 lan 口),网络适配器 2 桥接模式(自动)做 wan 口
5.3 虚拟机网卡配置
点击虚拟网络编辑器,将桥接模式的网卡修改为计算机的物理网卡(当作 openwrt 的 wan 口)然后将 NAT 模式的 nat 地址这里划分为 192.168.20.0
5.4 配置上网环境
宿主机通过虚拟机中的 Openwrt 上网
该方案原理是 OpenWrt 作为主路由,VMware 的虚拟机和宿主机的数据流量都是要通过 OpenWrt,取消宿主机物理网卡的 ipv4 和 ipv6,使 OpenWrt 虚拟机的 WAN 口桥接到了物理网卡上,接管了 IP 层的工作,此时,宿主机通过 NAT 模式虚拟网卡连接到 OpenWrt 虚拟机 LAN 口通过 OpenWrt 上网
wan 口(就是你要桥接的物理网卡)
lan 口(配置 VMware Network Adapter VMnet8)
6. 配置 OpenWrt
6.1 防检测配置
开机进入 OpenWrt 系统设置, 勾选启用 NTP 客户端和作为 NTP 服务器提供服务
在候选 NTP 服务器四个输入框分别填写:ntp1.aliyun.com、time1.cloud.tencent.com、stdtime.gov.hk 、pool.ntp.org
然后保存并应用
6.2 防火墙添加一下自定义规则
点击网络–防火墙–自定义规则,添加以下规则
1 | iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53 |
6.3 UA2F 配置
1 | 开机自启 |
然后这里有两个骚操作可以为其他设备提供网络:
方法一:电脑上下载360 免费 WIFI,开启 WIFI,这里有几率无法创建无线网络,可以以校园网模式运行,(注意使用此方法开热点,网速就看你学校网络质量了,我这边白天用好到爆,晚上的时候卡成狗,玩游戏都玩不了)
方法二:将电脑的网络桥接给路由器(此步骤要有一个路由器和网线)打开网络控制面板—网络和 Internet—网络和共享中心—更改适配器设置—然后按住 Ctrl 键选择 VMware Network Adapter VMnet8 和电脑的有线物理网卡(如图),选择桥接连接。然后进入路由器改为桥接模式,然后可以多设备上网了!!!
ua 检测网站(有可能显示不正确,但能使用)
注: 如果你手上有 X86 硬路由或者可以刷机的路由器 (如:红米 AC2100),可以在(2.本地编译.config)打开编译菜单时将前三项修改成你的路由器相关信息,在编译完成 openwrt 固件后导出虚拟机,通过 U 盘将镜像上传到你的设备

























































