无需硬件!手把手教你在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
2
3
|
sudo apt upgrade
sudo apt install open-vm-tools-desktop -y
sudo reboot
|
1.3 配置编译环境
按Ctrl+Alt+T快捷键在终端输入以下命令
1
2
|
sudo apt update
sudo apt upgrade -y
|
执行完毕输入
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
2
|
git config --global --unset http.proxy
git config --global --unset https.proxy
|
进入lede目录
拉取校园网防检测所需要的模块
1
2
|
git clone https://github.com/EOYOHOO/UA2F
git clone https://github.com/EOYOHOO/rkp-ipid.git package/rkp-ipid
|
然后进入lede源码的根目录中添加下面代码到feeds.conf.default 文件
1
2
|
src-git kenzo https://github.com/kenzok8/openwrt-packages
src-git small https://github.com/kenzok8/small
|
更新 feed 模块,终端输入
1
2
|
./scripts/feeds update -a
./scripts/feeds install -a
|
2. 本地编译.config
打开编译菜单,在终端输入
前三项选择以下选项(VMware是x86架构,所以咱们选x86的)
以下为校园网防检测必选
1
2
3
4
5
6
7
8
9
10
11
12
|
# 勾选上 ipid
# kernel-modules->Other modules->kmod-rkp-ipid
# 选上模块
# kernel modules->Netfilter Extensions->kmod-ipt-ipopt
# kernel modules->Netfilter Extensions->kmod-ipt-u32
# 勾选上 ua2f
# network->Routing and Redirection->ua2f
# 选上模块
# network->firewall->iptables-mod-conntrack-extra
# network->firewall->iptables-mod-filter
# network->firewall->iptables-mod-ipopt
# network->firewall->iptables-mod-u32
|
根据自己喜好选择插件,然后保存退出
插件参考链接:Applications 添加插件应用说明-L大
3. 本地编译openwrt固件
下载 dl 库,在终端输入
开始编译固件,在终端输入 (-j 后面是线程数,第一次编译推荐用单线程)
编译完成后镜像包输出路径: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
2
3
4
5
|
cd lede
rm -rf ./tmp && rm -rf .config
git pull
./scripts/feeds update -a && ./scripts/feeds install -a
make menuconfig
|
4. 在线编译openwrt固件
使用github Actions功能编译固件
此方法需要有github账号,将P3TERX项目拉到自己账号仓库
参考视频:校园网防检测!软路由固件编译教程——利用github编译openwrt固件
PS:GitHub Actions是有限制的,安装很多插件可能会导致编译失败,不过安装文章里的插件是可以编译成功的,详情请看:GitHub Actions 官方文档-使用限制、计费和管理
然后编辑拉取到自己仓库下diy2脚本,添加ua2f和rkp-ipid模块
1
2
|
git clone https://github.com/EOYOHOO/UA2F.git package/UA2F
git clone https://github.com/EOYOHOO/rkp-ipid.git package/rkp-ipid
|
在虚拟机进入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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
#通过rkp-ipid设置IPID
#若没有加入rkp-ipid模块,此部分不需要加入
iptables -t mangle -N IPID_MOD
iptables -t mangle -A FORWARD -j IPID_MOD
iptables -t mangle -A OUTPUT -j IPID_MOD
iptables -t mangle -A IPID_MOD -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 127.0.0.0/8 -j RETURN
#由于本校局域网是A类网,所以我将这条注释掉了,具体要不要注释结合你所在的校园网
iptables -t mangle -A IPID_MOD -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A IPID_MOD -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A IPID_MOD -d 255.0.0.0/8 -j RETURN
iptables -t mangle -A IPID_MOD -j MARK --set-xmark 0x10/0x10
# 防时钟偏移检测
iptables -t nat -N ntp_force_local
iptables -t nat -I PREROUTING -p udp --dport 123 -j ntp_force_local
iptables -t nat -A ntp_force_local -d 0.0.0.0/8 -j RETURN
iptables -t nat -A ntp_force_local -d 127.0.0.0/8 -j RETURN
iptables -t nat -A ntp_force_local -d 192.168.0.0/16 -j RETURN
iptables -t nat -A ntp_force_local -s 192.168.0.0/16 -j DNAT --to-destinatio
# 通过 iptables 修改 TTL 值 数字为需要的修改的 ttl 值
iptables -t mangle -A POSTROUTING -j TTL --ttl-set 64
#iptables 拒绝 AC 进行 Flash 检测
iptables -I FORWARD -p tcp --sport 80 --tcp-flags ACK ACK -m string --algo bm --string " src=\"http://1.1.1." -j DROP
|
6.3 UA2F配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# 开机自启
uci set ua2f.enabled.enabled=1
# 自动配置防火墙(默认开启) (建议开启)
uci set ua2f.firewall.handle_fw=1
uci set ua2f.firewall.handle_tls=1
uci set ua2f.firewall.handle_mmtls=1
uci set ua2f.firewall.handle_intranet=1
# 保存配置
uci commit ua2f
# 开机自启
service ua2f enable
# 启动 ua2f
service ua2f start
# 重启一下设备
reboot
|
然后这里有两个骚操作可以为其他设备提供网络:
方法一:电脑上下载360免费WIFI,开启WIFI,这里有几率无法创建无线网络,可以以校园网模式运行,(注意使用此方法开热点,网速就看你学校网络质量了,我这边白天用好到爆,晚上的时候卡成狗,玩游戏都玩不了)
方法二:将电脑的网络桥接给路由器(此步骤要有一个路由器和网线)打开网络控制面板—网络和Internet—网络和共享中心—更改适配器设置—然后按住Ctrl键选择VMware Network Adapter VMnet8和电脑的有线物理网卡(如图),选择桥接连接。然后进入路由器改为桥接模式,然后可以多设备上网了!!!
ua检测网站(有可能显示不正确,但能使用)
http://ua.233996.xyz/
注: 如果你手上有X86硬路由或者可以刷机的路由器 (如:红米AC2100),可以在(2.本地编译.config)打开编译菜单时将前三项修改成你的路由器相关信息,在编译完成openwrt固件后导出虚拟机,通过U盘将镜像上传到你的设备
参考资料
【正片】面对校园网的多设备检测,「我」的解决方案是——
校园网防检测!软路由固件编译教程
VMware安装OpenWrt虚拟机让宿主机上网
VMware安装OpenWrt让宿主机上网&旁路由(两种方案)