openwrt负载均衡

发布于 2021-11-04  2206 次阅读


原文地址

现在很多人家里都有了两条宽带接入,我家就重庆移动联通各一条双百兆宽带,其中移动是网线接入,内网 IP,联通是光纤接入,外网 IP,都不能多拨。顺便在这里呼吁一下,如果您家里的宽带是分配的外网 IP 并可以多拨,那么您就别玩多拨了,现在家庭宽带的外网 IP 是如此的珍贵,你一人拨几个外网 IP,路由器还 24 小时不断电占用着,营运商不够用了哪天给弄成内网 IP,大家最终都没得玩。就重庆来说,只有重庆联通还在分配珍贵的外网 IP。没有电信?不用电信好几年,自从 16 还是 17 年变成内网 IP 后(别提打电话给客服,这之前可以打电话改,后来都没了),就再也没用过电信了,而且还贵,百兆 780 一年,同为百兆,移动联通都是充话费送的,如何选择很简单了。

一、设置vlan

首先是将路由器的 LAN 口拿一个变成 WAN 口,需要配置 VLAN,这个简单,怎么把 wan 口变为 lan 口,或者把 lan 口变为 wan 口,既然要双 wan,你得首先把一个 lan 口变成 wan 口才搞得起,是不是,不然第二条宽带的网线往哪里插?
进入网络 --- 交换机选项,有些固件没有交换机这一项,那就只能干瞪眼了,去刷个有交换机功能的固件,进去后是这个样子。
pic_001.png

如上图所示,这就是你 OP 路由器的默认显示,最左边第一列,叫做 eth0.1 eth0.2 ,这里只显示了编号 1  2 , 但不是问题,你把它想成 eth0.1  eth0.2 就行了,如果还有第三行第四行,把它想像成 eth0.3 0.4 等等。
第一列,表示的是你的 lan 口,第二列表示你的原生 wan 口,为什么会这样不用了解,总之就是这么回事。那么我们将增加一个 lan 口变为 wan 口怎么办呢,点下面的添加 就行了,会添加一行编号为3, 我们参照
第二行原生 wan 口的设置就行了,如图
pic_002.png

第一次使用的小伙伴们仔细观察一下,我添加的 wan 口设置,和原生 WAN 那一行比较,找出规律,不用死记硬背,下次只要照着原生 wan 口,就能快速的设置了。比如我这样,要把 lan1 变为 wan。首先当然是要在第一行中把 lan1 的 untagged 关掉,然后在新增的第三行中打开 untagged,其它全都关,和第二行原生 wan 的规律一样。这里要注意的是 lan 口顺序,对很多路由器来说,图里的 lan1 看起来是原离原生 wan 最远那个口,但在你路由器的物理口中可能是原生 wan 旁边那个,总之顺序可能和你路由器的物理口不一样,需要插网线尝试,千万别把你正在使用这个电脑的 lan 口变成了 wan,那当你保存设置好,就连不上路由器了,解决办法是把当前电脑的网线换个口插。
这里设置完成之后,你就可以在网络 ---- 接口里面,增加一个接口,增加时选择 eth0.3,这就是刚才增加的这一行。然后设置 PPPOP 等等。

pic_003.png

理论上来讲,如果你要把原生 wan 口变成 lan 口,就把第二图中的第二行删掉,并在第一行的 wan 口中设为为 untagged,这样你的路由器就变成了一个五口交换机。如果你再增加几行照着此规律设置,可以把五个口都变成 wan。

pic_001.png

我的两条线拨好号如图所示。我将接口名称改过,WAN1 就是移动 cmcc,WAN2 就是联通 CNC,联通这条线因为是上一级路由拨好号通过 DHCP 客户端联过来的,我知道这样不太科学,但因为我家装修走线的原因,只能采用这种连接方式。为啥要取这个名字,主要是为了后面的设置更好理解,而且和 L 大的 mwan3helper 相对应,这个以后进阶篇再讲,这里先无视。

至此,您的网络己经连接好了,默认出口为 WAN(CMCC)口,即路由器原本那个 WAN 口,如果这条线断掉,会自动切换到 CNC 口,就是说负载均衡那里啥也不管,什么都不用设,你己经实现了双网自动切换:默认 CMCC 口,CMCC 断了 CNC 顶上,不知道我这样说大伙能理解吗。

PS:接口设置中进高级设置,将跃点改一下,默认两接口都是 0,需要将两接口的跃点改为不一样,比如我 CMCC 是 20,CNC 是 40

最简单的双网叠加。

一、接口

显而易见,作为一名使用 OP 路由器的玩家,并且有现成的两条宽带,仅仅是一条为另一条的备份,是不能满足我们的要求的,我们就是这么任性,就是要双网叠加,下载垃圾文件,动作片必须要满速满速再满速,同一时间只能用一条线,这和有两美女,一个那啥,另一个就只看看有啥区别。废话不多说,进网络 --- 负载均衡,开工。

