使用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多拨均衡负载,LEDE(OpenWRT)提供其它功能_第1张图片

 

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第2张图片

 

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第3张图片


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

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

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第4张图片

 

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第5张图片


        添加虚拟机时,记得在过程中删除虚拟机硬盘。
        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。

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第6张图片


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

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第7张图片使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第8张图片


        点击左侧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
 

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第9张图片


        也可以点击左边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,如果不是的话,还请自行按照修改,如图所示

 

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第10张图片


        需要几拨,就添加几个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="密码"
复制代码
 

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第11张图片


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



       2)配置NAT规则

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第12张图片


        点击左边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
复制代码
 

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第13张图片

 

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的输入样本大大增加,使数据包平均分流到各条线路的概率也就大大增加了!

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

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第14张图片


        由于我所有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流量

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第15张图片


        标记所有传入的连接,以保证传输时走同样的线路。多次添加,直至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规则

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第16张图片


        此处可以使用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
复制代码
       ④:创建动态路由

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第17张图片

 

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第18张图片


        动态路由分为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
复制代码

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第19张图片

 

Mangle List



        ⑤:创建路由表

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第20张图片


        点击左侧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
复制代码

        ⑥:创建故障转移路由表

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第21张图片


        注意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
复制代码

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第22张图片

 

Route List



        4)配置DNS Server

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第23张图片


        点击左侧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流出,从而保证了网络服务的正常使用。


        第四步:配置无线路由器

 

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第24张图片


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


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

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第25张图片

 

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第26张图片 
 

收藏收藏122

  回复

举报

   

rrall

使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能_第27张图片

0

主题

75

帖子

428

积分

中级魔法师

Rank: 3Rank: 3

精华

0

门户文章

0

魔力币

412

魔法值

0

注册时间

2016-2-24

  • 发消息
2#

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

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

你可能感兴趣的:(使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能)