mwan3實現負載均衡分析

使用的配置環境:openwrt的x86系統;每個接口都是獨立的網口,局域網中,擁有唯一的mac地址;
1.配置多wan口;

(1).在/etc/config/network中,配置對應網口的信息,這裏我將eth1配置成wan1了;注意:metric值一定要與wan的不同;



(2).在/etc/config/firewall中,配置wan1的防火牆規則,將wan1加入到option name wan對應的接口列表中,如下式:



(3).重啓network和firewall;
/etc/init.d/mwan3 restart
/etc/init.d/network restart

2.使用mwan3,實現多wan時的負載均衡;
(1), 在mwan3的配置文件中/etc/config/mwan3配置wan1的信息;
配置如下:
注意:(因爲本人是在界面上配置的,所以部分配置信息在文件在的位置在後面)
(1).配置成負載均衡時,wan1的metric值和weight值要與wan口的完全相同;
(2).做備份時,metric值weight值大的,作爲備用線路;

注:此處policy可以配置多條的,每個接口對應的member也可以多個,當配置特殊路由時,將相應的配置寫在balanced之前,如:按80端口只走wan1等,相應的配置可以查資料;



(2).配置完成後,重啓mwan3;
/etc/init.d/mwan3 restart

(3).結果
以上配置完成後,監聽eth0 ,eth1端口,查看包的情況;本人,eth0對應wan,10M的寬帶;eth1對應的wan1,20M的寬帶,下載速度,能達到30M,截圖如下;
注意:本人試過使用相同網關的線路,不能實現帶寬疊加;



3.mwan3實現負載均衡的原理;

(1).關於策略路由:

root@Lepton:/# ip rule s
0:      from all lookup 128
1:      from all lookup local
1001:   from all iif eth0 lookup main
1002:   from all iif eth1 lookup main
2001:   from all fwmark 0x100/0xff00 lookup 1
2002:   from all fwmark 0x200/0xff00 lookup 2
2254:   from all fwmark 0xfe00/0xff00 unreachable
32766:  from all lookup main
32767:  from all lookup default
root@Lepton:/#


(2).路由表如下:

root@Lepton:/# ip route
default via 192.168.1.2 dev eth0  proto static  src 192.168.1.103
default via 172.16.8.1 dev eth1  proto static  src 172.16.8.121  metric 1
172.16.8.0/24 dev eth1  proto static  scope link  metric 1
172.16.8.1 dev eth1  proto static  scope link  src 172.16.8.121  metric 1
172.16.9.0/24 dev br-lan  proto kernel  scope link  src 172.16.9.2
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.103
192.168.1.2 dev eth0  proto static  scope link  src 192.168.1.103
root@Lepton:/#


(3).關於防火牆規則:

上圖爲規則在防火牆的對應關係,mwan3_policy_balanced中,使用mode random probability 模塊,使得wan上有50%的包,打上(0x100/0xff00);剩下的包,打上(0x200/0xff00);
而源地址不爲wan網關的包,只要匹配到(0x100/0xff00)就走mwan3_iface_wan;(這裏就是爲什麼對相同網關,無法做到帶寬疊加的原因),剩下的同理,匹配(0x200/0xff00 )走mwan3_iface_wan1.

root@Lepton:/# iptables -t mangle -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
mwan3_hook  all  --  anywhere             anywhere
fwmark     all  --  anywhere             anywhere

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
mssfix     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
mwan3_hook  all  --  anywhere             anywhere
mwan3_output_hook  all  --  anywhere             anywhere

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination

Chain fwmark (1 references)
target     prot opt source               destination

Chain mssfix (1 references)
target     prot opt source               destination
TCPMSS     tcp  --  anywhere             anywhere             tcp flags:SYN,RST/SYN /* wan (mtu_fix) */ TCPMSS clamp to PMTU
TCPMSS     tcp  --  anywhere             anywhere             tcp flags:SYN,RST/SYN /* wan (mtu_fix) */ TCPMSS clamp to PMTU

