Два провайдера: отказоустойчивость и распределение нагрузки
Добавлено: 19 фев 2013, 20:45
Тема часто поднимается, а фака нет.
Хочу объединить здесь весь накопленный человечеством опыт по использованию двух провайдеров через Микротик. В том числе и свой.
Источники
Руководство по iptables
Manual:IP/Route
Библиотека axiom-pro.ru
Википедия
Mikrotik-Типичные проблемы и их решения
Сей форум.
Load Balancing
Популярный скрипт с axiom-pro. Автор Григорьев Дмитрий (Inlarion).
Advanced Routing Failover without Scripting
Load Balancing MikroTik (распределение нагрузки по двум каналам)
Per Connection Classifier
Per Connection Classifier (PCC exemptions)
NTH load balancing with masquerade
NTH load balancing with masquerade (another approach)
Load Balancing over Multiple Gateways
ECMP load balancing with masquerade
Вместо эпиграфа:
Всё программное обеспечение, включая операционные системы, модели OSI/ISO и таблицы маршрутизации - лишь образы в сознании разработчика. Именно эти образы нужно постараться увидеть и понять.
Представьте себе сурового электрика, вооружённого тестером и осциллографом. Вот он целый год изучает сигналы на портах Микротика и говорит: "Да, я вижу тут некоторые закономерности: если на первом порту идёт такая-то последовательность сигналов, то на четвёртом будет вот-такая то. Ещё десять лет набора статистических данных и смогу это предугадывать с вероятностью 80%. Но не говорите мне ни про какие IPTables и модели OSI - мои приборы их не зафиксировали, значит это всё бабушкины сказки и я в них не верю!" Про таких людей говорят "за деревьями леса не видит". Т.е. не способен прозреть цельный образ, являющий себя в осязаемых частностях.
Начинать нужно с понятий. Не имея целостного понятия маршрутизации и сетевых взаимодействиях любая попытка что-то сделать превратится в мучение.
Вторым препятствием в освоении компьютерных наук является совершенно чудовищный язык, которым делается описание.
Переводы так называемых "мануалов" представляют собой дикий "суржик" из русских, английских, латинских и пр. слов, без особой привязки к их исходному значению. Часто, иностранные слова не переводятся, а просто пишутся русскими буквами.
Я постараюсь по ходу изложения переводить даже то, что переводить не принято, что бы каждое слово значило (указывало) на совершенно определённое действие или вещь.
Итак - маршрутизация.
Маршрут происходит от фр., от marche - ходьба, и route - дорога, путь.
Соответственно, маршрутизатор - это устройство, которое находится на перекрёстке дорог и определяет, каким путём отправлять свежеполученный пакет (от нем. Pack - тюк, связка).
Вот исходный образ: дороги и перекрёстки этих дорог, на которых стоят маршрутизаторы (пересыльщики). Ничем не отличается от почтового сообщения. Точно так же на пакете есть адрес отправителя и получателя. Но в добавок ещё некоторые пометки, помогающие в выборе дальнейшего пути пересылки.
Как же происходит решение, пересылать пакет, оставить его себе или просто уничтожить?
Понятно, что выбор определяется правилами. Списки этих правил и называются IPTables.
IP - Internet (лат. inter - между + англ. net - сеть) Protocol (лат. protocollum - здесь: набор соглашений о взаимодействии).
Tables - от полъск. tablica, от лат. tabula - доска, список.
Я представляю IPTables в виде простенькой пирамидки:
Как видно, через маршрутизатор проходит два потока: один проходящий (предназначен другому маршрутизатору или конечному получателю), второй восходящий/нисходящий - это взаимодействие с самим маршрутизатором.
Решение о том, куда пойдёт пакет принимается в первой цепочке, но не сразу, а после прохождения таблиц Mangle и DNAT.
Здесь нужно разобрать подробнее.
IPTables состоит из цепочек правил. Каждая цепочка делится на две части (таблицы или списка правил, как вам будет удобнее об этом думать). Первая таблица всегда Mangle (mangle - искажать, изменять). Вторая - либо Filter либо NAT.
Каждый пришедший пакет последовательно проверяется на соответствие каждому правилу и с ним выполняется указанное в этом правиле действие. Это можно представить как рассуждение "если в пакете есть такой-то отличительный признак, то ним нужно сделать такое-то действие".
Первая цепочка куда попадают все пакеты называется PREROUTING.
Здесь я вынужден сделать небольшое отступление, что бы описать устройство пакета и сетевых взаимодействий в целом. Без этого понять работу правил не получится.
Хочу объединить здесь весь накопленный человечеством опыт по использованию двух провайдеров через Микротик. В том числе и свой.
Источники
Руководство по iptables
Manual:IP/Route
Библиотека axiom-pro.ru
Википедия
Mikrotik-Типичные проблемы и их решения
Сей форум.
Load Balancing
Популярный скрипт с axiom-pro. Автор Григорьев Дмитрий (Inlarion).
Advanced Routing Failover without Scripting
Load Balancing MikroTik (распределение нагрузки по двум каналам)
Per Connection Classifier
Per Connection Classifier (PCC exemptions)
NTH load balancing with masquerade
NTH load balancing with masquerade (another approach)
Load Balancing over Multiple Gateways
ECMP load balancing with masquerade
Вместо эпиграфа:
Вспоминая расхожую шутку хирургов, о том, что они "тыщу раз тела вкрывали и души не видели" могу сказать: я тыщу раз вскрывал роутеры и компьютеры и никакой операционной системы там не видел.podarok66 писал(а):Перед настройкой осмыслим следующее:"RouterBOARD - не имеет ни WAN, ни LAN портов. У него есть N кол-во интерфейсов. Все интерфейсы имеют (в начальной конфигурации) абсолютно одинаковые права и свойства. Разделение на WAN и LAN происходит только в голове у настройщика."
Всё программное обеспечение, включая операционные системы, модели OSI/ISO и таблицы маршрутизации - лишь образы в сознании разработчика. Именно эти образы нужно постараться увидеть и понять.
Представьте себе сурового электрика, вооружённого тестером и осциллографом. Вот он целый год изучает сигналы на портах Микротика и говорит: "Да, я вижу тут некоторые закономерности: если на первом порту идёт такая-то последовательность сигналов, то на четвёртом будет вот-такая то. Ещё десять лет набора статистических данных и смогу это предугадывать с вероятностью 80%. Но не говорите мне ни про какие IPTables и модели OSI - мои приборы их не зафиксировали, значит это всё бабушкины сказки и я в них не верю!" Про таких людей говорят "за деревьями леса не видит". Т.е. не способен прозреть цельный образ, являющий себя в осязаемых частностях.
Начинать нужно с понятий. Не имея целостного понятия маршрутизации и сетевых взаимодействиях любая попытка что-то сделать превратится в мучение.
Вторым препятствием в освоении компьютерных наук является совершенно чудовищный язык, которым делается описание.
Переводы так называемых "мануалов" представляют собой дикий "суржик" из русских, английских, латинских и пр. слов, без особой привязки к их исходному значению. Часто, иностранные слова не переводятся, а просто пишутся русскими буквами.
Я постараюсь по ходу изложения переводить даже то, что переводить не принято, что бы каждое слово значило (указывало) на совершенно определённое действие или вещь.
Итак - маршрутизация.
Маршрут происходит от фр., от marche - ходьба, и route - дорога, путь.
Соответственно, маршрутизатор - это устройство, которое находится на перекрёстке дорог и определяет, каким путём отправлять свежеполученный пакет (от нем. Pack - тюк, связка).
Вот исходный образ: дороги и перекрёстки этих дорог, на которых стоят маршрутизаторы (пересыльщики). Ничем не отличается от почтового сообщения. Точно так же на пакете есть адрес отправителя и получателя. Но в добавок ещё некоторые пометки, помогающие в выборе дальнейшего пути пересылки.
Как же происходит решение, пересылать пакет, оставить его себе или просто уничтожить?
Понятно, что выбор определяется правилами. Списки этих правил и называются IPTables.
IP - Internet (лат. inter - между + англ. net - сеть) Protocol (лат. protocollum - здесь: набор соглашений о взаимодействии).
Tables - от полъск. tablica, от лат. tabula - доска, список.
Я представляю IPTables в виде простенькой пирамидки:
Как видно, через маршрутизатор проходит два потока: один проходящий (предназначен другому маршрутизатору или конечному получателю), второй восходящий/нисходящий - это взаимодействие с самим маршрутизатором.
Решение о том, куда пойдёт пакет принимается в первой цепочке, но не сразу, а после прохождения таблиц Mangle и DNAT.
Здесь нужно разобрать подробнее.
IPTables состоит из цепочек правил. Каждая цепочка делится на две части (таблицы или списка правил, как вам будет удобнее об этом думать). Первая таблица всегда Mangle (mangle - искажать, изменять). Вторая - либо Filter либо NAT.
Каждый пришедший пакет последовательно проверяется на соответствие каждому правилу и с ним выполняется указанное в этом правиле действие. Это можно представить как рассуждение "если в пакете есть такой-то отличительный признак, то ним нужно сделать такое-то действие".
Первая цепочка куда попадают все пакеты называется PREROUTING.
Здесь я вынужден сделать небольшое отступление, что бы описать устройство пакета и сетевых взаимодействий в целом. Без этого понять работу правил не получится.