在阅读这一篇之前,请确保你已经掌握了基本的编译方法和要领,也确保自己已经处于全局魔法的环境下。如果你还不懂如何编译,请阅读这篇文章 。
温馨提示:
Before continuing to read this article, I hope that you have made sure that the automatic translation feature in your own browser (chrome explorer) has been turned off, as this feature can lead to some misleading and biased tutorial content, thank you.
开始编译
在编译之前,请先更新确保自己的固件处于最新的状态 打开终端,输入命令
1 2 3 # 系统更新 sudo apt-get update sudo apt-get upgrade
运行完成后,输入命令
1 2 # 安装依赖关系 sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev libz-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc1 libc6-dev-i386 subversion flex uglifyjs git-core gcc-multilib p7zip p7zip-full msmtp libssl-dev texinfo libglib2.0-dev xmlto qemu-utils upx libelf-dev autoconf automake libtool autopoint device-tree-compiler g++-multilib antlr3 gperf wget curl swig rsync
22.04
1 sudo apt-get -y install build-essential asciidoc binutils bzip2 gawk gettext git libncurses5-dev zlib1g-dev patch python3 python2.7 unzip zlib1g-dev lib32gcc-s1 libc6-dev-i386 subversion flex uglifyjs git 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
然后进行下一步,输入命令
1 2 # 下载源码 git clone https://github.com/coolsnowwolf/lede.git
接下来进行更新软件源,输入命令
1 2 3 4 5 6 7 cd lede # 更新feeds软件源 ./scripts/feeds update -a # 安装feeds软件包 ./scripts/feeds install -a
开始编译UA2F
我们需要将lede/package/libs/libnetfilter-queue
改为openwrt官方版本,网址为: https://github.com/openwrt/packages/tree/master/libs/libnetfilter-queue
在这一步中,我收到过很多人失败的情况,他们都是用命令进行更换的,所以在这里我个人推荐自己手动更换会最为保险。
1.直接根据目录的方向将libnetfilter-queue文件夹删除。 2.去上面的网址通过这里 下载下来,通过winscp,百度云,邮箱等方式放回去原目录替换即可。 (百度上有很多github下载的网站,随便一搜就可以了。)
也可以直接尝试输入svn checkout https://github.com/openwrt/packages/trunk/libs/libnetfilter-queue package/libs/libnetfilter-queue
完成上一步以后就可以开始进入终端输入命令编译了,输入命令
1 2 cd lede/package git clone https://github.com/Zxilly/UA2F.git package/UA2F
然后返回lede目录,输入命令 make menuconfig
,进入编译菜单
我们进去第一件事就是选好我们自己的路由器型号,然后我们需要选一些依赖包来保证UA2F的正常运行。 我们需要选libmnl
, libnetfilter-queue
, iptables-mod-nfqueue
这三个依赖包。 (我们可以按键盘里的/键来搜索关键词找到这些依赖包的位置)
最后我们在Network - Routing and Redirection里找到ua2f
,并按Y选中它。
随后,对于GuangDong University of Finance的伙伴来说,就已经足够了
按esc
退出菜单
输入命令make download V=s
(这个命令我建议运行2-3次确保无问题)
随后输入命令make -j12 kernel_menuconfig
(j几自己判断)
第一次编译会有点长,请耐心等待,过一会会弹出一个框框需要我们选择。
弹出来后,我们在菜单寻找
1 2 3 4 5 Networking support -> Networking options -> Network packet filtering framework (Netfilter) -> Core Netfilter Configuration -> NFQUEUE and NFLOG integration with Connection Tracking
(按顺序选择,要选中的要按Y的就按,不需要的就不用) 注意:这里要在Core Netfilter Configuration把下面这些选了之后才会出现那个tracking
1 2 3 4 -*- Netfilter NFNETLINK interface <*> Netfilter LOG over NFNETLINK interfacer ip_tables) <*> Netfilter connection tracking support <*> Connection tracking netlink interface
当我们都确保选上以后,我们就按保存退出。
随后输入命令,make -j12 V=s
然后就可以慢慢等咯。。。。。。
完成这一步以后,可以说编译已经完成了,我们需要将刷好的固件刷进我们的路由器中。
并用ssh的连接方式输入命令ua2f
,查看自己有无装好ua2f。 ssh的方法可以用cmd
的ssh [email protected]
(ip自己看着办),最好用Xshell
来输入。
如果输入命令后,显示的是not support
,则说明没有装成功,需要重新编译。
如果我们确定自己的ua2f已经装好了,就可以进入路由器后台 找到系统-启动项,往下滑到最低找到本地启动脚本 输入命令ipset create nohttp hash:ip,port hashsize 16384 timeout 300
注意:请确保将此命令输入在exit 0
前面。
随后进入网络-防火墙-自定义规则 输入以下命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 iptables -t mangle -N ua2f #由于本校局域网是A类网,所以我将这一条注释掉了,具体要不要注释结合你所在得校园网 #iptables -t mangle -A ua2f -d 10.0.0.0/8 -j RETURN iptables -t mangle -A ua2f -d 127.0.0.0/8 -j RETURN iptables -t mangle -A ua2f -d 192.168.0.0/16 -j RETURN # 不处理流向保留地址的包 iptables -t mangle -A ua2f -p tcp --dport 443 -j RETURN iptables -t mangle -A ua2f -p tcp --dport 22 -j RETURN # 不处理 SSH 和 https iptables -t mangle -A ua2f -p tcp --dport 80 -j CONNMARK --set-mark 24 iptables -t mangle -A ua2f -m set --set nohttp dst,dst -j RETURN iptables -t mangle -A ua2f -m connmark --mark 23 -j RETURN # 不处理标记为非 http 的流 (实验性) iptables -t mangle -A ua2f -j NFQUEUE --queue-num 10010 iptables -t mangle -A FORWARD -p tcp -m conntrack --ctdir ORIGINAL -j ua2f iptables -t mangle -A FORWARD -p tcp -m conntrack --ctdir REPLY
注意:由于GuangDong University of Finance 的校园局域网是A类网,所以需要注释iptables -t mangle -A ua2f -d 10.0.0.0/8 -j RETURN
接下来,我们只需要用ssh输入命令service ua2f start
,即可成功启动ua2f。
至此,ua2f的编译工作已经基本结束。
查看效果
打开http://ua.zhezhiyu.xyz/ ,来验证自己的ua。
后台输出
1 2 3 4 5 Sat Mar 13 15:23:09 2021 syslog.info UA2F[1516]: UA2F has handled 512 http, 0 noua http, 15654 tcp, 134 mark and 39 nohttp mark in 19 hours, 36 minutes and 19 seconds Sat Mar 13 16:05:19 2021 syslog.info UA2F[1516]: UA2F has handled 1024 http, 29 noua http, 98264 tcp, 592 mark and 457 nohttp mark in 20 hours, 18 minutes and 29 seconds Sat Mar 13 17:28:49 2021 syslog.info UA2F[1516]: UA2F has handled 2048 http, 1505 noua http, 173784 tcp, 1524 mark and 1265 nohttp mark in 21 hours, 41 minutes and 59 seconds Sat Mar 13 18:49:10 2021 syslog.info UA2F[1516]: UA2F has handled 4096 http, 2782 noua http, 444805 tcp, 3162 mark and 1723 nohttp mark in 23 hours, 2 minutes and 20 seconds
注意事项 补充安装
1 2 sudo apt-get install manpages-pl manpages-fr-extra
如果是64位系统的话还需要安装32位兼容包
1 2 sudo apt-get install libc6:i386 libgcc1:i386 libstdc++5:i386 libstdc++6:i386
安装ARM -Linux-GCC工具链
只需要一句命令:
1 2 sudo apt-get install gcc-arm-linux-gnueabi
将toolchain
加到PATH
里面
1 2 3 export STAGING_DIR=/home/xue/lede/staging_dir/toolchain-mips_24kc_gcc-8.4.0_musl/bin/export PATH=$STAGING_DIR /:$PATH
svn更新了源码
源码动了工具链,老的代码导致连接失败
清理工具链编译
根据package的规律,这里用清理来看看运气如何
1 2 make toolchain/clean V=99 -j
大约几秒后清理完毕
再次重新编译,这里用的都是全速的
1 2 make toolchain/compile V=99 -j
1 2 make clean && make dirclean