enkill Posted August 18, 2011 Share Posted August 18, 2011 Добрый день, есть 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
enkill Posted August 18, 2011 Author Share Posted August 18, 2011 Собственно нашел некоторую информацию по маршрутизации и вопрос в том реально ли это реализовать. 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
Komantsev Posted August 24, 2011 Share Posted August 24, 2011 Добрый день, Прошу прощения за поздний ответ. Боюсь, что какого-то "стандартного" решения на этот счет нет. Вот можно взять какие-нибудь такие идеи. Или написать скриптик, делающий вот такое: 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now