本文主要是介绍使用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,命令如下:(一下所有操作我都会给出相应的命令,可以极大方便设置 - 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,等等 - /interface pppoe-client
- add add-default-route=no allow=mschap2,mschap1,chap,pap dial-on-demand=no \
- use-peer-dns=yes max-mtu=1492 max-mru=1492 name=pppoe-out1 interface=wan1 \
- default-route-distance=0 keepalive-timeout=60 disable=no \
- user="PPPoE账户" password="密码"
- add add-default-route=no allow=mschap2,mschap1,chap,pap dial-on-demand=no \
- use-peer-dns=yes max-mtu=1492 max-mru=1492 name=pppoe-out2 interface=wan2 \
- default-route-distance=0 keepalive-timeout=60 disable=no \
- user="PPPoE账户" password="密码"
- add add-default-route=no allow=mschap2,mschap1,chap,pap dial-on-demand=no \
- use-peer-dns=yes max-mtu=1492 max-mru=1492 name=pppoe-out3 interface=wan3 \
- default-route-distance=0 keepalive-timeout=60 disable=no \
- user="PPPoE账户" password="密码"
- add add-default-route=no allow=mschap2,mschap1,chap,pap dial-on-demand=no \
- use-peer-dns=yes max-mtu=1492 max-mru=1492 name=pppoe-out4 interface=wan4 \
- default-route-distance=0 keepalive-timeout=60 disable=no \
- user="PPPoE账户" password="密码"
- add add-default-route=no allow=mschap2,mschap1,chap,pap dial-on-demand=no \
- use-peer-dns=yes max-mtu=1492 max-mru=1492 name=pppoe-out5 interface=wan5 \
- default-route-distance=0 keepalive-timeout=60 disable=no \
- user="PPPoE账户" password="密码"
复制代码 五个PPPoE添加完成,如图所示,当前面标记为R时,便是该线路已连接。
2)配置NAT规则 点击左边IP》firewall》NAT,然后点击“+”,chain选择srcnat,out-interface选择pppoe-out1,Action页的action选择masquerade地址伪装;重复添加,直至选择玩所有pppoe-out*; - /ip firewall nat
- add chain=srcnat out-interface=pppoe-out1 action=masquerade
- add chain=srcnat out-interface=pppoe-out2 action=masquerade
- add chain=srcnat out-interface=pppoe-out3 action=masquerade
- add chain=srcnat out-interface=pppoe-out4 action=masquerade
- 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下,故在此处添加策略路由,如图所示 - /ip firewall mangle
- add chain=prerouting dst-address=10.227.0.0/16 action=accept in-interface=lan
复制代码 ②:标记wan流量 标记所有传入的连接,以保证传输时走同样的线路。多次添加,直至wan5。 - /ip firewall mangle
- add chain=prerouting in-interface=wan1 connection-mark=no-mark action=mark-connection \
- new-connection-mark=wan1_mark
- add chain=prerouting in-interface=wan2 connection-mark=no-mark action=mark-connection \
- new-connection-mark=wan2_mark
- add chain=prerouting in-interface=wan3 connection-mark=no-mark action=mark-connection \
- new-connection-mark=wan3_mark
- add chain=prerouting in-interface=wan4 connection-mark=no-mark action=mark-connection \
- new-connection-mark=wan4_mark
- add chain=prerouting in-interface=wan5 connection-mark=no-mark action=mark-connection \
- new-connection-mark=wan5_mark
复制代码 ③:创建PCC规则 此处可以使用Src.Address标记,也可以使用In.Interface选择lan口进行标记。 PCC策略时从0开始计数的,即5/0、5/1………5/4,总共五个规则 - /ip firewall mangle
- add chain=prerouting in-interface=lan connection-mark=no-mark dst-address-type=!local \
- per-connection-classifier=both-addresses-and-ports:5/0 action=mark-connection new-connection-mark=wan1_mark
- add chain=prerouting in-interface=lan connection-mark=no-mark dst-address-type=!local \
- per-connection-classifier=both-addresses-and-ports:5/1 action=mark-connection new-connection-mark=wan2_mark
- add chain=prerouting in-interface=lan connection-mark=no-mark dst-address-type=!local \
- per-connection-classifier=both-addresses-and-ports:5/2 action=mark-connection new-connection-mark=wan3_mark
- add chain=prerouting in-interface=lan connection-mark=no-mark dst-address-type=!local \
- per-connection-classifier=both-addresses-and-ports:5/3 action=mark-connection new-connection-mark=wan4_mark
- add chain=prerouting in-interface=lan connection-mark=no-mark dst-address-type=!local \
- per-connection-classifier=both-addresses-and-ports:5/4 action=mark-connection new-connection-mark=wan5_mark
复制代码 ④:创建动态路由 动态路由分为prerouting和output两个部分,这里需要添加十条mangle规则。 - /ip firewall mangle
- add chain=prerouting connection-mark=wan1_mark in-interface=lan action=mark-routing new-routing-mark=route1_mark
- add chain=prerouting connection-mark=wan2_mark in-interface=lan action=mark-routing new-routing-mark=route2_mark
- add chain=prerouting connection-mark=wan3_mark in-interface=lan action=mark-routing new-routing-mark=route3_mark
- add chain=prerouting connection-mark=wan4_mark in-interface=lan action=mark-routing new-routing-mark=route4_mark
- add chain=prerouting connection-mark=wan5_mark in-interface=lan action=mark-routing new-routing-mark=route5_mark
- add chain=output connection-mark=wan1_mark action=mark-routing new-routing-mark=route1_mark
- add chain=output connection-mark=wan2_mark action=mark-routing new-routing-mark=route2_mark
- add chain=output connection-mark=wan3_mark action=mark-routing new-routing-mark=route3_mark
- add chain=output connection-mark=wan4_mark action=mark-routing new-routing-mark=route4_mark
- add chain=output connection-mark=wan5_mark action=mark-routing new-routing-mark=route5_mark
复制代码 Mangle List
⑤:创建路由表 点击左侧IP》Routes,在Routes页中点击+添加路由表 - /ip route
- add dst-address=0.0.0.0/0 gateway=pppoe-out1 routing-mark=route1_mark check-gateway=ping
- add dst-address=0.0.0.0/0 gateway=pppoe-out2 routing-mark=route2_mark check-gateway=ping
- add dst-address=0.0.0.0/0 gateway=pppoe-out3 routing-mark=route3_mark check-gateway=ping
- add dst-address=0.0.0.0/0 gateway=pppoe-out4 routing-mark=route4_mark check-gateway=ping
- add dst-address=0.0.0.0/0 gateway=pppoe-out5 routing-mark=route5_mark check-gateway=ping
复制代码
⑥:创建故障转移路由表 注意Distance,第一个pppoe-out1使用1,第二个使用2,如此类推,这样故障转移才有意义。 - /ip route
- add dst-address=0.0.0.0/0 gateway=pppoe-out1 distance=1 check-gateway=ping
- add dst-address=0.0.0.0/0 gateway=pppoe-out2 distance=2 check-gateway=ping
- add dst-address=0.0.0.0/0 gateway=pppoe-out3 distance=3 check-gateway=ping
- add dst-address=0.0.0.0/0 gateway=pppoe-out4 distance=4 check-gateway=ping
- 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 - /ip dns
- set allow-remote-requests=yes servers=114.114.114.114,223.5.5.5
- /ip dns cache flush
复制代码
第三步:设置LEDE(OpenWRT)
可以在ESXi中新建一个只有虚拟网卡(Port Group组,具体含义见上篇帖子)的LEDE,也可以在现有的LEDE上编辑。 删掉LEDE所有的wan口网卡,使用vSphere Client客户端进入LEDE的控制台,或者ssh,编辑/etc/config/network,使其内容如下 注:eht0必须为Port Group组下的网卡 - config interface 'loopback'
- option ifname 'lo'
- option proto 'static'
- option ipaddr '127.0.0.1'
- option netmask '255.0.0.0'
-
- config interface 'lan'
- option ifname 'eth0'
- option proto 'static'
- option ipaddr '192.168.1.254'
- option netmask '255.255.255.0'
- option gateway '192.168.1.253'
- option dns '192.168.1.253'
-
- config interface 'wan'
- option proto 'static'
- option ifname 'eth0'
- option ipaddr '192.168.1.252'
- option netmask '255.255.255.0'
- 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 门户文章 0 魔力币 412 魔法值 0 注册时间 2016-2-24 | 2# 发表于 2016-11-14 09:31:48 来自手机 | 只看该作者 |
这篇关于使用RouterOS多拨均衡负载,LEDE(OpenWRT)提供其它功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!