下图是我的负载均衡界面,首先添加接口,如下图一所示,接口当然要两条都加上啦,接口名称需要和您在网络 -- 接口里的两条线名称一致,一个字不差,大小写相同,所以我这里就设为 cmcc 和 cnc 啦。图二中将 跟踪的主机或 IP 地址设置一下,这里表示负载均衡在启动时会 ping 设置的地址。这里我设置的 IP,第一个是本地营运商的 DNS 地址,显然这个地址对你的网来说是最快的,第二个是 114.114.114.114 作备用检查地址,如果这两个地址都 ping 不通,显然,你这条线己经断了。

pic_002.png
pic_003.png

二、成员。

接口设置好了,第二步设置成员,这里的成员表示要如何使用你的接口,如图所示。成员的名称是不能和接口一样的,必须所有不同,所以我第一个成员就设置成 cmcc_m1_w1,对应的后面的跃点数为 1,比如为 1,这里的跃点数越低就表示优先级最高,比重越高,就表示这个成员使用的接口在网络中的比重越高。这里两个成员的跃点数,比重都设为 1。就表示这两个成员优先级都一样的,占的比重也一样。

pic_004.png

三、策略。

策略就表示,你要如何使用两个成员,是要这个多一点,还是那个多一点,还是只用一个成员,还是两个一起用。既然要叠加,当然两个一起用啦。所以我这里设了一条叫做 balance的策略,表示平衡的意思,这条策略要两个成员一起用,不分彼此,那么就把两个成员都加进去。

pic_005.png

四、最后一步

马上就大功告成啦,策略设好了,最后再设规则,就是要用什么规则来使用你这条策略,听起来好象很复杂,NM 你策略都设好了,直接用就是,还搞规则干吗,这不脱了裤子放屁吗?的确,如果只搞个叠加,当然就是没事找事,但 OP 的负载均衡的强大就在于,还有很多附加玩法,而双网叠加只不过是最基础的其中之一,所以我们就原谅它这么复杂吧。

因为只需要双网叠加,我在这里就只设定了一条最简单的规则,名字叫做 balanced,如下图所示,无条件的使用刚刚那条叫做balance策略吧。

pic_006.png
pic_007.png

至此,最简单的双网叠加搞完。重启路由后进 状态 --- 负载均衡 里面就能显示双网在线啦,如图。

pic_008.png

马上测试一下是不是成功了。。

pic_009.png

妥妥的满速。。

好啦,小白基础篇就讲到这里,如果你只想要双网叠加就完成了。如何优化网络,如何指定线路,如何分流,这就是更高级一点的玩法,如果大伙有兴趣,我再做下一讲 ----- 负载均衡分流助手。。

但是,如果只作如此设置,显然是不够用的,会有一些问题,比如:为什么有时打开网页会卡,为什么有时使用网银,会提示 IP 更快频繁,拒绝操作等等,为什么一条线断了,另一条线经常要等很久才能接上。本篇的目地就是让你解决这些烦恼,愉快的使用双网,不然家人一会就在抱怨为什么以前网络都好好的,现在你越整越慢,作为在家人眼中的电脑高手,很没面子是不是?

负载均衡的进阶玩法

比如我们有了移动联通两条网线,在上一篇基础篇中己经搞好双网叠加,但这时还有问题,在 balance 策略中配置的双线叠加优先级别是一样的,就是说所有流量要么走移动要么走联通,随机走。那么问题来了,如果我要访问的网站是移动的,而这时又是通过联通线路走,显然绕了弯路。我们能不能访问移动网站就走移动线路,联通网站走联通,其它网站再随机分配?完全可以。实现在这个功能最困难的一点就是如何告诉路由哪个网站是移动哪个是联通,但现在己经不是问题,因为我们己经有了 Lean 大的 mwan3 分流助手,下面我们就要祭出这个神器。
首先做好准备工作,在负载均衡里的设置再改动一下。

一、成员

我们先进到负载均衡的 “成员” 一项,增加两个成员, 如下图所示,昨天我们的基础篇只有前两行,后面两行是今天新增的,新增这两行和前面的比起来就只有跃点从 1 变成了 2。为什么成员名称设置得这么复杂,第一是为了看见名称就知道 cmcc_m2_w1,表示的是移动接口,跃点为 2,比重为 1 的成员。第二是因为负载均衡要求接口、成员、策略、规则等所有名称

任何两个都不能一样,所以这里名称稍复杂一点也是为了不重复。

pic_004.png

二、策略

昨天的所有都不动,我们再增加两条策略,即 firstcmcc、firstcnc。从名称上的思想就表示移动优先和联通优先。如下图 firstcmcc 中添加两个成员,表示优先使用移动接口,如果移动接口断了,使用联通接口。通过跃点数来区别,跃点数越小,表示越优先。移动接口跃点数为 1,先走,如果移动断掉了,再走跃点数为 2 的联通。强调一下,这里的跃点数表示 “优先” 的意思,并不代表叠加,就是说如果移动接口是通的,流量就全走移动,当移动断了,会走联通。如果移动通,且带宽占满,流量也不会走联通,只能等待,好处是当你的网银如果是移动线路,访问的时候只走移动,那么网银就不会有问题了,另外,如果移动断线,因为有联通在后面顶着,会无缝切换到联通。firstcnc 联通优先设置和 firstcmcc 原理一样,请小伙伴自行设置。

