无需硬件!手把手教你在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盘将镜像上传到你的设备