Jump to content
Форум по продукции MOXA

Recommended Posts

Добрый день, есть IA240, в lan 1 подключен gsm роутер с ip 192.168.3.126, в lan 2 подключен skylink роутер с ip 192.168.4.126. Задача состоит в том, чтобы IA240 был доступен из интернета по обоим каналам т.е. можно было к нему обратиться как по lan 1 так и по lan 2, оба роутера настроены и порты прокинуты, но проблема в том, что на IA240 не получается настроить таким образом чтоб работали сразу 2 интерфейса. Получается настроить только на один любой роутер командой route add default 192.168.*.126 (* - 3 или 4 в зависимости от нужного роутера). При этом у IA240 должна быть возможность самому выйти в инет по одному из каналов. Вопрос как это сделать?

Link to comment

Собственно нашел некоторую информацию по маршрутизации и вопрос в том реально ли это реализовать.

4.2.1. Раздельный доступ

 

Первый вопрос заключается в том, как организовать маршрутизацию таким образом, чтобы ответы на запросы, приходящие через определенного провайдера, скажем ровайдера 1, уходили через того же провайдера.

 

Давайте определим некоторые переменные. Пусть $IF1 будет именем первого интерфейса (if1 на рисунке), а $IF2 -- именем второго. Тогда $IP1 будет IP адресом $IF1 , а $IP2 -- IP адресом $IF2 . Далее, $P1 это IP-адрес шлюза провайдера 1, а $P2 -- IP адрес шлюза провайдера 2. Наконец, $P1_NET это IP сеть, к которой принадлежит $P1 , а $P2_NET -- сеть, к которой принадлежит $P2 .

 

Создадим две дополнительные таблицы маршрутизации, скажем T1 и T2. Добавим их в файл /etc/iproute2/rt_tables. Теперь можно настроить эти таблицы следующими командами:

 

ip route add $P1_NET dev $IF1 src $IP1 table T1

ip route add default via $P1 table T1

ip route add $P2_NET dev $IF2 src $IP2 table T2

ip route add default via $P2 table T2

 

 

Ничего особо эффектного, маршрут к шлюзу и маршрут по-умолчанию через этот шлюз. Точно так же, как и в случае одного провайдера, но по таблице на каждого провайдера. Заметьте, что маршрута к сети, в которой находится шлюз достаточно, потому что он определяет как найти все хосты в этой сети, включая сам шлюз.

 

Теперь нужно настроить главную таблицу маршрутизации. Хорошо бы маршрутизировать пакеты для сетей провайдеров через соответствующие интерфейсы. Обратите внимание на аргумент `src', который обеспечивает правильный выбор исходного IP-адреса.

 

ip route add $P1_NET dev $IF1 src $IP1

ip route add $P2_NET dev $IF2 src $IP2

 

 

Теперь задаем маршрут по умолчанию:

 

ip route add default via $P1

 

 

Зададим правила маршрутизации. Они будут отвечать за то, какая таблица будет использоваться при маршрутизации. Вы хотите, чтобы пакет с определенным адресом источника маршрутизировался через соответствующий интерфейс:

 

ip rule add from $IP1 table T1

ip rule add from $IP2 table T2

 

 

Этот набор команд обеспечивает маршрутизацию ответов через интерфейс, на котором был получен запрос.

 

Внимание!

 

Заметка читателя Рода Роака (Rod Roark): ' если $P0_NET это локальная сеть, а $IF0 -- соответствующий ей интерфейс, желательно задать следующие команды:

 

ip route add $P0_NET dev $IF0 table T1

ip route add $P2_NET dev $IF2 table T1

ip route add 127.0.0.0/8 dev lo table T1

ip route add $P0_NET dev $IF0 table T2

ip route add $P1_NET dev $IF1 table T2

ip route add 127.0.0.0/8 dev lo table T2

 

 

Итак, мы рассмотрели очень простой пример. Он будет работать для всех процессов, выполняющихся на маршрутизаторе и для локальной сети, если настроено преобразование адресов (NAT/masquerading). В противном случае, вам будет необходим диапазон IP адресов обоих провайдеров, или выполнять маскирование для одного из провайдеров. В любом случае, вы можете задать правила выбора провайдера для каждого конкретного адреса вашей локальной сети.

 

4.2.2. Распределение нагрузки.

 

Второй вопрос заключается в балансировке нагрузки между двумя провайдерами. Это не сложно, если у вас уже настроен раздельный доступ, описанный в предыдущем разделе.

 

Вместо выбора одного из провайдеров в качестве маршрута по-умолчанию, вы настраиваете т.н. многолучевой (multipath) маршрут. В стандартном ядре это обеспечит балансировку нагрузки между двумя провайдерами. Делается это следующим образом (повторюсь, мы основываемся на примере из раздела Раздельный доступ):

 

ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \

nexthop via $P2 dev $IF2 weight 1

 

 

Результатом команды будет попеременный выбор маршрута по-умолчанию. Вы можете изменить параметр weight, так чтобы один из провайдеров получал большую нагрузку.

Link to comment

Добрый день,

 

Прошу прощения за поздний ответ. Боюсь, что какого-то "стандартного" решения на этот счет нет.

Вот можно взять какие-нибудь такие идеи.

Или написать скриптик, делающий вот такое:

Step 1: set default gateway(GPRS router 1, #route add default gw 192.168.3.254)

Step 2: start to ping Gateway1(or www.google.com)

If no response

Reset default gateway(GPRS router 2)

Step 3: start to ping Gateway2(or www.google.com)

If no response

Reset default gateway(GPRS router 1)—back to step 2

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...