小米路由器青春版装linux,比较费心的折腾 篇二:小米路由器青春版折腾负载均衡...

比较费心的折腾 篇二:小米路由器青春版折腾负载均衡

2020-06-04 11:00:23

3点赞

10收藏

8评论

创作立场声明:本文的核心目的是对于比较久远的硬件进行折腾,提及的软件可以在官网、软件包或者github找到。

开篇预警

本文截图较多,但是前期操作不可复制,也没有截图下来,所以就真的没法保留了。本文的具体操作是可以自己搜索到的,作者也能保证本文的具体操作都是走过了一遍,确保没有问题。

本文其实是一个不完全版本,等七月份会有补充截图,并把这段话删除。如果有玩过openwrt的,对于其中的操作应该不会陌生;如果是linux基础比较好的,在没有完全截图引导下也可以以文字问辅助完成整套操作(才不是大作业没时间了没顾及截图

8b4e637d9f99970d3867805a7f23af44.png )。

为什么要折腾嵌入式系统的大作业

感觉网速叠加还是非常有用的

这里面会涉及到如下内容:路由器刷机、telnet漏洞、mwan3负载均衡、macvlan虚拟网卡。

小米路由器青春版介绍

小米路由器青春版,具体型号R1CL,CPU是MT7628AN,575MHz的速度,内存64M,闪存16M,micro-USB接口5V1A供电,100Mbps的WAN和LAN。

这个路由器其实比较早了,感觉还挺有折腾的价值。

打开telnet、ssh

打开telnet

这里实际上是利用了一个web漏洞才可以打开telnet,同时后续版本已经封了这个漏洞,需要刷入非常早期的开发板固件才可以调用对应API。

在初次设置完成之后,会进入一个类似于miwifi.com/cgi-bin/luci/;stok=xxx/web/home#router这样的网址,此时需要把stok=xxx后面的内容换成/api/xqsystem/set_name_password?oldPwd=当前路由器管理密码&newPwd=新密码,这样可以重新设置后续ssh、telnet的root密码,否则root的密码和当前路由管理密码不一样照样进不去。成功的返回码是{code:0}。

在刚才的基础之上,把原有部分换成/api/xqnetwork/set_wifi_ap?ssid=tianbao& encryption=NONE&enctype=NONE&channel=1%3B%2Fusr%2Fsbin%2Ftelnetd,这样才能打开telnet模式。这一步时间大约需要1分钟,不要急着刷新。成功的返回值是{"msg":"未能连接到指定WiFi(Probe timeout)","code":1616},返回码有可能不同。

打开ssh

之后利用powershell、linux的bash,putty等等支持telnet的软件进入路由器,IP默认情况下是192.168.31.1,用户名root,密码是刚才设置的新密码。进去以后直接使用三个命令,可能需要等一段时间才能结束。sed -i ":x;N;s/if [.*; thenn.*return 0n.*fi/#tb/;b x" /etc/init.d/dropbear

/etc/init.d/dropbear start

nvram set ssh_en=1; nvram commit

刷入breed、openwrt

刷入breed

在打开ssh之后,用ssh登录路由器,IP、用户名和密码不变。在另一个窗口用scp命令上传breed.in作为刷入的文件,或者使用WinSCP的scp传输协议连接到路由器,上传到/tmp/即可(如果路径不一样,需要修改下面的命令)。

之后使用mtd命令刷入。刷机需要等待一段时间,并且会重启。mtd -r write /tmp/breed.bin Bootloader

进入breed的方法是断电后按住reset键的同时插入电源(要先按住再插入电源)。第一次刷完之后重启会自动进入。刷入breed不会影响原系统。进入breed时,只有有线才可以连接到路由器,无线不开启,IP针对不同的包不一样,我用的是192.168.1.1。

刷入openwrt

电脑有线连接之后可以打开这个界面,默认在“系统信息”选项卡,上传openwrt固件即可,会要求二次确认的。

本次刷机也需要一定时间和重启,重启之后可以按照相同方法回到breed。

d7d8bab0c96c9440d9948af9f65d0237.pngbreed界面

安装macvlan、mwan3与设置

在一个单WAN口的地方怎么可能做到负载均衡?很显然这是多个网口的事情,于是我们可以做类似于单线多拨的操作,通过虚拟网卡和负载均衡达到这样的效果。

更新与安装macvlan、mwan3

首先使用ssh登录路由器Terminal,然后使用opkg更新已有库文件。opkg update

opkg list-upgradable

opkg upgrade *(这里没有*这个符号,仅仅用于指代你看到的所有软件包)

希望zdm能给代码提供一个比较好的支持(markdown大法好)

之后下载安装macvlan、mwan3和web界面设置。opkg install kmod-macvlan mwan3 luci-app-mwan3

产生新的网卡

