авторизация

внимание

Чтобы писать в форум, нужно войти в него под своим именем и паролем. Введите их выше в блоке «авторизация».

Ленту последних сообщений (Последние темы) видят только зарегистрированные пользователи.

Получить имя и пароль можно зарегистрировавшись.

пользователи онлайн

У нас 4 гостя и 0 пользователей

Последние сообщения для Opera 9 и выше
RSS-лентв

Два канала в Inte..

SouthRus, 23 Ноя, 2006 г. - 15:56
*** Как организовать избыточные соединения с двумя провайдерами Internet по разным каналам с помощью Linux***

C появлением высокоскоростных каналов, предоставляемых провайдерами Internet (Internet Service Provider, ISP), пользователям стало намного проще размещать различные службы на своих домашних компьютерах. Но что если связь прервется? Очевидное решение в такой ситуации — использовать резервное соединение с Internet от другого провайдера. В данной статье рассказывается о наиболее важных моментах, которые следует учитывать при настройке хоста Linux с избыточными соединениями Internet:

о конфигурации хоста таким образом, чтобы он корректно поддерживал входящие сетевые соединения от нескольких провайдеров Internet;
о балансировке трафика между исходящими сетевыми соединениями;
o конфигурации различных служб для поддержания избыточности;
о настройке защиты межсетевого экрана с помощью сценариев ipchains или iptables.

На Рисунке http://rndzks.nm.ru/042_1.gif приведена конфигурация домашней компьютерной сети, на которую мы будем ссылаться по мере повествования. Хост Linux действует как межсетевой экран между Internet и внутренней локальной сетью. Интерфейс Ethernet eth1 использует DSL, а интерфейс Ethernet eth2 — кабельный модем. Хост Linux выполняет балансировку нагрузки между исходящими сетевыми соединениями с двумя провайдерами Internet. Такой подход не ограничивается только высокоскоростными сетевыми каналами — подобные методы могут применяться и для распределения нагрузки между двумя коммутируемыми соединениями.

Хост в тестовой конфигурации представлял собой компьютер с двумя процессорами Intel Celeron с тактовой частотой 533 МГц, на котором работала операционная система Red Hat 6.2 с ядром Linux 2.2.18. Испытания проводились также с версией Red Hat 7.1 и ядром Linux 2.4.13. Представленная конфигурация не требует наличия ни двухпроцессорной системы, ни процессоров с тактовой частотой 533 МГц. В качестве межсетевого экрана можно приспособить старую систему с процессором Pentium/100 МГц и оперативной памятью емкостью 32 Мбайт. Некоторые примеры, приведенные в статье, рассчитаны на Red Hat, но их можно легко изменить таким образом, чтобы они будут приложимы к другим распространенным вариантам Linux.

Объем публикации не позволяет детально, шаг за шагом, описать процесс конфигурации плат Ethernet, компиляцию ядер Linux и конфигурирование DNS. Эту информацию можно найти в Internet или в многочисленных публикациях по данной тематике. Начать лучше всего с посещения сайта http://www.linuxdoc.org/.

КОНФИГУРИРОВАНИЕ ЯДРА
Ядро Linux 2.2 и более поздних версий поддерживает усовершенствованные методы маршрутизации, которые необходимы для выполнения балансировки нагрузки и предоставления нескольких маршрутов по умолчанию на хосте Linux. Для поддержки нескольких соединений с Internet при компиляции ядра следует задать следующие сетевые опции:

CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_ROUTE_MULTIPATH=y
Чтобы воспользоваться развитыми возможностями нового ядра, надо установить набор средств iproute. (Сейчас он распространяется вместе с версией Red Hat 7.1.) Инструментарий iproute можно найти по адресу: ftp://ftp.inr.ac.ru/ip-routing/.

Он поддерживает две специальные команды для доступа к развитым функциям маршрутизации: ip и tc. Документация с описанием команды ip находится по адресу: http:// snafu.freedom.org/linux2.2/docs/ip-cref/ip-cref.html.

МАРШРУТИЗАЦИЯ IP ПО ИСТОЧНИКУ
По умолчанию, маршрутизация пакетов TCP/IP выполняется путем анализа IP-адресов назначения и поиска маршрута к указанной сети в таблице маршрутизации, просмотреть которую можно с помощью команды netstat -r. Если маршрут найден, пакет передается на этот сетевой интерфейс, в противном случае пересылается на шлюз, заданный по умолчанию. Для большинства систем, напрямую подключенных к Internet, по умолчанию в качестве шлюза выступает провайдер Internet. В нашем случае это означает, что все исходящие соединения Internet выходят из интерфейса DSL — не очень желательное явление в среде с избыточными соединениями. При добавлении в систему кабельного модема совсем не хочется, чтобы его соединения при ответе переходили на DSL.

