The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Маршрутизация в Linux в случае нескольких подключений к провайдерам (link route iproute2 linux)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: link, route, iproute2, linux,  (найти похожие документы)
From: Date: Wed, 19 Mar 2008 18:21:07 +0000 (UTC) Subject: Маршрутизация в Linux в случае нескольких подключений к провайдерам Оригинал: http://www.tigran.am/multiply-links.html Перевод главы "Маршрутизация в случае нескольких подключений к провайдерам." руководства Linux Advanced Routing & Traffic Control HOWTO . 4.2. Маршрутизация в случае нескольких подключений к провайдерам. Общий вид конфигурации с двумя подключениями локальной сети (или даже одного компьютера) к Internet. ________ +------------+ / | | | +-------------+ Provider 1 +------- __ | | | / ___/ \_ +------+-------+ +------------+ | _/ \__ | if1 | / / \ | | | | Local network -----+ Linux router | | Internet \_ __/ | | | \__ __/ | if2 | \ \___/ +------+-------+ +------------+ | | | | \ +-------------+ Provider 2 +------- | | | +------------+ \________ На этом этапе обычно возникает два вопроса. 4.2.1. Двойной канал Первое - как маршрутизировать пакеты, ответные к пакетам, приходящим, например, от Провайдера1, к тому же провайдеру. Прежде всего, оговорим некоторые обозначения. Пусть $IF1 (if1 на картинке)- первый интерфейс, $IF2 - второй. $IP1 - IP-адрес интерфейса $IF1, $IP2 - соответственно, $IF2. Далее, $P1 - IP-адрес шлюза на стороне Провайдера 1, $P2 - Провайдера2. И, наконец, $P1_NET -сеть, содержащая $P1, и $P1_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 Ничего выдающегося, просто устанавливаются маршруты к шлюзу и маршрут по умолчанию через этот шлюз, так же, как и в случае с единственным каналом, но маршруты располагаются в разных таблицах для каждого провайдера. Заметьте, что достаточно указать маршрут сети, так как он определяет способ доступа к любому компьютеру в ней, включая шлюз, как и указано выше. Далее мы устанавливаем таблицу маршрутизации main. Вполне разумно маршрутизировать пакеты к ближайшему соседу через интерфейс, к которому он подключен. Заметьте, что аргумент "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 Этот набор команд гарантирует, что все ответы на трафик, входящий через определенный интерфейс, уйдут через тот же интерфейс. Все это -настройка в общих чертах. Она будет действовать для всех процессов, выполняющихся непосредственно на маршрутизаторе, а также для локальной сети с маскарадингом. При отсутствии маскарадинга возможны два случая - в вашей сети задествовано IP-пространство от обоих провайдеров, или часть адресов одного провайдера маскарадится в адресное пространство второго. В обоих случаях потребуется указать правила, выбирающие маршрут наружу через одного из провайдеров на основе IP-адреса компьютера в локальной сети. 4.2.2. Распределение загрузки каналов. Второй вопрос - как распределять трафик, идущий через двух провайдеров. Это несложно, если двойной доступ настроен, как показано выше. Вместо указания маршрута по умолчанию через одного из двух провайдеров, нужно указать маршрут по умолчанию как многовариантный. В исходном (немодифицированном) ядре это приведет к распределению выбранных маршрутов между двумя провайдерами. Это делается следующим образом (пример основан на материале из предыдущего раздела): ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \ nexthop via $P2 dev $IF2 weight 1 Это приведет к поочередному выбору маршрутов через обоих провайдеров. Параметр weight можно изменять для увеличения доли маршрутов через какого-либо из провайдеров. Имейте в виду, что распределение не будет абсолютно точным, так как оно основано на маршрутах, а маршруты кэшируются в ядре. Таким образом, маршруты к часто используемым сайтам будут идти всегда (т.е. все время, пока маршрут остается в кэше ядра - прим. пер.) через одного и того же провайдера. Далее, если вы в самом деле хотите сделать все, что описано здесь, вам может быть полезно ознакомиться с патчами Джулиана Анастасова. Эти патчи делают многие операции более удобными.

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
  • 1, Andrey Mitrofanov (?), 23:19, 20/03/2008 [ответить]  
  • +/
    http://opennet.ru/docs/RUS/LARTC/x348.html
     
     
  • 2, Holy Cheater (?), 00:28, 02/05/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Зато у темы есть теги, благодаря которым собсно и нашлась эта дока.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру