使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能

2023-10-09 04:40

本文主要是介绍使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   在上篇帖子中(ESXi安装LEDE,设置多拨并使用无线路由器做AP)我写了如何使用ESXi安装OpenWRT,并设置负载均衡的方法,依旧是那句话,折腾无止境,变打算重试已经抛弃许久的RouterOS。
        RouterOS为何许,想必不用我介绍了。功能的强大,也必定会导致配置的复杂,致使很多人望却止步。我接触RouterOS很久了,但是也只会些皮毛。不顾哦对金今天教程所多讲的,这些皮毛也足够了。
        在本次设计中,RouterOS只用作路由(均衡负载)和DNS Server的功能。其它诸如越墙、QOS等功能,依旧通过LEDE提供,当然,还有AC87U提供无线和DHCP服务。

        本次教程共分为几大步骤,分别是安装RouterOS配置多拨配置DNS Server配置LEDE配置无线路由器
        PS:如果是像我一样,RouterOS和LEDE都是安装在同一个虚拟机中,请看上篇帖子设置VLAN,链接在开头。

        PS:此教程基于五拨,后面不再赘述。
        PS:下表是设备与IP对照表

设备/接口

IP地址

路由器

192.168.1.1

LEDE(OpenWRT)

192.168.1.254

RouterOS

192.168.1.253

DNS Server

192.168.1.253

网关

192.168.1.254

       第一步:安装并初步配置RouterOS
        首先说明一下,RouterOS由RouterOS和Cloud Hosted Router两种,第一种是安装在实体机中的,第二种是安装在各种虚拟机中。由于我是要在ESXi中安装,当然选择了CHR版。CHR版共有四种License,分别是free、P1、P10、P-Unlimited。价格分别如下所示


        我个人购买了P1 License,需要说明的是,这个License绑定的是你的账号,而非硬盘。
        License的话,各自按需所求。讲真,$45都比不上你们很多人路由器价钱的一半。

        只是尝试的话,可以申请一个MikroTik的账号,然后通过CHR登陆,可以获得60天的试用。

        只要是RouterOS,不论版本,都可以按照教程设置多拨。
        
        1)新建ESXi端口组

 

 


        需要为RouterOS设置一个VLAN ID为11的独立端口组,这样可以免去在RouterOS里面的配置,较为省事。
        如果直接使用上个帖子中新建的OpenWRT独立端口组,并没有任何问题,只是个人强迫症,必须新建一个。
        在此我只展示vSphere web Client上的步骤。
        进入Web Client后选择Networking,在之中分布式交换机上点右键,新建“分布式端口组”,切记VLAN type中选择“VLAN”,VLAN ID为11。

       2)新建RouterOS虚拟机
        虚拟机类型就选择Linux下面的就行,具体步骤,依旧不再赘述。

 


        添加虚拟机时,记得在过程中删除虚拟机硬盘。
        MikroTik官方提供了vmdk文件,下载链接,还请自行下载。找到Cloud Hosted Router部分,版本我选择了6.36.4 (Bugfix only),格式vmdk,下载之后,通过vSphere Client上传到建立虚拟机的目录下边,然后编辑虚拟机设置,添加硬盘即可。

       3)配置RouterOS的IP地址
        启动RouterOS,查看路由器中RouterOS分配的IP地址,记下该地址。
        推荐使用winbox管理RouterOS,下载地址 http://www.mikrotik.com/download/winbox.exe
        打开winbox,Connect to填入RouterOS的IP地址,Login填入用户名admin,密码为空,然后点Connect。


        点击左侧Interfaces,可以看到所有的网络接口都在这里显示出来。此时TX和RX一直由显示的就是你的LAN口,比如图中就是ether1,双击该接口,将名称改为lan;依次编辑其它接口,分别改为wan1到wan5。


        点击左侧IP》Address,出现Address List窗口,点击该窗口的+号,Address键入你指定RouterOS的内网地址和掩码,比如我在此输入192.168.1.253/24(192.168.1.254被LEDE占用) Network填入192.168.1.253(和前面设置的IP一样),Interface选择lan,然后点击OK
 


        也可以点击左边New Terminal,使用cli,命令如下:(一下所有操作我都会给出相应的命令,可以极大方便设置
  1. ip address add address=192.168.1.253/24 network=192.168.1.253 interface=lan
复制代码        然后使用使用新的ip地址登陆


       第二步:配置多拨
        该教程中的负载均衡方式是PCC(Per connection classified),如果对ECMP和NTH方式感兴趣,还请自行Google或者查询官方wiki。

        这篇教程中的资料是参考了官方wki的 Manual:PCC  Manual:DNS等页面,以及 Load Balancing Using PCC & RouterOS,链接在此,感谢之。

    1)添加PPPoE拨号

        点击左侧PPP,然后在Interface页面点击+,选择PPPoe Client,General页name用默认的,Interfaces选择wan1;Dial out页,分别填入PPPoE的账户名和密码,不要勾选add-default-route,勾选user peer DNS,Server按需填写,否则留空,AC name留空,max-mtu、max-mru一般是1492,如果不是的话,还请自行按照修改,如图所示

 


        需要几拨,就添加几个PPPoE,注意Interfaces依次选择,即第一个PPPoE使用wan1,第二个使用wan2,等等
 
  1. /interface pppoe-client
  2. add add-default-route=no allow=mschap2,mschap1,chap,pap dial-on-demand=no \
  3.     use-peer-dns=yes max-mtu=1492 max-mru=1492 name=pppoe-out1 interface=wan1 \
  4.     default-route-distance=0 keepalive-timeout=60 disable=no \
  5.     user="PPPoE账户" password="密码"
  6. add add-default-route=no allow=mschap2,mschap1,chap,pap dial-on-demand=no \
  7.     use-peer-dns=yes max-mtu=1492 max-mru=1492 name=pppoe-out2 interface=wan2 \
  8.     default-route-distance=0 keepalive-timeout=60 disable=no \
  9.     user="PPPoE账户" password="密码"
  10. add add-default-route=no allow=mschap2,mschap1,chap,pap dial-on-demand=no \
  11.     use-peer-dns=yes max-mtu=1492 max-mru=1492 name=pppoe-out3 interface=wan3 \
  12.     default-route-distance=0 keepalive-timeout=60 disable=no \
  13.     user="PPPoE账户" password="密码"
  14. add add-default-route=no allow=mschap2,mschap1,chap,pap dial-on-demand=no \
  15.     use-peer-dns=yes max-mtu=1492 max-mru=1492 name=pppoe-out4 interface=wan4 \
  16.     default-route-distance=0 keepalive-timeout=60 disable=no \
  17.     user="PPPoE账户" password="密码"
  18. add add-default-route=no allow=mschap2,mschap1,chap,pap dial-on-demand=no \
  19.     use-peer-dns=yes max-mtu=1492 max-mru=1492 name=pppoe-out5 interface=wan5 \
  20.     default-route-distance=0 keepalive-timeout=60 disable=no \
  21.     user="PPPoE账户" password="密码"
