天天看點

mwan3實作負載均衡分析

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

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

mwan3實作負載均衡分析

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

mwan3實作負載均衡分析

(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等,相應的配置可以查資料;

mwan3實作負載均衡分析

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

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

mwan3實作負載均衡分析

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

(1).關于政策路由:

[email protected]:/# 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 [email protected]:/#

(2).路由表如下:

[email protected]:/# 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 [email protected]:/#

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

mwan3實作負載均衡分析

上圖為規則在防火牆的對應關系,mwan3_policy_balanced中,使用 mode random probability 子產品,使得wan上有50%的包,打上(0x100/0xff00);剩下的包,打上(0x200/0xff00); 而源位址不為wan網關的包,隻要比對到(0x100/0xff00)就走mwan3_iface_wan;(這裡就是為什麼對相同網關,無法做到帶寬疊加的原因),剩下的同理,比對(0x200/0xff00 )走mwan3_iface_wan1.

[email protected]:/# 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 TCPMSS clamp to PMTU TCPMSS     tcp  --  anywhere             anywhere             tcp flags:SYN,RST/SYN 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 MARK or 0xff00 MARK       all  --  192.168.1.0/24       anywhere             mark match 0x0/0xff00 MARK or 0xff00 MARK       all  --  anywhere             anywhere             mark match 0x0/0xff00 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 MARK or 0xff00 MARK       all  --  172.16.8.0/24        anywhere             mark match 0x0/0xff00 MARK or 0xff00 MARK       all  --  anywhere             anywhere             mark match 0x0/0xff00 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 MARK xset 0x200/0xff00 MARK       all  --  anywhere             anywhere             mark match 0x0/0xff00 MARK xset 0x100/0xff00

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

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 [email protected]:/#

繼續閱讀