小米路由器青春版装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,一经查实,立即删除!

相关文章

mybatis入门(一)之基础安装

转载自 mybatis入门 安装 要使用 MyBatis&#xff0c; 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。 如果使用 Maven 来构建项目&#xff0c;则需将下面的 dependency 代码置于 pom.xml 文件中&#xff1a; <dependency><groupId>org.mybatis</g…

安装windows 10操作系统

一、常见的操作系统简介&#xff1a; 1.Microsoft Windows 2.UNIX 3.Linux 4.MAC OS 5.MS-DOS 二、win10的亮点&#xff1a; 1.”开始”菜单的超级进化 2.通知中心 3.Edge浏览器 4.Cortana小娜 5.虚拟桌面 6.Windows Hello(刷脸登录) 7.Univer APP 8.Phone Compa…

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

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

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

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

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

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

mybatis入门(二)之XML 映射配置文件

转载自 mybatis XML 映射配置文件 MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置&#xff08;settings&#xff09;和属性&#xff08;properties&#xff09;信息。文档的顶层结构如下&#xff1a; configuration 配置 properties 属性settings 设置typeAliases…

无处不网络

一、Internet简介&#xff1a; 是一个国际互联网&#xff0c;将成千上万的计算机连在一起的计算机网络。涉及书籍、教育、电影、时事、运动、艺术、文化、技术开发等内容。 二、Internet的发展史&#xff1a; ARPAnet–>TCP/IP–>NSFnet–>ANSnet–>internet 三…

179. 最大数---LeetCode---JAVA

class Solution {public String largestNumber(int[] nums) {int n nums.length;String numsToWord[] new String[n];for(int i0;i<n;i){numsToWord[i] String.valueOf(nums[i]);}//[233&#xff0c;23333]排序后变为[23333&#xff0c;233]Arrays.sort(numsToWord,(a,b)…

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编译器外&#xff0c; Visual Studio2017还支持Clang, GCC以及其他针对某些平台的编辑器。 这篇文…

mybatis入门(三)之Mapper XML 文件

转载自 mybatis Mapper XML 文件 Mapper XML 文件 MyBatis 的真正强大在于它的映射语句&#xff0c;也是它的魔力所在。由于它的异常强大&#xff0c;映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比&#xff0c;你会立即发现省掉了将近 95%…

linux的for循环怎么写,Linux命令:for循环写法总结

for循环写法总结关于shell中的for循环用法很多&#xff0c;感觉很全面&#xff0c;所以就转过来研究研究&#xff0c;嘿嘿...1、 for((i1;i<10;i))[[email protected] ~]# for ((i1;i<3;i )); do echo $(($i*4)); done482、在shell中常用的是for i in $(seq 10)[[email p…

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

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

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

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

mybatis入门(四)之动态SQL

转载自 mybatis 动态SQL 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验&#xff0c;你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格&#xff0c;还要注意去掉列表最后一个列名的逗号。…

win10操作技巧

1.wind:返回桌面 2.wine:打开计算机 3.winx:打开Windows移动中心 4.设置桌面&#xff1a;设置–》个性化–》背景 5.设置主题&#xff1a;设置–》个性化–》主题&#xff08;锁屏&#xff09; 6.设置开始菜单 7.winp&#xff1a;选择投影 8.winl:锁屏 9.winr:打开运行…

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

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

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

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

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

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

维护win10注册表

一、早期的注册表都是以后缀为.ini的配置文件 二、打开注册表编辑器&#xff1a;winr–>输入regedit–>回车 三、注册表结构&#xff1a;树状结构&#xff0c;分为5子树&#xff0c;每个项里面都有多个子项构成 四、子树的各项信息&#xff1a; 1.HKEY_LOCAL_MACHINE…