用ip命令生成网卡。ip link add link eth0.2 name veth0 type macvlan

ifconfig veth0 up

检查可以用ifconfig查询veth0是否出现。

356657a3f4ed306385341c6fc53f24e3.png用ifconfig检查一下虚拟化是否成功

在Network->Interfaces点击Add new interface生成接口并设置,此时才可以拨号。记得把网关越点设置到和其他都不一样(默认是0)。

a7aead86eed54ae18ea6c14e408ca44c.pngvwan0的设置1-网关越点

02fb9d7d222ece9301f25b98e6170400.pngvwan0的设置2-划分物理接口

a510eb8c26a8eab901a0a1ab290d4c74.pngvwan0的设置3-划分VLAN

负载均衡

打开负载均衡页面,可以发现默认自带一系列规则,但是这些规则会导致在关闭默认wan之后无法通过其他wan上网,但是电脑本身还是处在联通状态。正是因此才需要调整

删除掉Interfaces标签页下的所有的东西,新增wan和vwan0,Enabled选择启用,Metric填入之前设计好的网关越点。Members也全部删除,新增wan和vwan0,权重一样。最终在policies的策略全部删除,只留下balanced,成员选择wan、vwan0,last resort选择default。

7f3b5ea32b30b768f870cee30d866a4a.png给mwan添加interfaces

8143ba4a21c891d380a0882846b3628a.png删除默认规则后,给mwan设置仅有的balance规则

至此,所有设置完成。如果需要添加多个的话只需要多写几个vwan即可。

实际体验与方案的不足

通常来说有mac就可以拿到IP,所以在有mac和IP的情况下,只需要验证关闭一部分的情况下依旧可以连通网络,和在所有都联通的情况下,上网流量的分配大致按照预计进行。本实验中依旧只用wan和vwan0。关闭wan或者vwan0,网页打开bilibili.com,查看能否打开主页。如果wan关闭以后无法打开,可能是因为你的mwan3安装并且没有设置好;如果是vwan0关闭也是同理,也有可能是因为wan本身网络就不对。

两者都打开,随意打开一个视频(或者能观察到明显网络流量的其他动作,比如下载),过一段时间观察两者的分配情况。

最后的结果是,通过两个端口都可以单独上网;同时通过两个端口上网时,可以看到端口的流量是差不多的,基本做到了负载均衡。

这个方案其实有一个问题:在刷入openwrt之后,/etc/rc.local写入ip link命令会不生成网卡,但是把那段命令的eth0.2改成eth0就可以做到生成虚拟网卡,但是无法拿到IP(显然)。这显然是涉及到eth0.2生成时间的问题,就需要花费时间去阅读启动shell才可以定位到对应位置,已知的是从S95done这一块调用的rc.local,直接从后面开始应该没有问题。

c2ad9c123c4d84295e50d901fd065b58.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2019蓝桥杯省赛---java---C---6(旋转)

题目描述 问题描述图片旋转是对图片最简单的处理方式之一,在本题中,你需要对图片顺时 针旋转 90 度。 我们用一个 nm 的二维数组来表示一个图片,例如下面给出一个 34 的 图片的例子:1 3 5 7 9 8 7 6 3 5 9 7这个图片顺时针旋转 9…

linux container 原理,容器概念与Linux Container原理

一、容器与LxC在像KVM等众多主机虚拟化解决方案中,对每一个虚拟机实例提供的是从底层硬件开始一直到上层的环境,在硬件级进行资源划分。虚拟机的内核是运行在硬件内核之上的。由于每个虚拟实例都有自己的运行内核,所以各实例之间有非常好的隔…

微软建议Windows 10开发人员升级到Visual Studio 2017

既然Visual Studio 2017已经发布,那就意味着微软开始专注于让其成为默认开发平台。Creators Update SDK的发布(面向即将到来的Windows 10 Creators Update)就是这种转变的一个很好的例子。该SDK只有Visual Studio 2017支持。 幸运的是&#…

p2p linux 开源项目,权威开源项目(linux系统、sip、live555)

1、IT知识交流(语言工具、系统问题、开源项目交流)http://stackoverflow.com/tags2、linux系统www.kernel.orghttp://www.gnu.org/copyleft/lesser.html3、pjsuahttp://www.pjsip.org/1、freeswitch1、opensipshttp://opensips.org/pub/opensips/4、live555http://www.live555.…

在Visual Studio中使用任何C++编译器

原文发表时间: 3/07/2017原文发表地址: Use any C Compiler with Visual Studio 微软Visual Studio 2017支持几种C编译器以适应各种各样的代码库。除了很多人熟悉的微软Visual C编译器外, Visual Studio2017还支持Clang, GCC以及其他针对某些平台的编辑器。 这篇文…

