1. 程式人生 > >校園網&openwrt記(十二)多線多播與mwan3

校園網&openwrt記(十二)多線多播與mwan3

  搞多線多撥的時候,手上剛好有一個8M和一個22M的移動寬頻,8M的準備不用了,但是浪費可是很罪惡的,於是想到多線多播,並使用mwan3來負載均衡。其實mwan3就是是用iptables和iproute2協同作用達到負載均衡的。iptables主要是打mark,而iproute2則是根據mark走不同的路由表。原始碼是由shell寫的,清晰簡單。這裡主要記錄一下配置過程。
  一、首先修改交換機配置,將4個lan口中的一個劃為一個新的wan口:
  剛開始如下圖(我的路由器只有一個網絡卡~埠4是wan口,對應物理裝置是eth0.2,0-3是lan口,對應物理裝置是eth0.1,eth0.1和eth0.2是通過vlan將實際物理介面eth0劃分出來的):
  這裡寫圖片描述


  修改完後如下圖,這時埠3變成了一個新的wan口,對應物理裝置為eth0.3,即通過vlan將eth0分為了eth0.1,eth0.2,eth0.3:
  這裡寫圖片描述
  在網路介面處新增新的wan介面,命名為wan2,再新增一個pppoe2,這時就有wan、wan2、pppoe、pppoe2,四個屬於防火牆wan域的介面了。
  
  二、讓wan和wan2的協議為dhcp,pppoe和pppoe2的協議為pppoe並填寫好相應的寬頻賬號和密碼。
  
  三、設定以上4個網路介面的閘道器躍點(不設定的話,mwan3無法工作)優先順序高的躍點設定小一點,比如pppoe所撥號的寬頻是22M,那麼它可以設定為10,則pppoe2設定為20,而wan和wan2只是用來訪問校內資源的,可以簡單設定為30、40。
  
  四、配置uci config第一步,配置interface,這裡只列出wan和pppoe的,其他兩個同理。假設校園網某臺伺服器為192.168.66.123,那麼能ping通它則說明我們的wan是正常連線的;我們的pppoe則ping多個常用DNS,要是ping通則說明是可以正常連線網路的。track_ip 列表是一次測試所需要測試的ip列表,reliability是指track_ip列表中幾個能ping通就說明正常,count 是對每一個ip ping幾次,timeout 是超時,interval 是每一次測試的間隔,down 是有多少次測試不正常則說明掉線,up 是有多少次測試正常則說明線上。

config interface 'pppoe'
    option enabled '1'
    list track_ip '8.8.4.4'
    list track_ip '8.8.8.8'
    list track_ip '4.2.2.1'
    list track_ip '223.5.5.5'
    option reliability '2'
    option count '1'
    option timeout '2'
    option interval '5'
    option down '3'
    option up '8'

config interface 'wan'
option enabled '1' option reliability '1' option count '1' option timeout '2' option interval '5' option down '3' option up '3' list track_ip '192.168.66.123'

  五、配置uci config第二步,配置member,設定它的權重和躍點,決定該wan的優先權。這裡的躍點指的是在同一個policy下的優先值,值越小,優先值越大,而躍點相同的幾個member將會根據它們的權重來分配比例,數值越大,比例越大。比如我這裡的22M的pppoe和8M的pppoe2可以如此設定:

config member 'pppoe_m1_w3'
    option interface 'pppoe'
    option metric '1'
    option weight '3'

config member 'pppoe2_m1_w1'
    option interface 'pppoe2'
    option metric '1'
    option weight '1'

config member 'wan_m2_w1'
    option interface 'wan'
    option metric '2'
    option weight '1'

config member 'wan2_m2_w1'
    option interface 'wan2'
    option metric '2'
    option weight '1'

  member的名字可以由interface名稱、躍點和權重來命名,pppoe和pppoe2的躍點為一組,pppoe的權重是pppoe2的3倍,因為pppoe的頻寬大概為pppoe2的3倍,wan和wan2為一組,它們只是為了訪問校園內站點,只用一個member就好了,權重不需要考慮。
  六、配置uci config第三步,配置policy,這裡開始利用各個member,制定policy。policy決定了要使用那些網路介面,並且按怎樣的比例使用它們。如:

config policy 'wan_only'
    list use_member 'wan_m2_w1'
    option last_resort 'unreachable'

config policy 'pppoe_only'
    list use_member 'pppoe_m1_w3'
    option last_resort 'unreachable'

config policy 'balanced'
    list use_member 'pppoe_m1_w3'
    list use_member 'pppoe2_m1_w1'
    option last_resort 'unreachable'

  wan_only只使用了一個member,這個member是關聯網路介面’wan’的,因為訪問校內站點而已,從其中一個校園網線走就可以了;pppoe_only只使用了關聯網路介面’pppoe’的一個member,這個policy用來以後8M寬頻過期後只有一個寬頻(22M)的情況;而balanced則使用了兩個member,它們關聯’pppoe’和’pppoe2’,使用了它們的意思就是融合這兩個寬頻,進行負載均衡的意思了。這個policy就是當前所需要使用的。
  七、配置uci config第四步,配置rule,這個則是確定怎樣的資料包應該使用怎樣的policy,最終的負載均衡或策略路由就是靠它們的了。例如:

config rule 'VPN_rule'
    option dest_ip '192.168.67.0/24'
    option proto 'all'
    option use_policy 'wan_only'

config rule 'CN_rule'
    option dest_ip '192.168.66.0/20'
    option proto 'all'
    option use_policy 'wan_only'

config rule 'default_rule'
    option dest_ip '0.0.0.0/0'
    option proto 'all'
    option use_policy 'balanced'

  VPN_rule等效於我們前邊所說的在PPTP VPN設定時新增的靜態路由,通往實驗室的電腦的資料包走校園網(wan_only);CN_rule則等效於我們要訪問校內站點所要新增的靜態路由,通往校內站點的資料包走校園網(wan_only);default_rule則是預設的規則,即其他的所有資料包都走pppoe和pppoe2(balanced,成功負載均衡則融合了兩個寬頻)。

  設定完畢以後,啟動mwan3,傳送我們的獲取許可權的udp包給伺服器,然後成功撥號後,多線多撥就成功了,下載東西理論上可以達到22+8=30M。