關於部落格
最會的事 就是這個不會和那個不會此網誌以 轉貼 文章為主
  • 223930

    累積人氣

  • 15

    今日人氣

    2

    追蹤人氣

兩條專線做 Load Balance

http://blog.yam.com/gavint/article/2191386

 

最近工作上討論到要如何將工廠的兩條專線做 Load Balance,原本想用之前換下來的一台國產 Load Balance 來做,但據了解那台 Load Balance 不是很穩定,雖然最後決定由廠商建議的 L3 Switch 及 Router 來解決,但這也讓我想研究看看 Linux 是否可以當做一台 Load Balance。

 之前 kernel 2.4 的版本中,需要重新編譯 kernel 才能支援頻寬合併,目前從 kernel 2.6  之後就都已支援了,現在整理出下面的步驟。


一、基本設備與環境
至少三張網路卡
eth0=1.1.1.1 ← 假設為第一條 ADSL 的 Public IP
eth1=2.2.2.2 ← 假設為第二條 ADSL 的 Public IP
eth2=10.0.0.1 ← Lan 的 Private IP


二、首先要將本機的 IP Forward 功能 Enable
/etc/sysctl.conf
-----------------------------
net.ipv4.ip_forward=0 ← 將 0 改為 1,修改後需重新開機方能生效
以後開機後自動啟動 IP Forward。

若是希望能馬上生效,而不需重新開機,請輸入下列指令,
echo 1 > /proc/sys/net/ipv4/ip_forward ← 馬上修改記憶體中的參數,此方法在下次重新開機後會回到 /etc/sysctl.conf 裡所設定的預設值。


三、設定合併頻寬,下列為 Shell Script
#!/bin/bash
# 設定 NAT
iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -j MASQUERADE

# 設定 LAN
LAN="10.0.0.0" # subnet
LANM="24" # netmask

# 設定 Wan_1
WAN1="1.1.1.1" # 第一條 ADSL 的固定 IP
GW1="1.1.1.254" # 第一條 ADSL 的 Gateway

# 設定 Wan_2
WAN2="2.2.2.2" # 第二條 ADSL 的固定 IP
GW2="2.2.2.254" # 第二條 ADSL 的 Gateway

# 設定第一條 ADSL 的 ip rule
# pref 為 priority,值越小 priority 越高
# from 設定來源 IP
# table 設定 table 的編號
ip rule add pref 100 from $WAN1 table 100
ip route add default via $GW1 table 100

# 設定第二條 ADSL 的 ip rule
ip rule add pref 101 from $WAN2 table 101
ip route add default via $GW2 table 101

# 設定 Lan 的 ip rule
ip rule add pref 102 to $LAN/$LANM table 102
ip route add $LAN/$LANM dev eth2 table 102

# 設定自動切換兩條路由
# equalize 參數將 Packet 分散到不同的線路上
# weight 比重設定
ip route replace default equalize nexthop via $GW1 dev eth0 weight 1 nexthop via $GW2 dev eth1 weight 1

# 清除 route cache
ip route flush cache


四、額外補充
1. 如果要指定內部某一 IP 從特定路由對外連線,例如 10.0.0.100 一定要由 1.1.1.254 對外連線。
ip rule add from 10.0.0.100 table 100

2. 如果要指定連線到某一特定網段或 IP,一定要由特定路由對外連線,例如要到 http://www.hinet.net(203.66.88.89)一定要由 2.2.2.254 對外連線。
ip route replace 203.66.88.89 via 2.2.2.254

ip rule add to 203.66.88.89 table 101


資料參考來源:
1.
酷!學園::ecmp雙線下載
2. Linux 平台上之 Multipath Routing 應用
3. Linux ADSL Multipath Routing Solution
4. 中港高中Multipath作法
5. Redundant Internet Connections Using Linux
6. Linux iptables 技術實務 - 防火牆、頻寬管理、連線管制

相簿設定
標籤設定
相簿狀態