Назад | Перейти на главную страницу

Прокси-сервер для множественных ненадежных ссылок

Небольшая локальная сеть (15-20 пользователей) имеет 3-4 подключения к Интернету через модемы DSL / Cable / EVDO. Все интернет-соединения связаны с уникальным интерфейсом на Linux-компьютере, который, в свою очередь, подключен ко всем устройствам в локальной сети. Мне нужно настроить прокси-сервер таким образом, чтобы прокси привязывал свои исходящие соединения к любому доступному в настоящее время интернет-интерфейсу.

Доступность необходимо проверять в полуреальном времени, я думал, что небольшое приложение, которое проверяет каждый из соответствующих DNS-серверов интерфейса через этот интерфейс, чтобы определить, что соединение будет работать нормально.

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

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

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

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

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

Вы также можете изучить связывание интерфейсов - там много документации (например, http://www.google.com/search?q=linux+bonding+howto), или, если у вас есть пакет документации для установленного ядра, вы можете найти файл bonding.txt.