复制代码
 


        五个PPPoE添加完成,如图所示,当前面标记为R时,便是该线路已连接。



       2)配置NAT规则


        点击左边IP》firewall》NAT,然后点击“+”,chain选择srcnat,out-interface选择pppoe-out1,Action页的action选择masquerade地址伪装;重复添加,直至选择玩所有pppoe-out*;
 
  1. /ip firewall nat 
  2. add chain=srcnat out-interface=pppoe-out1 action=masquerade
  3. add chain=srcnat out-interface=pppoe-out2 action=masquerade
  4. add chain=srcnat out-interface=pppoe-out3 action=masquerade
  5. add chain=srcnat out-interface=pppoe-out4 action=masquerade
  6. add chain=srcnat out-interface=pppoe-out5 action=masquerade
复制代码
 

 

nat List



        3)配置Mangle规则
        PCC均衡负载便是在这部分进行主要配置的,同时这个部分也是最难理解的地方,还请仔细思考。
        关于PCC均衡负载,网上已有大量的资料、脚本,这部分教程只是严格按照官方文档进行的,并没有任何改进的地方。

        在开始这部分教程之前,我先对不同的“Per Connection Classifier”(PCC,可以理解成负载均衡算法)进行介绍,这段话摘自 《PCC 负载均衡 - EDCwifi 林利钢》 感谢之。
both-address
是以源地址和目的地址作为输入值。
如果数据包的源地址和目的地址相同,则连接被分为一组,将得到相同的哈希值。
然后把所有组进行平分标记(当然也可以不平分标记)。这些数据包将被分配到同一条外网链接上。
both-address是比较稳定的一种设置方法,但不是很平均。

 
src-address and port
对相同源地址和相同源端口的数据包来说,将会被分配到同一条线路上。这样的话,对于目的地址相同的数据包,也有可能分别走不同的线路,这在对安全性要求比较高的环境中,是不能被接受的。

 
src address
这种是负载均衡里面最稳健的。在某些环境中,甚至用both adress都会出现问题。但是src-address是所有模式里面均衡效果最差的,因为兼容性和均衡效果不可得兼。

 
both addrss and ports
是均衡效果最好的。因为带有port的输入参数,引入了port,而port数值从1-65535,因而hash的输入样本大大增加,使数据包平均分流到各条线路的概率也就大大增加了!

        ①:创建策略路由(非必需,如添加,需要根据实际情况自行修改)


        由于我所有wan拨号的到的ip地址都是在10.227.0.0/16下,故在此处添加策略路由,如图所示
  1. /ip firewall mangle
  2. add chain=prerouting dst-address=10.227.0.0/16  action=accept in-interface=lan
