2 провайдера одновременно linux
auto eth0
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
auto eth2
iface eth2 inet static
address X.X.X.134
netmask 255.255.255.0
gateway X.X.X.1
metric 40
post-up /sbin/ip route add default via X.X.X.1 table dsn
post-up /sbin/ip rule add from X.X.X.134 lookup dsn
auto eth3
iface eth3 inet static
address X.X.X.236
netmask 255.255.255.0
gateway X.X.X.1
metric 20
post-up /sbin/ip route add default via X.X.X.1 table cyber
post-up /sbin/ip rule add from X.X.X.236 lookup cyber
вот у меня статика, и можно сделать так. подсети мне не нужны, нужна доступность хоста по 2м адресам.
для динамических ip скрипт пишется в папку ifup.d
1.17 , kvant ( ?? ), 06:33, 18/01/2010 [ответить] [﹢﹢﹢] [ · · · ] | + / – |
1.18 , Feonik ( ok ), 12:57, 04/02/2010 [ответить] [﹢﹢﹢] [ · · · ] | + / – |
ip rule add lookup table localnets pref 1000 ip rule add lookup localnets pref 1000 Иначе команда вообще не работает. |
1.19, hzone ( ok ), 16:00, 11/10/2010 [ответить] [﹢﹢﹢] [ · · · ] | + / – |
видать я запутался 🙂 где-то! |
1.20, Vladsky ( ok ), 11:13, 05/11/2011 [ответить] [﹢﹢﹢] [ · · · ] | + / – |
1.21, ufos ( ? ), 02:00, 19/04/2012 [ответить] [﹢﹢﹢] [ · · · ] | + / – | ||||||||||||||||||||||||
ip rule add lookup table localnets pref 1000 нужно смотреть как ip rule add from all lookup localnets pref 1000 Источник Используем 2+ провайдера (вторая часть)export GLOBAL_ETH_PRIM=eth1
$IPTABLES -A INPUT -m state —state INVALID -j DROP
$IPTABLES -A OUTPUT -m state —state INVALID -j DROP
$IPTABLES -A FORWARD -m state —state INVALID -j DROP
Источник «Щадящая» балансировка между несколькими провайдерами на офисном шлюзеЭта статья описывает конфигурацию шлюза под управлением Linux для балансировки трафика между каналами разных провайдеров. Результат, достигаемый в этом руководстве, отличается от результата подобных руководств: для каждого клиента используется один и тот же внешний IP-адрес, что избавляет от проблем с интернет-сервисами, которые не готовы к смене IP-адреса клиента в рамках одной сессии. ПроблемыДля рядового потребителя, не обладающего ни одним собственным блоком адресов и не участвующего в обмене маршрутами на уровне операторов связи, доступ к интернету возможен только с тех адресов, которые предоставляет ему каждый интернет-провайдер для каждого канала. Это означает, что любое подключение нескольких каналов от «бытовых» интернет-провайдеров к одному узлу требует не только выбора между разными вышестоящими шлюзами, но ещё и выбора правильного исходящего адреса для общения с ними. Такое положение дел идёт вразрез с тем, как работает стандартный механизм маршрутизации. В общем случае маршрут в таблице маршрутизации зависит только от адреса назначения и не меняет адрес отправителя. Поэтому первая задача, которую требуется решить — организовать соответствие интерфейса отправки, шлюза и исходящего адреса при пересылке пакетов от клиентов. Вторая задача, которую нужно решить, состоит в том, как разумно распределить нагрузку от клиентов. Балансировка с использованием многолучевых маршрутов (как по ссылке в начале статьи) осуществляется по адресу назначения и не всегда выглядит привлекательным решением. Там, где стоило бы иметь одинаковый внешний адрес, у клиента в одной сессии может получиться разный и наоборот — при обращении к популярным ресурсам, все клиенты будут использовать один общий канал. Балансировка по адресу отправителя может послужить компромиссом между совместимостью и гранулярностью распределения. У каждого компьютера в локальной сети будет всегда один и тот же внешний адрес и при немалом числе компьютеров в сети мы получим сносное распределение нагрузки по каналам. Такого деления можно добиться, если образовать от локальных адресов хэши, поделить всё пространство хэшей пропорционально весам каналов и использовать значение этого хэша для выбора канала. ИнструментыВ ядре Linux есть возможность использовать одновременно несколько разных таблиц в зависимости от того, каким критериям соответствует пакет. Часто этот механизм называют policy based routing (PBR). Управление этим механизмом осуществляется через набор утилит iproute2. Несколько упрощая постановку задачи, можно сказать: всё, что от нас требуется для разграничения маршрутов, интерфейсов и исходящих адресов — это создать для каждого провайдера дополнительную таблицу маршрутизации, имеющую вид, как если бы этот канал этого провайдера был единственным. Затем нужно добавить правила (те самые политики маршрутизации), пускающие в ход подходящую таблицу маршрутизации для соответствующего ей трафика. Что же касается балансировки по отправителю, то для этого можно воспользоваться сетевым фильтром ядра — netfilter (iptables). С помощью действия HMARK мы промаркируем пакет хэшом от адреса. По критерию fwmark в правилах маршрутизации (команда ip rule) мы направим пакет в нужную таблицу маршрутизации. iproute2 и iptables здесь неплохо играют в паре. ПримерВ качестве примера возьму шлюз на базе Debian, который предоставляет доступ к интернету через три канала от двух разных провайдеров. Такой пример выбран специально, так как он рассматривает щекотливую ситуацию, когда один и тот же вышестоящий шлюз одного провайдера доступен через 2 разных провода. Описываемая конфигурация будет иметь схожий вид и во всех других debian-подобных операционных системах, включая Ubuntu. Шлюз имеет 4 рабочих интерфейса:
Каждый канал подключен через обычный ethernet со статическим адресом. Начальное состояние# This file describes the network interfaces available on your system # The loopback network interface auto eth0 auto eth1 auto eth2 auto eth3 Как видите, только на одном из интерфейсов обозначен маршрут по умолчанию. В /etc/sysctl.conf значение net.ipv4.ip_forward установлено равным 1. Пакет iptables-persistent установлен и содержимое файла /etc/iptables/rules.v4 таково: Только три правила для трансляции адресов у пакетов, исходящих через три внешних интерфейса. Не принципиально использовать именно маскарад, но я остановился на нём. Поскольку в данный момент шлюз настроен только на одном интерфейсе, на деле работает только первое правило. Правила маршрутизации# 10 Provider1_Cable1 # This file describes the network interfaces available on your system # The loopback network interface auto eth0 auto eth1 auto eth2 auto eth3 Обратите внимание: в основную таблицу маршрутизации всё равно попадает только один gateway — все директивы gateway, кроме одной, закомментированы. Перезагрузив сеть, мы можем заметить, как изменился вывод списка правил в команде ip rule list: Соответствующую таблицу можно просмотреть командой «ip ro li table XXX». Уже в таком положении сервер готов использовать все интерфейсы сразу. Проверим это, попробовав воспользоваться всеми интерфейсами по очереди и сверяя наблюдаемый внешней стороной адрес: Если на внешних интерфейсах реальные «белые» адреса, то можно попробовать присоединиться к серверу, используя любой адрес — сервер будет общаться через каждый из них через правильный канал и правильного провайдера. Если всё так, то самое сложное позади. Балансировка# This file describes the network interfaces available on your system # The loopback network interface auto eth0 auto eth1 auto eth2 auto eth3 Для каждого интерфейса добавились строчки вида «up ip rule add from 10.0.0.0/8 fwmark MARK table TABLE». Каждая из них отправляет пакеты с соответсвующей маркировкой на маршрутизацию в указанную таблицу. В моём примере числа перемешаны между интерфейсами ради равномерности. Источник |