复购:MikroTik软路由的性能是怎么一步步被榨干的

2023-08-23 23:12:02     来源:什么值得买

本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:iN在


(相关资料图)


如果说最近这几年买的最多的数码产品品牌就有点出乎意料了,iN看了下购买清单发现MikroTik已经买了十多台了。这不女朋友家里的网络也是上了MikroTik。

一方面是比较便宜价格相当的实惠,毕竟MikroTik被称作穷人的Cisco,另一方面就是用得熟悉了,基本上任何网络需求都可以在设备上实现,同时由于自己用,身边的亲戚朋友也被安利,很多的设计和实施方式也可以最大化的复用。


但对于很多人来说MikroTik的路由器上面安装的Router OS系统相对比较陌生,似乎普通家用用户就会觉得配置和管理困难在Router OS面前弃坑的人大有人在。今天复购的事情之外咱们就来做一期Router OS路由器从“弃坑”到“入坑”再到“堪堪能用”的内容吧。

首先先说一点,Router OS系统本身还是一个被iN诟病了很久的建立在Linux内核上的软路由系统,这里就有很多大聪明觉得既然是软路由不如就使用X86软路由来安装就好了。但是,Router OS本身是为MikroTik的产品来设计的,可以说所有的X86软路由都不具备对Router OS系统的优化,甚至Router OS内的一些功能在X86内是无法打开的——这就白瞎了Router OS的设计。

所以如果只是想了解一下这个系统,那么就安装一个Router OS的虚拟机,但真正要用Router OS系统,还是乖乖的去买一个MikroTik的路由器的路由器,这点省不了。

好在MikroTik的路由器的产品线很大,价格上从几百到上万都有,丰俭由人。对于一般家庭用户来说,按照Wi-Fi需求来选择,也就是选择带有你最期待的Wi-Fi功能的最便宜路由器购买即可,例如hAP-ax2,几百块钱,但也提供了Wi-Fi6的接入能力。

通常的情况下,一台全新的MikroTik的路由器路由器接入到网络后,在一般家庭仅仅需要通过浏览器登录到192.168.88.1通过快速设置就可以完成整个路由器的设置。

设置时间不会超过1分钟,在这时候作为一般家庭用户使用就已经完全达成了目标。

这时候作为一个MikroTik的路由器和普通的家用路由器相比并没有什么不同。但是你要知道这种设置仅仅是“快速设置”。它的目的就是让路由器以默认的可以运行的状态启动起来。

Router OS和普通的软路由系统的一个巨大差别就是它将所有的网络细节和可控项目完全呈现给用户,从这一点上来看类似于OpenWRT、LEDE等软路由系统则是用最大的可能性去掩盖掉网络配置细节,从而让用户无法调优。当然了反过来说OpenWRT、LEDE等软路由完成了Router OS等同的“快速设置”功能,给傻子用傻子也会用得起来,而要真正玩转Router OS就得让你更下一番功夫了。

如果再进一步登录到Router OS的WebFlg页面,你会发现有上千个网络参数设置项目展现在你的面前。

几乎其中的每一项都可以左右你的上网体验。同时它们之中的大多数项目也可以自动的将你的网络使用不断的升级和优化。这就牵扯到你自己怎么理解网络和怎么去优化自己的路由器了。

首先咱们说初级的部分:

首先是在Router OS路由器内有三个“fast”的概念,分别为FastForward、FastPath和FastTrack,这三个部分是大部分X86软路由和虚拟机不支持的。但是它却是Router OS路由的一个很重要设计理念。

在不同的网络接口中包含大量的接收、转发和重定向功能,一般的来说大部分路由器并不区分这些流量都会将流量包重新验证一遍防火墙和转发规则。在这个过程中消耗CPU性能以及增加处理时间。在网络端口例如端到端或者内部桥接端口中启动Fast选项可以跳过不必要的包过滤和检测,让网络速度进一步提升。在默认的情况下Router OS并不开启这个选项,如果在设置过程中看到有这类的选项可以根据实际情况打开。打开后在路由器防火墙内也会建立相应的处理项目:

其次是DNS远端相应功能:

一般的情况下我们设置好Router OS路由器之后,在路由器所服务的本地网络内会将客户机的DNS指向路由器:

这时候我们就需要在路由器本身的DNS设置中指定外部网络运营商提供的DNS地址:

同时也要打开接收远端请求的选项。但是大部分路由器的接受远端请求都是双向的,来自于外部的dns查询和来自于局域网的dns查询都会让路由器进行响应。这时候你就需要在防火墙中关闭外部的DNS查询响应。这是因为现在有很多网络流氓……会用DNS查询来扫描各个网上暴露的IP。

这个现象在很多其他路由器上看不到,但是如果你做了这种防火墙丢包处理,你就会发现类似的网络攻击实际上很猖獗。例如上面的截屏虽然你可以看到仅仅只有不到50MB的DNS外部查询数据流入,但是你要知道DNS查询是一个初始命令,他会迫使你的路由器再去远端的DNS服务器中查询更多的内容数据,而且这其中还有远端服务器响应和延迟的时间。

而对于本地局域网内同一时间段正常发起的DNS查询:

你可以看出两者并不是一个数量级的消耗了吧?

再有就是安全了,给大家看一个日志:

平均每10秒钟,就有一个外部的IP希望通过尝试密码的方式获得路由器的控制权,这就是网络攻击了。

在大部分情况下这种攻击都是世界上不同地区的黑客按照地址段进行扫描然后利用密码字典来反复尝试密码所致,Router OS本质是一个linux会开放若干端口,一方面这些端口可以用来维护和访问系统,另一方面则是会导致黑客入侵。防御方法也很简单,关闭掉不需要的端口:

仅仅保留你必须需要使用的端口服务。通常的情况下,黑客入侵如果不查看日志是很难看到的,有可能会让你的局域网内的nas文件或者摄像头被搭桥到外部的网络中,如果不想忽然间成网红,那么在这个部分还是要注意一下的。

到此,你的MikroTik的路由器就进入了堪堪可用的地步了。

后面咱们再说几个提升点:

首先是接入接口,大部分Router OS都支持各种不同的物理和虚拟网络接口:

看到这张接口表的时候有的人可能就会会心一笑了。没错,依靠Router OS系统本身就可以完成99.99%的上网需求。别问这科学不科学,答案就是很科学!

不同的网络端口都可以在系统的路由表中找到:

这时候你只需要按照规则将数据了指向不同的端口就可以达到分流和优化网络的目的。

也可以指定家里的某个设备的IP地址所发出的数据到底要指向那个出口或者哪个IP地址,至于怎么用,大家就可以多多实践了这里不多说。

这里牵扯到了一个包识别和篡改的概念:Router OS可以在防火墙功能中对流经的数据包进行篡改(Mangle)

这个篡改功能主要就是给数据包加上合适的路由标签。在路由规则中路由器就可以依据篡改的标签来实现定向的转发,将数据包转发到合适的线路中。

同时,有的网站出于各种目的会做区域封锁,其实也可以依靠Router OS的系统绕过去。例如:

这个部分实际上还是利用了一个DNS劫持的功能做了一下dst-nat的操作:

直接利用不被封锁区域的IP做了一下跳板,看流媒体的时候就不会受到干扰了。核心的技术就是用到了Router OS的防火墙七层过滤的功能。将特定的目标访问进行转向:

到此为止,如果你理解这些设置的方式,Router OS系统就开始变得相当好用了。

再进阶一步:

Router OS虽然好用但是很多人会觉得日常管理和设置复杂。这件事没得说了,毕竟能让你一个参数一个参数打磨的系统并不会给你呈现一个傻瓜界面。

那么怎么降低日常使用的复杂度呢?其实这是伪命题,毕竟设置好的系统你就完全没有必要去折腾了,可以当它不存在。

但是这个系统吧又偏偏提供了一套完善的API接口,我们是可以利用程序把路由器内的设置和状态提取出来的。

例如网络状态、接入信息,甚至对路由器的重新设置都可以依靠程序进行。毕竟iN是一个屏幕痴迷者,所有的东西都希望显示在屏幕上,于是就可以再做一组程序来显示Router OS的日常:

这样需要知道的信息状态一目了然,也就省的登录到路由器上再去查看,同时一些定期的测试和操作也完全利用程序来处理。

当然了如果觉得写程序做个看板比较麻烦,看这里:

本身Router OS就带一个图表界面:

只不过显示出来的东西相对比较丑罢了。

……

……

……

其实写了这么多,Router OS的每一个项目都是可以单独开一篇文章来写的,今天这个文章就作为绪论吧。

后面大家感兴趣的内容,直接留言,然后iN安排一下具体说说。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~



标签:

包装