pic_005.png

三、mwan3helper  分流助手。

上面我们己经设置了优先走移动或联通的策略,剩下的问题就是要告诉路由器,哪个网站是移动,哪个是联通,这样路由器才知道,喔,现在你访问的是移动网站,需要走移动接口,于是调用 firstcmcc 策略。以前要实现这一功能比较麻烦,需要动手在 /etc/dnsmasq.conf 里面添加网站是用的什么线路,现在就简单了分流助手会帮我们完成这一操作,下面是分流助手的界面,如果 OP 没有分流助手自己安装 IP,或者刷有助手的固件,潘多拉,OP 在软件包里都有这东西。

pic_006.png
pic_007.png

看上面这图,分流助手己经帮我们找到了国内网站的线路,比如中国移动只有 55 条,ipset 叫做 cmcc,这样方便调用,从图中看出,其实电信移动联通网站加起来也没到一半,更多的是 other,other 是啥,不知道。每种线路网站都使用 ipset 名称分好类了,下面我们在负载均衡里面使用它。

四、规则。

好了,让我们回到负载均衡,进入规则选项。。里面己经有一条我们昨天建好的规则叫 balanced,用于叠加的。。现在我们再建其它规则,比如下图这种我建好的。顺便说一下,如果有多条规则,那么是按照图中从上到下的顺序使用,就是当你访问一个网站,会优先匹配第一条规则,不行第二条,一直到最后一条,如果第一条就匹配了,就不再往下走。

pic_008.png
pic_009.png

上图是我建好的规则,比如第一条 cmccfirst (移动优先),点进去看设置,如上面右图。前两项源地址源端口是指你内网的电脑,下面目标地址和端口那是你需要访问的地址也不用管它,协议是所有协议,倒数第二项就是 ipset 名称,正好这里使用分流助手给我们分好类的移动网址,ipset 叫 cmcc,之前我讲过了。。这里就填入 cmcc,最后一项分配策略很明显,就选我之前讲的 firsetcmcc 移动优先

那么这条规则就让我们优先使用移动出口的策略,在什么条件下使用呢?就是当遇到在 ipset 里面对方网站是移动线路时,我们就优先使用移动宽带。

举一反三,小伙伴们自行设置优先联通线路的情况

最后,我来解释一下我这几条规则代表的意思,大家看明白后就可以自己按照自己的条件和偏好建立自己的规则啦

第一条,移动优先

如果对方是移动线路,就使用移动出口

第二条,联通优先

如果对方是联通线路,使用联通出口

第三条,如果对方既不是联通,又不是移动

显然大部份网站都是如此,那么如果协议是 tcp,端口是443 或 80则移动优先(你也可以设成联通优先,其实对既不是移动也不是联通的网站来说,走哪个都一样),意思是你是通过 https 或 http 浏览网站,就走移动优先。有小伙伴可能会问,这一条拿来干吗,移动网站走移动,联通走联通,剩下的大部份无所谓走哪条都行,这条不是脱了裤子放屁吗,这条主要是为了保障网银只优先走一条线路,哪果使用网银,是移动或联通线路,当然就匹配前两条啦,没有问题,但刚才说了,不是大部份都是其它线路么,那么其它线路中如果是这两个端口,网银都这两端口,要么 http,要么 https,这是网页版的,如果网银是什么其它特别的端口,那可以自己想办法把端口扫出来,再添加。这样网银就会优先走移动这条线,不会出现 IP 更换导致使用出问题

第四条,昨天设定的双网叠加的规则

如果一条访问请求以上三条规则都不匹配,那么第四条肯定匹配。。我们通过 P2P 下载,大部份都会走这一条,从而达到下载带宽叠加的目的。。

最后

如果您能耐心的看到这里,那再告诉大家一个小技巧,可能很多朋友家里的双线带宽是不同的,可能移动 100M,联通又是 200M,那么就得在 成员 里设置比重啦。

比如我家的移动联通号称是双百兆,但在实测中,移动是 LAN 接入,实际不到 100M,联通是光纤,又莫名其妙的接近 150M,在双网叠加的时候如果都是 1:1 的比重,显然不能体现出效果最大化,于是我们需要在成员里将叠加使用的成员比重设定一下。

pic_010.png

如上图所试,我叠加其实只使用到了前两个成员,后面都是优先的,不管它。。前两个成员的跃点数都为 1,都是最优先,所以是叠加使用,后面的比重,我移动的算 100M,联通算 150,那么两者比重就是 2:3,在叠加使用的时候会按照 这个流量比重进行叠加,显然如此设计才能让我的带宽最大化,实际效果如图。

pic_011.png

这是比重设为 1:1 的

pic_012.png

这是比重设为 2:3 ,成果显著


或许明日太阳西下倦鸟已归时