SaltyFish's Bowl

夏天到了,突然发现我的小米路由器3好像慢了很多。但是我的钱包却告诉我它还很流畅
于是乎我看了一眼桌子上的J1900…… J1900:你不要过来啊

前言

众所周知,北方是一个没有春秋的地方。众所又周知,学校的建设工作总是会在你在校的时候发出通知,却在你快要离校的时候开始建设,什么时候你离开校园了,学校也就建设好了。这两者加在一起,并不会是双倍的快乐。为什么呢,明明是我先的

吐槽归吐槽,夏天到了。以发烧著称的小米路由3逐渐开始发高烧。并出现了断流,网速不稳一系列并发症。身为医学狗的我,自然就要修理一番。正好,前段时间刚把J1900小主机弄起来,那为什么不直接用PVE弄一个软路由,然后桥接一下。再搞一下多拨什么的岂不是美滋滋。这回就是双倍的快乐了

前期的准备以及工具

  1. 一张PCI千兆网卡(我的主板只有一个网线口,只能再购买一块)
  2. 4G优盘一枚
  3. 可以正常使用apt的网络
  4. 一台可以使用ssh的电脑
  5. J1900小主板

要进行的操作

  1. 用pve安装一个软路由系统
  2. 编译mentohust进行校园网的拨号
  3. 与小米路由器3桥接
  4. 进行校园网多拨
  5. 添加路由器定时任务,防止掉线

正式步骤

软路由系统安装

提到第三方的路由系统,首先想到的就是openwrt啦,在这里,我选择了X-WRT作为软路由的系统

https://kod.erf172.tk/index.php?user/publicLink&fid=f3587TVwtJenHhBOBQJM0Yf4rf59DbeCKLd5zyTMMgDi3UbaX367Gt5x2_RXqXtJ1S0hFJbJMKKBqKJJL1nQAdsVRES-JC1qK-dkfz6Md5y5DboNwrmaKXppmV4V0_Ul4XjQh3lxzVD_H5F_j6AsKdL2ZqwTXf-8BEY&file_name=/QQ20190617-212203.png

下载系统镜像并解压

X-WRT的下载界面里选择x86 64bits (MBR dos)下载后并解压文件

https://kod.erf172.tk/index.php?user/publicLink&fid=a3bbT-kMXex9s9EcmiVXWSLXiXhmDcDmcROIf_oSo99qB8iw5hwZpZiWok9ggnQvt1Fzd73BPBaxP2hk9Sr4x9-_Ukc__DWothq4GEUpxdr9qVZvAnB6CWU2qg3jsUqArNQrYi-yQ0Df_vESiNqV8bmJv5lQVteXD6c&file_name=/QQ20190606-162015.png

将镜像写入到优盘内

注意,写入镜像会清除优盘的所有数据,请注意备份文件

Windows
  1. 下载etcher并安装
  2. 插入优盘,打开etcher,选择下载好的镜像并选择优盘写入

etcher

Linux && Mac

打开终端,输入以下命令

1
2
diskutil list #查看电脑里优盘的路径,比如我的是disk4
dd if=/Users/fzx172/Downloads/x-wrt-5.0-b201905172119-x86-64-combined-ext4.iso of=/dev/disk4 #写入镜像

https://kod.erf172.tk/index.php?user/publicLink&fid=9587Im2yKb_-BrZYSWKRLZf4UCrsDSn8ATMAKmZHsstjWTe6-UDRJmk4rVjEdZUvH-i17a07gx-zTyFD3YSYdPNBIwYxEcV7ViveDIQbPyc7iX9eiyAYm6X-r_EwaPjcw3J34kxF38GDPjvFqfkQ6RJMf7spjTSJXq8&file_name=/QQ20190617-212446.png

镜像写入成功后可能会提示无法访问,忽略即可
https://kod.erf172.tk/index.php?user/publicLink&fid=9dfba5tvl_ejWDcQ8LuwoRLBi3ZvBqUE7FVuyogyOUHFpFoUbIgLPorWik2BL88-bn-DEZNgfNoc5dsAezzO5TEkyhzVQ8wKlD24pWGtsCjqjCY5MbVlMyit56N7SVNwGrP2igXM1lFAHD4uQK-EST_mw_vB-tmtD9M&file_name=/QQ20190617-214204.png