复制代码
        ②:标记wan流量


        标记所有传入的连接,以保证传输时走同样的线路。多次添加,直至wan5。
  1. /ip firewall mangle
  2. add chain=prerouting in-interface=wan1 connection-mark=no-mark action=mark-connection \
  3.     new-connection-mark=wan1_mark
  4. add chain=prerouting in-interface=wan2 connection-mark=no-mark action=mark-connection \
  5.     new-connection-mark=wan2_mark
  6. add chain=prerouting in-interface=wan3 connection-mark=no-mark action=mark-connection \
  7.     new-connection-mark=wan3_mark
  8. add chain=prerouting in-interface=wan4 connection-mark=no-mark action=mark-connection \
  9.     new-connection-mark=wan4_mark
  10. add chain=prerouting in-interface=wan5 connection-mark=no-mark action=mark-connection \
  11.     new-connection-mark=wan5_mark
复制代码
       ③:创建PCC规则


        此处可以使用Src.Address标记,也可以使用In.Interface选择lan口进行标记。
        PCC策略时从0开始计数的,即5/0、5/1………5/4,总共五个规则
  1. /ip firewall mangle
  2. add chain=prerouting  in-interface=lan connection-mark=no-mark dst-address-type=!local \
  3.     per-connection-classifier=both-addresses-and-ports:5/0 action=mark-connection new-connection-mark=wan1_mark 
  4. add chain=prerouting  in-interface=lan connection-mark=no-mark dst-address-type=!local \
  5.     per-connection-classifier=both-addresses-and-ports:5/1 action=mark-connection new-connection-mark=wan2_mark 
  6. add chain=prerouting  in-interface=lan connection-mark=no-mark dst-address-type=!local \
  7.     per-connection-classifier=both-addresses-and-ports:5/2 action=mark-connection new-connection-mark=wan3_mark 
  8. add chain=prerouting  in-interface=lan connection-mark=no-mark dst-address-type=!local \
  9.     per-connection-classifier=both-addresses-and-ports:5/3 action=mark-connection new-connection-mark=wan4_mark 
  10. add chain=prerouting  in-interface=lan connection-mark=no-mark dst-address-type=!local \
  11.     per-connection-classifier=both-addresses-and-ports:5/4 action=mark-connection new-connection-mark=wan5_mark
复制代码
       ④:创建动态路由

 


        动态路由分为prerouting和output两个部分,这里需要添加十条mangle规则。
  1. /ip firewall mangle
  2. add chain=prerouting connection-mark=wan1_mark in-interface=lan action=mark-routing new-routing-mark=route1_mark
  3. add chain=prerouting connection-mark=wan2_mark in-interface=lan action=mark-routing new-routing-mark=route2_mark
  4. add chain=prerouting connection-mark=wan3_mark in-interface=lan action=mark-routing new-routing-mark=route3_mark
  5. add chain=prerouting connection-mark=wan4_mark in-interface=lan action=mark-routing new-routing-mark=route4_mark
  6. add chain=prerouting connection-mark=wan5_mark in-interface=lan action=mark-routing new-routing-mark=route5_mark
  7. add chain=output connection-mark=wan1_mark action=mark-routing new-routing-mark=route1_mark     
  8. add chain=output connection-mark=wan2_mark action=mark-routing new-routing-mark=route2_mark
  9. add chain=output connection-mark=wan3_mark action=mark-routing new-routing-mark=route3_mark
  10. add chain=output connection-mark=wan4_mark action=mark-routing new-routing-mark=route4_mark
  11. add chain=output connection-mark=wan5_mark action=mark-routing new-routing-mark=route5_mark
复制代码

 

Mangle List



        ⑤:创建路由表


        点击左侧IP》Routes,在Routes页中点击+添加路由表
  1. /ip route
  2. add dst-address=0.0.0.0/0 gateway=pppoe-out1 routing-mark=route1_mark check-gateway=ping
  3. add dst-address=0.0.0.0/0 gateway=pppoe-out2 routing-mark=route2_mark check-gateway=ping
  4. add dst-address=0.0.0.0/0 gateway=pppoe-out3 routing-mark=route3_mark check-gateway=ping
  5. add dst-address=0.0.0.0/0 gateway=pppoe-out4 routing-mark=route4_mark check-gateway=ping
  6. add dst-address=0.0.0.0/0 gateway=pppoe-out5 routing-mark=route5_mark check-gateway=ping