Chain mwan3_connected (1 references)
target     prot opt source               destination
MARK       all  --  anywhere             127.0.0.0/8          MARK or 0xff00
MARK       all  --  anywhere             base-address.mcast.net/3  MARK or 0xff00
MARK       all  --  anywhere             172.16.8.0/24        MARK or 0xff00
MARK       all  --  anywhere             172.16.8.1           MARK or 0xff00
MARK       all  --  anywhere             172.16.9.0/24        MARK or 0xff00
MARK       all  --  anywhere             192.168.1.0/24       MARK or 0xff00
MARK       all  --  anywhere             192.168.1.2          MARK or 0xff00
MARK       all  --  anywhere             127.0.0.0            MARK or 0xff00
MARK       all  --  anywhere             127.0.0.0/8          MARK or 0xff00
MARK       all  --  anywhere             localhost            MARK or 0xff00
MARK       all  --  anywhere             127.255.255.255      MARK or 0xff00
MARK       all  --  anywhere             172.16.8.0           MARK or 0xff00
MARK       all  --  anywhere             172.16.8.121         MARK or 0xff00
MARK       all  --  anywhere             172.16.8.255         MARK or 0xff00
MARK       all  --  anywhere             172.16.9.0           MARK or 0xff00
MARK       all  --  anywhere             Lepton.lan           MARK or 0xff00
MARK       all  --  anywhere             172.16.9.255         MARK or 0xff00
MARK       all  --  anywhere             192.168.1.0          MARK or 0xff00
MARK       all  --  anywhere             192.168.1.103        MARK or 0xff00
MARK       all  --  anywhere             192.168.1.255        MARK or 0xff00

Chain mwan3_hook (2 references)
target     prot opt source               destination
CONNMARK   all  --  anywhere             anywhere             CONNMARK restore mask 0xff00
mwan3_ifaces  all  --  anywhere             anywhere             mark match 0x0/0xff00
mwan3_rules  all  --  anywhere             anywhere             mark match 0x0/0xff00
CONNMARK   all  --  anywhere             anywhere             CONNMARK save mask 0xff00
mwan3_connected  all  --  anywhere             anywhere

Chain mwan3_iface_wan (1 references)
target     prot opt source               destination
MARK       all  --  192.168.1.2          anywhere             mark match 0x0/0xff00 /* wan */ MARK or 0xff00
MARK       all  --  192.168.1.0/24       anywhere             mark match 0x0/0xff00 /* wan */ MARK or 0xff00
MARK       all  --  anywhere             anywhere             mark match 0x0/0xff00 /* wan */ MARK xset 0x100/0xff00

Chain mwan3_iface_wan1 (1 references)
target     prot opt source               destination
MARK       all  --  172.16.8.1           anywhere             mark match 0x0/0xff00 /* wan1 */ MARK or 0xff00
MARK       all  --  172.16.8.0/24        anywhere             mark match 0x0/0xff00 /* wan1 */ MARK or 0xff00
MARK       all  --  anywhere             anywhere             mark match 0x0/0xff00 /* wan1 */ MARK xset 0x200/0xff00

Chain mwan3_ifaces (1 references)
target     prot opt source               destination
mwan3_iface_wan  all  --  anywhere             anywhere             mark match 0x0/0xff00
mwan3_iface_wan1  all  --  anywhere             anywhere             mark match 0x0/0xff00

Chain mwan3_output_hook (1 references)
target     prot opt source               destination
mwan3_track_wan  icmp --  anywhere             anywhere             icmp echo-request length 32
mwan3_track_wan1  icmp --  anywhere             anywhere             icmp echo-request length 32

Chain mwan3_policy_balanced (1 references)
target     prot opt source               destination
MARK       all  --  anywhere             anywhere             mark match 0x0/0xff00 statistic mode random probability 0.50000000000 /* wan1 1 2 */ MARK xset 0x200/0xff00
MARK       all  --  anywhere             anywhere             mark match 0x0/0xff00 /* wan 1 1 */ MARK xset 0x100/0xff00

Chain mwan3_rules (1 references)
target     prot opt source               destination
mwan3_policy_balanced  all  --  anywhere             anywhere             mark match 0x0/0xff00 /* default_rule */

Chain mwan3_track_wan (1 references)
target     prot opt source               destination
MARK       all  --  anywhere             resolver2.opendns.com  MARK or 0xff00
MARK       all  --  anywhere             resolver1.opendns.com  MARK or 0xff00
MARK       all  --  anywhere             google-public-dns-a.google.com  MARK or 0xff00
MARK       all  --  anywhere             google-public-dns-b.google.com  MARK or 0xff00
MARK       all  --  anywhere             public1.114dns.com   MARK or 0xff00

Chain mwan3_track_wan1 (1 references)
target     prot opt source               destination
MARK       all  --  anywhere             resolver2.opendns.com  MARK or 0xff00
MARK       all  --  anywhere             google-public-dns-a.google.com  MARK or 0xff00
MARK       all  --  anywhere             public1.114dns.com   MARK or 0xff00
root@Lepton:/#














發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章