PVE虚拟机的创建以及启动

  1. 打开PVE的后台,选择创建虚拟机,具体配置的话视情况而定即可

https://kod.erf172.tk/index.php?user/publicLink&fid=f93cqX13Zguz1rbazxS-JurS9x0-tcbUXXLbCSyRP2pzIkx92pEVw9Q3RkRjyNO2w_fk0a2t2EQ5vEbDrAM3pEkbz9J6pK_hmOQTmpwNWsoj848HQCJxNXydjyfac-Js_vZXLrW_ashXjwYGZuI8K7jJFTzueWZ5WZE&file_name=/QQ20190618-173829.png

  1. 创建完成,将优盘插到主板上,选择点击添加>USB设备,并选择你的优盘

https://kod.erf172.tk/index.php?user/publicLink&fid=3ce5aIowq38V4i_T4_HY-f6AGAOhY4h9T_mc8QRuQ95qrloykxWDK7ZSW0vR3oafAyT_TXLKjIPnuoMA2zkVAqQG_wcuCsezbdyJycQ5DbFcQVq5tQhpp7N9M46TLwhFdn0bebZGuwVix-uZSkEgwMTWLzHacvmOLNs&file_name=/QQ20190618-174253.png

  1. 添加成功后,启动虚拟机,按住ESC键直至出现引导界面

  2. 选择你的优盘作为启动设备,然后稍等片刻即可进入系统

https://kod.erf172.tk/index.php?user/publicLink&fid=f455sRW3HsRBY-m9Ga7lyHn2YVf-NbGYVUdJJAeSfRJ5ZUUtWp84cysZkUjLxzF3Pnbcrdoy-BSFVcRtNc0Z4RRVfGh5O7dNi2Cw6LAsSEaY7Y_-ZTw_lLvwEaQG_sZ11kW0HscDDBVVpbtY0mkitr6InGM93L0gMig&file_name=/QQ20190620-090019.png

将镜像写入系统磁盘中

路由器的默认账户和密码分别是rootadmin,登陆后执行以下命令

1
2
fdisk -l #查看系统的磁盘,比如,我创建的磁盘为/dev/sda,U盘为/dev/sdb
dd if=/dev/sdb of=/dev/sda #将镜像写入

https://kod.erf172.tk/index.php?user/publicLink&fid=e52eElLoQCweSs7OKmRikGvsbZU-zNGx1xdCB_yEFiMIag3vXBqHMO4hyAXWe8P9CKqNxxBMrQC2pOXPZIxPqf6CugGs-UciJPOK5sc_R3dyLHBHJWoyZGpBN86ukdu_HMWIQbrzM7a9BLh8h2jecS5FtTVQUeD_PKQ&file_name=/QQ20190620-091521.png

此时重启拔掉优盘,路由系统便可以从硬盘启动

编译mentohust进行校园网的拨号

硬件连接

由于我的主机只有一个网口,于是乎我单独购买了一块PCI千兆网卡用来连接校园网。

关闭虚拟机,进入虚拟机的硬件设置,添加一块网卡,桥接设备选择PCI网卡

启动虚拟机,发现系统可以识别到网络,但是无法正确连接,此时我们则需要编译mentohust来进行校园网拨号

编译mentohust

一开始我尝试使用macOS直接进行编译,然而经历了无数次尝(翻)试(车)之后,我跑路了。。。。。然而并没有
后来发现了一个神奇的东西叫做docker,然后用docker编译成功了docker一时爽,一直docker一直爽

下载并安装docker
  1. 前往docker官网下载docker的安装包安装并打开

  2. 打开终端,依次执行以下命令

    1
    2
    3
    4
    docker pull openwrtorg/packages-cci #拉取镜像
    docker images #查看当前镜像的ID ,比如我的是472dadf87bcc
    docker run --name openwrt -itd 472dadf87bcc /bin/bash #创建一个名为openwrt的容器
    docker exec -it openwrt /bin/bash #为当前容器分配一个伪终端