2020蓝桥杯省赛---java---B---8(数字三角形)

题目描述 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分【问题描述】上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。 对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最 大的和。路径上的每一…

ASP.NET Core MVC 源码学习:Routing 路由

前言 最近打算抽时间看一下 ASP.NET Core MVC 的源码,特此把自己学习到的内容记录下来,也算是做个笔记吧。 路由作为 MVC 的基本部分,所以在学习 MVC 的其他源码之前还是先学习一下路由系统,ASP.NET Core 的路由系统相对于以前的…

linux netfilter 过滤数据包,Netfilter-iptabes报文过滤框架(一)

什么是Netfilter/iptableNetfilter/iptables是Linux内核内置的报文过滤框架,程序可以通过该框架完成报文过滤、地址转换(NAT)以及连接跟踪等功能。Netfilter/iptables由两部分组成,一部分是Netfilter的"钩子(hook)",这些"钩子…

AI项目十九:YOLOV8实现目标追踪

若该文为原创文章,转载请注明原文出处。 主要是学习一下实现目标追踪的原理,并测试一下效果。 目的是通过YOLOV8实现人员检测,并实现人员追踪,没个人员给分配一个ID,实现追踪的效果。 也可以统计人数。在小区办公楼…

2020蓝桥杯省赛---java---B---7(单词分析)

题目描述 【问题描述】 小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组 成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不 住一些单词,他准备不再完全记忆这些单词,而是根据单…

Dapper源码学习和源码修改(下篇)

继上篇Dapper源码学习和源码修改 讲了下自己学习Dapper的心得之后,下篇也随之而来,上篇主要讲的入参解析那下篇自然主打出参映射了。 好了,废话不多说,开始吧。 学习之前你的先学习怎么使用Dapper,这个我在上篇都提过…

2020蓝桥杯省赛---java---B---6(成绩分析)

题目描述 时间限制: 1.0s 内存限制: 512.0MB 本题总分:15 分【问题描述】 小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是 一个 0 到 100 的整数。请计算这次考试的最高分、最低分和平均分。【输入格式】 输入的第一行包…

2020蓝桥杯省赛---java---B---5(排序)

题目描述 思路分析 01231391,而01231314105。 让下标为j的字符提到最前,正好达到100次交换,这样也满足了最小字典序,也可以验证一下。 代码实现 package TEST;public class Main {public static void main(String[] args) {St…

ASP.NET Core MVC 源码学习:MVC 启动流程详解

前言 在 上一篇 文章中,我们学习了 ASP.NET Core MVC 的路由模块,那么在本篇文章中,主要是对 ASP.NET Core MVC 启动流程的一个学习。 ASP.NET Core 是新一代的 ASP.NET 应用程序,它是跨平台的,并且不依赖于 IIS&…

2020蓝桥杯省赛---java---B---9(子串分值和)

题目描述 时间限制: 3.0s 内存限制: 512.0MB 本题总分:25 分【问题描述】 对于一个字符串 S,我们定义 S 的分值 f(S) 为 S 中出现的不同的字符个 数。例如 f(”aba”) 2,f(”abc”) 3, f(”aaa”) 1。 现在给定一个字符串 S[0…n−1]&…

GitHub 贡献第一的微软开源软件列表

作者|木环 编辑|小智 在GitHub上贡献最多的公司,不是Facebook,也不是Google,而是微软。InfoQ对微软数个较受社区欢迎的项目进行了整理,以飨读者。希望开源的精神,能给技术社区带来更多的实惠&am…

android 画布控件,Android canvas画图操作之切割画布实现方法(clipRect)

本文实例讲述了Android canvas画图操作之切割画布实现方法。分享给大家供大家参考,具体如下:android切割画布的历程不算很难,可是理解起来也比较麻烦,这里写一下我的理解 但是不一定正确:canvas.clipRect(30,30,70,Reg…

老司机实战Windows Server Docker:5 Windows Server Dockerfile葵花宝典

前面两篇(简单运维1、简单运维2)介绍了一些Windows Server Docker相关的基本运维知识。今天这一篇,Windows Server Dockerfile葵花宝典,涵盖了许多典型场景的Windows Server下的Dockerfile实例,并且每一个都包含可直接…

2020蓝桥杯省赛---java---B---2(寻找 2020)+测试txt

题目描述 text 0020000002202020002220002022002222202022020200022200020200222022002202202020020022200202000000002200222002022220222202220000222202200200202220200222200222202200000220220020202200022002200200200222000202220202002000000202200200220022020002022…

新起点!新征程!

好久没有更新公众号了,其一是因为最近这段时间有点“忙”(迫于其他原因,目前包括本公众号一共运营4个公众号,精力不充沛),其次就是犯了懒病不想动。其中博客中也没有更新比较有质量的博文了。感觉自己堕落颓…