夏天到了,突然发现我的小米路由器3好像慢了很多。但是我的钱包却告诉我它还很流畅
于是乎我看了一眼桌子上的J1900……J1900:你不要过来啊
前言
众所周知,北方是一个没有春秋的地方。众所又周知,学校的建设工作总是会在你在校的时候发出通知,却在你快要离校的时候开始建设,什么时候你离开校园了,学校也就建设好了。这两者加在一起,并不会是双倍的快乐。为什么呢,明明是我先的
吐槽归吐槽,夏天到了。以发烧著称的小米路由3逐渐开始发高烧。并出现了断流,网速不稳一系列并发症。身为医学狗的我,自然就要修理一番。正好,前段时间刚把J1900小主机弄起来,那为什么不直接用PVE弄一个软路由,然后桥接一下。再搞一下多拨什么的岂不是美滋滋。这回就是双倍的快乐了
前期的准备以及工具
- 一张PCI千兆网卡(我的主板只有一个网线口,只能再购买一块)
- 4G优盘一枚
- 可以正常使用apt的网络
- 一台可以使用ssh的电脑
- J1900小主板
要进行的操作
- 用pve安装一个软路由系统
- 编译mentohust进行校园网的拨号
- 与小米路由器3桥接
- 进行校园网多拨
- 添加路由器定时任务,防止掉线
正式步骤
软路由系统安装
提到第三方的路由系统,首先想到的就是openwrt啦,在这里,我选择了X-WRT作为软路由的系统
下载系统镜像并解压
在X-WRT的下载界面里选择x86 64bits (MBR dos)
下载后并解压文件
将镜像写入到优盘内
注意,写入镜像会清除优盘的所有数据,请注意备份文件
Windows
- 下载etcher并安装
- 插入优盘,打开etcher,选择下载好的镜像并选择优盘写入
Linux && Mac
打开终端,输入以下命令
1 | diskutil list #查看电脑里优盘的路径,比如我的是disk4 |
镜像写入成功后可能会提示无法访问,忽略即可
PVE虚拟机的创建以及启动
- 打开PVE的后台,选择创建虚拟机,具体配置的话视情况而定即可
- 创建完成,将优盘插到主板上,选择点击
添加
>USB设备
,并选择你的优盘
添加成功后,启动虚拟机,按住ESC键直至出现引导界面
选择你的优盘作为启动设备,然后稍等片刻即可进入系统
将镜像写入系统磁盘中
路由器的默认账户和密码分别是root
和admin
,登陆后执行以下命令
1 | fdisk -l #查看系统的磁盘,比如,我创建的磁盘为/dev/sda,U盘为/dev/sdb |
此时重启拔掉优盘,路由系统便可以从硬盘启动
编译mentohust进行校园网的拨号
硬件连接
由于我的主机只有一个网口,于是乎我单独购买了一块PCI千兆网卡用来连接校园网。
关闭虚拟机,进入虚拟机的硬件设置,添加一块网卡,桥接设备选择PCI网卡
启动虚拟机,发现系统可以识别到网络,但是无法正确连接,此时我们则需要编译mentohust来进行校园网拨号
编译mentohust
一开始我尝试使用macOS直接进行编译,然而经历了无数次尝(翻)试(车)之后,我跑路了。。。。。
然而并没有
后来发现了一个神奇的东西叫做docker,然后用docker编译成功了docker一时爽,一直docker一直爽
下载并安装docker
前往docker官网下载docker的安装包安装并打开
打开终端,依次执行以下命令
1
2
3
4docker pull openwrtorg/packages-cci #拉取镜像
docker images #查看当前镜像的ID ,比如我的是472dadf87bcc
docker run --name openwrt -itd 472dadf87bcc /bin/bash #创建一个名为openwrt的容器
docker exec -it openwrt /bin/bash #为当前容器分配一个伪终端
此时,编译的环境就ok了,下面我们就可以编译mentohust了
编译mentohust
教程和源代码,我参考了这位大佬的教程,将自己的膝盖奉上
下载并更新openwrt的源代码
下载代码的时候可能会相当慢,自备工具在刚才的伪终端中,依次执行以下命令
1 | cd ~ |
- 配置make文件
在伪终端中,依次选择以下内容
1 | Target System > x86 |
按TAB键保存,然后退出即可
- 编译文件
保存make文件之后,依次执行以下命令
1 | make tools/install V=s |
编译时间可能会比较长,请耐心等待
注意,编译的时间可能会比较长,如果想要多线程编译,那么请在上述命令前执行export FORCE_UNSAFE_CONFIGURE=1
后再在make命令后添加-j
参数
编译成功后,再次打开一个终端执行下列命令将文件导出即可
1 | docker cp openwrt://home/build/openwrt/bin/packages/x86_64/base/mentohust_0.3.1-1_x86_64.ipk ~/Desktop|- |
在桌面上即可看见生成的安装包了
进行拨号
- 在PVE的后台管理界面启动openwrt的远程管理界面,获取当前ip
1 | service firewall stop #先关闭防火墙,否则可能会无法访问 |
我们可以看到有两个ip,这里我们使用
192.168.32.108
的地址登录
- 使用浏览器登录软路由的后台管理界面,进行如下设置
1 | 系统 > 管理权 > ssh访问 |
- 上传文件
1 | scp ~/Desktop/mentohust_0.3.1-1_x86_64.ipk root@192.168.32.108:/root |
- 拨号
ssh 路由器后台,执行以下命令
1 | opkg install mentohust_0.3.1-1_x86_64.ipk |
如果提示发送心跳包以保持在线
,则证明拨号成功,倘若没有拨号成功,可以查看输出日志来判断什么问题
启用多拨
mentohust检测运行状态通过是加锁打开mentohust.pid文件,如果加锁成功则说明没有运行,反之运行。所以我们要修改mentohust.pid的文件名才能多拨
同理,它的配置文件存放在/etc/mentohust.conf中, 我们还要修改mentohust.conf的文件名才能够保证每个拨号程序能够独立运行
修改代码的话可能会比较繁琐,甚至用有可能会出现编译错误。所以我们使用另一种方式来修改拨号文件
下载16进制编辑器
16进制编辑器有很多,我在这里使用了iHex
,可以直接去App Store 去下载。Win平台可以使用WinHex
修改mentohust程序文件
- 将mentohust文件复制到本地
1 | scp root@192.168.32.108:/usr/sbin/mentohust ~/Desktop |
- 使用iHex打开文件,分别搜索
mentohust.pid
、mentohust.conf
。并将其修改为1entohust.pid
、1entohust.conf
后保存。文件名为1entohust
- 重复以上的步骤,知道达到你想要的多拨数量
注意,使用16进制修改器修改时只能替换,不能添加字符!
- 将修改好的文件上传至路由器的
/usr/sbin/
下
1 | scp ~/Desktop/1entohust root@xxx.xxx.xxx.xxx:/usr/sbin |
启用路由器的多拨功能
- 浏览器登录路由器管理后台,进行如下设置
1 | 网络 > 多拨 > |
一定要将几个虚拟网口的MAC修改成固定值!!!,否则重启后回因为网口Mac地址改变而导致拨号失败!!!
- 拨号测试
重复上述步骤即可
创建开机自启和定时拨号任务
到这里,路由器拨号就成功了。但是,每次重启就要登录后台拨号,掉线后还要继续拨号。体验太差
开机自启
记录一下当前拨号成功的mentohust命令
ssh登录路由器后台,修改
/etc/rc.local
文件将命令复制到文件里面保存即可
定时拨号
使用网页登录路由器后台,在定时任务中输入如下内容
1 | */5 * * * * mentohust -u121212 -p1212121 -neth0 -d2 -a1 #每5分钟执行一次 |
如果定时任务没有启动的话,可以在终端执行service cron start
启动定时任务功能
与硬件路由器连接
硬路由的系统我依旧采用了openwrt,不过大部分的路由器的设置方式是一样的
路由器设置
浏览器后台登录管理界面,进行和WiFi有关的设置
取消dhcp
保存
连接
将路由器上lan口和软路由的另一个网口相连,重启开机即可
enjoy
放个速度截图23333333~
这速度只能以三个字形容,舒服了其实网速还可以再往上的,但是没有账号了
后记
折腾了半天终于算是弄完了,撒个花庆祝一下并没有