https://kod.erf172.tk/index.php?user/publicLink&fid=63964b9Da4cterVjIvLLS5-2Q-aXsb-q1u2ZngtlqaBtsDuHaBvDAwWIk1s5Z4ckuAYNXjSR0lntqFT2WhHmikGHxdIreGgY_h6Q8HjZqRAALHUNtQJWwUFg1USOtgdEw_laqe0c10ywOH1QfsDEdQIOee6bl6S85qM&file_name=/QQ20190617-230606.png

此时,编译的环境就ok了,下面我们就可以编译mentohust了

编译mentohust

教程和源代码,我参考了这位大佬的教程,将自己的膝盖奉上

  1. 下载并更新openwrt的源代码

    下载代码的时候可能会相当慢,自备工具

    在刚才的伪终端中,依次执行以下命令

1
2
3
4
5
6
7
cd ~
git clone https://git.openwrt.org/openwrt/openwrt.git #下载源码
cd openwrt/
./scripts/feeds update
./scripts/feeds install -a
git clone https://github.com/KyleRicardo/MentoHUST-OpenWrt-ipk.git package/mentohust ##下载mentohust源码
make menuconfig # 配置make文件

https://kod.erf172.tk/index.php?user/publicLink&fid=8145sZtOx3yaVfqhQNRoCTi_Rfut94c_z3c3I-h3Cvjn4_qsxmlvVvWMxmE6CWRpRoBbMiXZUTrU6qeFHNHJN__fxyf0gZr-TizcT6S-fK20iFjIR_8LELrUC3C95O1PIhDDY3iT_Vkw3cgHCGQtCqMfyLImb8JAIxw&file_name=/QQ20190618-110006.png

https://kod.erf172.tk/index.php?user/publicLink&fid=98ecl0VQKOtlqilHhJmHWZCPdTCxl5E5R9pRGAZZTI5si_8rgTwbXA-8ULgBu2sZUeOF8Se0kGbgZgjUh_m2QOh2kvOS1nit50hYpXio6yvjhxsv_CIHp55k6_wJ0BGQOhoaHgPOj4vVzKZ2NzRpoJy3yo7PR2yPIJA&file_name=/QQ20190618-110603.png

https://kod.erf172.tk/index.php?user/publicLink&fid=9d8cS24opTb9J_ZAKWAOmSUZJOzaYyllbyOLENK6evgOmUHiARkxoVV0WFHX654RSu94T3LnbGDuST8BJrqytbR4WForuZZ-qo-dh_DxIoYi0me_3_ii8POFvKmj_92N2xNi1lJ8BGyOo5EbpN8DV72ufqz_M2il-g0&file_name=/QQ20190618-110716.png

  1. 配置make文件

在伪终端中,依次选择以下内容

1
2
3
Target System  > x86    
Subtarget > x86_64
Network > Ruijie > mentohust ##使用空格键确定,即以模块方式编译

https://kod.erf172.tk/index.php?user/publicLink&fid=3633A08PiUr0TGJGBtq_CGTKEjOGH2svOEmJFH0K6RJStsR4SF9pa1hM2f65qSxkZL2UXTCh5iGMMoDb7pDUvpsZgsDB9dSp3dyMT4rTgR8gwG6W65lUwh7yEd3zSNUvkI20WcltORf8fthaPldgQJVxdZ02vxpLRCk&file_name=/QQ20190618-110858.png

按TAB键保存,然后退出即可

  1. 编译文件

保存make文件之后,依次执行以下命令

1
2
3
make tools/install V=s 
make toolchain/install V=s
make package/mentohust/compile V=s

编译时间可能会比较长,请耐心等待

https://kod.erf172.tk/index.php?user/publicLink&fid=269c79srcxufVEG0OUZe5k0kTtgH1_X71n5og_inm9kuwai5kw3NhPklt4q0I-zwYeCdHp-IPFiMdhwMzdvvO6qfaxfe9Ny5yDDV0hxuKYXzYVmpCokFCx53J069D6Zdj6A9McE8oEi3QOa4d-g-1ZyjG1fryeDlg_M&file_name=/QQ20190618-125256.png

注意,编译的时间可能会比较长,如果想要多线程编译,那么请在上述命令前执行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|-

