使用的配置環境:openwrt的x86系統;每個接口都是獨立的網口,區域網路中,擁有唯一的mac位址; 1.配置多wan口;
(1).在/etc/config/network中,配置對應網口的資訊,這裡我将eth1配置成wan1了;注意:metric值一定要與wan的不同;
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90zdaVnRXVmZONjYqljMZZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DM4IDNyQzMxEzMyIDM3EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
(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).關于政策路由:
[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_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]:/#