dobri.biz
Блог · Софтуер · Баланс на натоварването между два гейтуейа с Mikrotik

Баланс на натоварването между два гейтуейа с Mikrotik

Има няколко условя:

  • да използвате Mikrotik;
  • да имате два интернет доставчика.

Идеята на разпределението на натоварването между два гейтуейа е да разпределяме натоварването, така че да преминават през различни мрежи и по този начин да дадем на потребителите максимална скорост и възможност да ползват Интернет на воля ... Да предложим на потребителите на спокойствие и да ги оставим да мислет за работа, а не колко бавно се зарежда търсенето им в google.com

Е ако някой има желание, то винаги може да си тества системата за да види как работи и да разполага сам с един интернет доставчик, т.е предложен ми е един гейтуей... просто трябва да намери/направи друг ...

Картинката изглежда по следния начин:



Добавяме необходимите IP адреси (по един на всеки от интерфейсите на машината ни):

ip address - отиваме в съответната секция

add address=192.168.0.1/24 network=192.168.0.0 broadcast=192.168.0.255 interface=ether1 comment="" disabled=no
add address=10.22.35.15/24 network=10.22.35.0 broadcast=10.22.35.255 interface=ether2 comment="" disabled=no
add address=80.70.20.39/9 network=80.0.0.0 broadcast=80.127.255.255 interface=ether3 comment="" disabled=no

192.168.0.1 е за локалната ни мрежа, 10.22.35.15, 80.70.20.39 са IP адреси на двата мрежови интерфейса, които се свързват към съответния гейтуей.

ip firewall mangle - отиваме в съответната секция

add chain=prerouting in-interface=ether1 connection-state=new nth=1 action=mark-connection new-connection-mark=odd passthrough=yes comment="" disabled=no

Чрез горното правило взимаме всеки втори пакет, които отваря нова сесия и го маркираме с маркера за връзка "odd". Поради тази проичина всички всички пакети принадлежащи на тази сесия, ще носят същия маркер. След това чрез passthrough=yes пропускаме пакетите към следващото правило.

add chain=prerouting in-interface=ether1 connection-mark=odd action=mark-routing new-routing-mark=odd passthrough=no comment="" disabled=no

Чрез горното правило, маркираме всички пакети, които са на "odd" връзката с рутинг маркера "odd". Чрез passthrough=no прекратяваме други подобни операции във веригата.

Следващите две правила правят същото със останалата част от трафика.

add chain=prerouting in-interface=ether1 connection-state=new nth=1 action=mark-connection new-connection-mark=even passthrough=yes comment="" disabled=no

add chain=prerouting in-interface=ether1 connection-mark=even action=mark-routing new-routing-mark=even passthrough=no comment="" disabled=no

"odd" трафикът се натва към 10.22.35.15, а останания - "even", към 80.70.20.39

ip firewall nat

add chain=srcnat connection-mark=odd action=src-nat to-addresses=10.22.35.15 to-ports=0-65535 comment="" disabled=no
add chain=srcnat connection-mark=even action=src-nat to-addresses=80.70.20.39 to-ports=0-65535 comment="" disabled=no

И правилата за рутиране:

  • за "odd" трафика използваме гейтуей 10.22.35.16
  • за "even" - 80.70.20.40
  • трафика за самия рутер - през 80.70.20.40

ip route

add dst-address=0.0.0.0/0 gateway=10.22.35.16 scope=255 target-scope=10 routing-mark=odd comment="" disabled=no
add dst-address=0.0.0.0/0 gateway=80.70.20.40 scope=255 target-scope=10 routing-mark=even comment="" disabled=no
add dst-address=0.0.0.0/0 gateway=80.70.20.40 scope=255 target-scope=10 comment="" disabled=no

14.11.2007. 23:54

Добри на 19.07.2008. 20:11

Схемата е същата.
Просто за едини интерфейс не задавате статично IP, а пускате DHCP клиента за да си взима по DHCP.

Аз в момента използвам същото - един статичен IP адрес и един динамичен.

Надявам се да се ориентирате.

Само внимавайте с улавянето на трафика. При версия 3 "улавянето на половината трафик" nth се задава по различен начин.

Ако изпратите един мейл мисля че мога да ви изпратя цялата конфигурация.

Zdravko на 19.07.2008. 14:43

Възможно ли е да посочите как ще изглежда горната картинка с два Интернет доставчика - като единият е: БТК АДСЛ с динамичен адрес и втория: друг доставчик със статичен IP адрес. Как би се променило конфигурирането на рутера? Благодаря Ви предварително.

Добри на 31.01.2008. 18:24

По този начин - http://wiki.mikrotik.com/wiki/Load_Balancing_Persistent
(с постоянни сесии - пакетите на всеки потребител се маркират и пропускат само през единя GW) и съчетаването му с този: http://wiki.mikrotik.com/wiki/Two_gateways_failover_with_load_balancing (при отказ на едиян GW всичко се пренасочва към другия - проверката е с ping, мисля чe бешче ако 2 pingа през 5s. са неуспешни всичко се прехвърля през другия GW).

Това реши всички проблеми и сега няма оплаквания и почти никакъв downtime.

p.s поставих и трафик шейпър и така връзката е отлична през цялото време.

Инел Чука на 30.01.2008. 21:41

Здравейте , приложих това http://wiki.mikrotik.com/wiki/Load_Balancing.
Забелязах същия проблем . Ако може да помогнете с баланса . Как по точно го постигнахте .
Благодаря ви предварително .

Добри на 19.01.2008. 17:15

За съжаление обаче опита показа, че този начин на баланс, т.к причинява проблеми при връзката към някои уеб сайтове, използващи сесии и високо ниво на сигурност.Това е така, т.к клиентските машини зад рутера в един момент се виждат през едно IP, а в друг - през другото.Макар че се постига максимална скорост при използване на връзката на двата доставчика, то горния проблем е доса сериозен. За това използвам баланс с посточнни сесии, при който пакетите от дадено src IP се маркиерат и пропускат само през единия GW.+алгоритъм за отказоустойчивост на някой от GW, то всичо е наред без прекъсване. До момента нямам забележки към новия метод. Uptime 15 d. 

Напиши коментар

* = задължителни полета


2 + 8 =