在桌面上即可看见生成的安装包了

https://kod.erf172.tk/index.php?user/publicLink&fid=2516d8GhwREWiX8nJTO6HcwJ5zmDk0JRMrx7343IPgv7oAy0VZh3a_0AiulaVoWSaqZL_TjhHqXbEYGN5XL-Jcm0MjiPDPYzZwFCowKWuywJOAY8lMEaX9VGzhG9eU8zK_sXxhzr3Z0lQBK9YBhu4l71Cg-sxOcv3RQ&file_name=/QQ20190618-125354.png

进行拨号

  1. 在PVE的后台管理界面启动openwrt的远程管理界面,获取当前ip
1
2
service firewall stop #先关闭防火墙,否则可能会无法访问
ifconfig

https://kod.erf172.tk/index.php?user/publicLink&fid=da70Lm2xQE2qEfgIWEot0eK9lrrnZU-qPQIrVjIRRqZ6izFVr8fB0B2CyV_3hT_W-lCTl9xNePaIslP-YCjnzKRctiBTNnQK_VZLeK9DM1VXovZgmT5y8OziayCJ7f7J1mmz_ArtmGDOXK0hvsw7M7972xzuKQUA0pI&file_name=/QQ20190620-091822.png

我们可以看到有两个ip,这里我们使用192.168.32.108的地址登录

  1. 使用浏览器登录软路由的后台管理界面,进行如下设置
1
2
3
系统 > 管理权 > ssh访问
允许 SSH 密码验证
允许 root 用户凭密码登录

https://kod.erf172.tk/index.php?user/publicLink&fid=fa6aYm6OR19cvWgPmbBQ6LeBg2sopiZny8_-zLRF3uu4yMB6rlnftNod8CsVg43vl3Lqaex93gJDHDLLCNZvp21Aw5PTUqdLJNjH8BmM1-2e-_uzNmI8lS0VC9_xTo0CggGNfIlPwR_hwwcCggv13DdJt8DfqtfBMlI&file_name=/QQ20190620-172723.png

  1. 上传文件
1
scp ~/Desktop/mentohust_0.3.1-1_x86_64.ipk root@192.168.32.108:/root
  1. 拨号

ssh 路由器后台,执行以下命令

1
2
3
opkg install mentohust_0.3.1-1_x86_64.ipk
ifconfig ##查看当前连接校园网的网卡的名称
mentohust -uyouraccount -pyourpassword -nyournetwork -d2 -a1 #不同学校的登录方式不同,需要多次尝试不同的参数

如果提示发送心跳包以保持在线,则证明拨号成功,倘若没有拨号成功,可以查看输出日志来判断什么问题

https://kod.erf172.tk/index.php?user/publicLink&fid=08f9d8oCWbYRiGmeTrsZm3r1pAx_ANqMDSyyfdQyYcrv26CLFtEjZ1tsFaewLhkUryg11HvhiqWQ4632h_kNMVQOV4QlJ5OnLrjzhUC1GZBCBctrmLIFcgG8LCdozgyjwEj4RRIsuhTNFvg8RnFz3kQTNIYu8uHtTQo&file_name=/QQ20190620-173410.png

启用多拨

mentohust检测运行状态通过是加锁打开mentohust.pid文件,如果加锁成功则说明没有运行,反之运行。所以我们要修改mentohust.pid的文件名才能多拨
同理,它的配置文件存放在/etc/mentohust.conf中, 我们还要修改mentohust.conf的文件名才能够保证每个拨号程序能够独立运行

修改代码的话可能会比较繁琐,甚至用有可能会出现编译错误。所以我们使用另一种方式来修改拨号文件

下载16进制编辑器

16进制编辑器有很多,我在这里使用了iHex,可以直接去App Store 去下载。Win平台可以使用WinHex

修改mentohust程序文件

  1. 将mentohust文件复制到本地
1
scp root@192.168.32.108:/usr/sbin/mentohust ~/Desktop
  1. 使用iHex打开文件,分别搜索mentohust.pidmentohust.conf。并将其修改为1entohust.pid1entohust.conf后保存。文件名为1entohust