复制代码

        ⑥:创建故障转移路由表


        注意Distance,第一个pppoe-out1使用1,第二个使用2,如此类推,这样故障转移才有意义。
  1. /ip route
  2. add dst-address=0.0.0.0/0 gateway=pppoe-out1 distance=1 check-gateway=ping
  3. add dst-address=0.0.0.0/0 gateway=pppoe-out2 distance=2 check-gateway=ping
  4. add dst-address=0.0.0.0/0 gateway=pppoe-out3 distance=3 check-gateway=ping
  5. add dst-address=0.0.0.0/0 gateway=pppoe-out4 distance=4 check-gateway=ping
  6. add dst-address=0.0.0.0/0 gateway=pppoe-out5 distance=5 check-gateway=ping
复制代码

 

Route List



        4)配置DNS Server


        点击左侧IP 》 DNS设置DNS Server,在Server部分填入所需DNS服务器,可以填写超过两个,务必勾选Allow Remote Requests
  1. /ip dns
  2. set allow-remote-requests=yes servers=114.114.114.114,223.5.5.5
  3. /ip dns cache flush
复制代码

        第三步:设置LEDE(OpenWRT)

        可以在ESXi中新建一个只有虚拟网卡(Port Group组,具体含义见上篇帖子)的LEDE,也可以在现有的LEDE上编辑。
        删掉LEDE所有的wan口网卡,使用vSphere Client客户端进入LEDE的控制台,或者ssh,编辑/etc/config/network,使其内容如下
        注:eht0必须为Port Group组下的网卡
  1. config interface 'loopback'
  2.         option ifname 'lo'
  3.         option proto 'static'
  4.         option ipaddr '127.0.0.1'
  5.         option netmask '255.0.0.0'
  6.  
  7. config interface 'lan'
  8.         option ifname 'eth0'
  9.         option proto 'static'
  10.         option ipaddr '192.168.1.254'
  11.         option netmask '255.255.255.0'
  12.         option gateway '192.168.1.253'
  13.         option dns '192.168.1.253'
  14.  
  15. config interface 'wan'
  16.         option proto 'static'
  17.         option ifname 'eth0'
  18.         option ipaddr '192.168.1.252'
  19.         option netmask '255.255.255.0'
  20.         option gateway '192.168.1.253'
复制代码       此段的意义是,设置LEDE的管理为192.168.1.254,同时作为网关存在,这样依旧可以使用LEDE上的$$、QOS等等服务;同时指定LEDE的WAN出口为RouterOS,并将wan口网关修改为192.168.1.253,使网络数据从RouterOS流出,从而保证了网络服务的正常使用。


        第四步:配置无线路由器

 


        修改路由器中的DHCP服务器,默认网关为192.168.1.254,DNS 服务器为192.168.1.253


      最后附上多拨同时工作的图和测速图

 

 
 

收藏收藏122

 回复

举报

  

rrall

0

主题

75

帖子

428

积分

中级魔法师

Rank: 3Rank: 3

精华

0

门户文章

0

魔力币

412

魔法值

0

注册时间

2016-2-24

  • 发消息
2#

 发表于 2016-11-14 09:31:48 来自手机 | 只看该作者

nat配置一条不行吗 我只配了一条我看也行

这篇关于使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/170405

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

C++11第三弹:lambda表达式 | 新的类功能 | 模板的可变参数

🌈个人主页: 南桥几晴秋 🌈C++专栏: 南桥谈C++ 🌈C语言专栏: C语言学习系列 🌈Linux学习专栏: 南桥谈Linux 🌈数据结构学习专栏: 数据结构杂谈 🌈数据库学习专栏: 南桥谈MySQL 🌈Qt学习专栏: 南桥谈Qt 🌈菜鸡代码练习: 练习随想记录 🌈git学习: 南桥谈Git 🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈🌈�

让树莓派智能语音助手实现定时提醒功能

最初的时候是想直接在rasa 的chatbot上实现,因为rasa本身是带有remindschedule模块的。不过经过一番折腾后,忽然发现,chatbot上实现的定时,语音助手不一定会有响应。因为,我目前语音助手的代码设置了长时间无应答会结束对话,这样一来,chatbot定时提醒的触发就不会被语音助手获悉。那怎么让语音助手也具有定时提醒功能呢? 我最后选择的方法是用threading.Time

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]