Для решения этой проблемы с помощью команды ip создается несколько таблиц маршрутизации, а конкретная таблица выбирается в зависимости от IP-адреса отправителя исходящего пакета. Конфигурирование осуществляется посредством следующих команд.

#Задание правил маршрутизации IP
по источнику для DSL
ip rule add from 63.89.102.157 lookup 1
ip route add 10.0.0.0/24 via 10.0.0.1 table 1
ip route add 0/0 via 63.89.102.1 table 1
#Задание правил маршрутизации IP по источнику
#для кабельного модема
ip rule add from 65.3.17.133 lookup 2
ip route add 10.0.0.0/24 via 10.0.0.1 table 2
ip route add 0/0 via 65.3.17.1 table 2
Если исходящий пакет передается с адреса источника 63.89.102.157 (DSL), то поиск маршрута выполняется в Таблице маршрутизации 1, где имеются две записи:

>Список ip route в Таблице 1
10.0.0.0/24 via 10.0.0.1 dev eth0
default via 63.89.102.1 dev eth1
С помощью первой строки локальный трафик маршрутизируется во внутреннюю сеть, а благодаря второй все оставшиеся пакеты пересылаются провайдеру Internet через интерфейс DSL. Таблица маршрутизации 2 для интерфейса кабельного модема используется таким же образом.

БАЛАНСИРОВКА НАГРУЗКИ
Балансировка нагрузки между исходящими из внутренней сети соединениями осуществляется с помощью опции ядра CONFIG_IP_ROUTE_MULTIPATH, которая позволяет определить несколько шлюзов по умолчанию. Для этого необходимо удалить шлюз по умолчанию из файла /etc/sysconfig/network и задать шлюз по умолчанию с помощью расширенных функций маршрутизации посредством следующей команды:

# Добавление ip route по умолчанию
с опцией equalize
nexthop via 63.89.102.1 dev eth1
nexthop via 65.3.17.1 dev eth2
Следующая команда позволяет просмотреть усовершенствованную таблицу маршрутизации:

>Список ip route
255.255.255.255 dev eth0 scope link
255.255.255.255 dev eth2 scope link
255.255.255.255 dev eth1 scope link
10.0.0.1 dev eth0 scope link
63.89.102.157 dev eth1 scope link
65.3.17.133 dev eth2 scope link
10.0.0.0/24 dev eth0 proto kernel scope
link src 10.0.0.1
63.89.102.0/24 dev eth1 proto kernel scope
link src 63.89.102.157
65.3.17.0/24 dev eth2 proto kernel scope
link src 65.3.17.133
127.0.0.0/8 dev lo scope link
default equalize
nexthop via 63.89.102.1 dev eth1
weight 1
nexthop via 65.3.17.1 dev eth2
weight 1
Опция ядра CONFIG_IP_ROUTE_MULTIPATH заставляет Linux, как сказано в документации /usr/src/linux/Documentation/ Configure.help, «рассматривать все эти пути (маршруты, заданные по умолчанию) как имеющие равную «стоимость» и выбирать один из них произвольным образом». Опция equalize в команде ip route указывает ядру Linux на необходимость балансировки нагрузки между исходящими соединениями на основе IP-адреса. Для конкретного IP-адреса ядро выбирает интерфейс, куда будут передаваться исходящие пакеты; затем ядро сохраняет это решение как запись в кэше маршрутизации для данного IP-адреса. Последующие соединения с указанным IP-адресом будут осуществляться через тот же самый интерфейс до тех пор, пока не истечет срок действия записи в кэше маршрутизации, просмотреть который можно с помощью команды ip route list cache.

КОНФИГУРАЦИЯ СЕРвисОВ
Различные службы (DNS, SMTP, HTTP, LDAP, SSH и т. д.) можно сделать избыточными путем реализации циклической DNS. Избыточность DNS достигается за счет указания двух записей NS, по одной для каждого внешнего интерфейса. При желании, срок действия (Time To Live, TTL) каждой записи DNS сокращается таким образом, чтобы удаленные системы могли кэшировать информацию IP только в течение 30 мин. В результате входящий трафик будет распределяться между двумя IP-адресами циклически. Для входящих соединений SMTP две записи MX с равным весом (10) были добавлены к DNS так, чтобы при выходе из строя одного из интерфейсов входящая электронная почта доставлялась на другой интерфейс.

Проверить конфигурацию DNS можно с помощью команды dig (модификация команды nslookup):

>dig alphapager.org
; DiG 8.2 alphapager.org any
;; res options:init recurs defnam dnsrch
;; got answer:
;; ->>HEADER
SouthRus, 23 Ноя, 2006 г. - 15:59
Проверить конфигурацию DNS можно с помощью команды dig (модификация команды nslookup):

>dig alphapager.org
; DiG 8.2 alphapager.org any
;; res options:init recurs defnam dnsrch
;; got answer:
;; ->>HEADER
CountZero, 23 Ноя, 2006 г. - 17:52
Зачотно!