https://kod.erf172.tk/index.php?user/publicLink&fid=c8ffMc1ilf1-G9XoWiK3TKA9GwTWAGReT9RHKWZFyq21DFYb14-Vn8fthRwB4cUuigtIiFWToResCXU96JhC95LOj3e5HplaS79Q1glfxGAe2sQ-p_1gDvD2on7X-HuTDFrNaksSPT_hEC_D7Hs4qPKhFZJwEdTu4Qo&file_name=/QQ20190620-173957.png

  1. 重复以上的步骤,知道达到你想要的多拨数量

注意,使用16进制修改器修改时只能替换,不能添加字符!

  1. 将修改好的文件上传至路由器的/usr/sbin/
1
scp ~/Desktop/1entohust root@xxx.xxx.xxx.xxx:/usr/sbin

启用路由器的多拨功能

  1. 浏览器登录路由器管理后台,进行如下设置
1
2
3
4
5
6
7
8
网络 > 多拨 >
启用多拨
多拨数量选择你想要的数量
保存并应用
网络 > 接口 > 设备配置
修改接口为桥接的网卡
Mac地址修改为一个固定值 #十分重要!!!
保存并应用

一定要将几个虚拟网口的MAC修改成固定值!!!,否则重启后回因为网口Mac地址改变而导致拨号失败!!!

  1. 拨号测试

重复上述步骤即可

创建开机自启和定时拨号任务

到这里,路由器拨号就成功了。但是,每次重启就要登录后台拨号,掉线后还要继续拨号。体验太差

开机自启
  1. 记录一下当前拨号成功的mentohust命令

  2. ssh登录路由器后台,修改/etc/rc.local文件

  3. 将命令复制到文件里面保存即可

https://kod.erf172.tk/index.php?user/publicLink&fid=b723YzePoi7FVasNqhuRRWgAAXnKpA_62bJTFlNz8zuvmExjAaZ_l-QIAOdceWD7BICD9GEQS1g_SzYqFd0Vkzsy4PUVhO6XA4pMxiDzaC5TZCLe-HnZL2vLbtD5hHatoQjlnDx5PbGHIr9A_1CwrfWVhI0DcWVU7nE&file_name=/QQ20190620-174141.png

定时拨号

使用网页登录路由器后台,在定时任务中输入如下内容

1
*/5 * * * *  mentohust -u121212 -p1212121 -neth0 -d2 -a1  #每5分钟执行一次

如果定时任务没有启动的话,可以在终端执行service cron start启动定时任务功能

https://kod.erf172.tk/index.php?user/publicLink&fid=786a53UJuIK2yxTXtIvyn8Qzq46Ei1-E1uMIDO6FkZ2kwgDz1RR46AP8WdPHqftH9n5sq465GMgfmeweiieq0_E67A6DgCWbFSZQDyppIeJyEMfeUh6AvwsnizLrI7Uv3nvadMigWIqcsJ1Dm_x_zGVAO5VKKntGyag&file_name=/QQ20190620-174629.png

与硬件路由器连接

硬路由的系统我依旧采用了openwrt,不过大部分的路由器的设置方式是一样的

路由器设置

浏览器后台登录管理界面,进行和WiFi有关的设置

取消dhcp

保存

连接

将路由器上lan口和软路由的另一个网口相连,重启开机即可

enjoy

放个速度截图23333333~

https://kod.erf172.tk/index.php?user/publicLink&fid=2684G2coNHSDfGQEhWnyURurdiH_l8LAC6tkirn5hHmb4rHWcksNjTH5ZPuj5esR3AjynsxsGHvRbzyXs1Jn92NvZYfvK3MJKMgyw1uWUMMDs_AdrmTlqpNQh4u9AeRvenSu8yKnGcJuGVsZwaj-V3uQNzmgNyu-2WM&file_name=/QQ20190620-180416.png

这速度只能以三个字形容,舒服了其实网速还可以再往上的,但是没有账号了

后记

折腾了半天终于算是弄完了,撒个花庆祝一下并没有


扫码领红包

 评论




博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议

本站使用 Volantis 作为主题 , 总访问量为 字数统计:26.6k。 载入天数...载入时分秒...