Ниже представлена обычная конфигурация, когда локальная сеть (или даже одна машина) подключена к Internet через двух провайдеров.
> _______
> +------------+ /
> | | |
> +-------------+ Провайдер 1+-------
> __ | | | /
> ___/ \_ +------+-------+ +------------+ |
> _/ \__ | if1 | /
>/ \ | Linux | |
>| Локальная сеть-----+ маршрутизатор| | Internet
>\_ __/ | | |
> \__ __/ | if2 | \
> \___/ +------+-------+ +------------+ |
> | | | \
> +-------------+ Провайдер 2+-------
> | | |
> +------------+ \_______
В этом случае обычно возникает два вопроса.
Первый вопрос заключается в том, как организовать маршрутизацию таким образом, чтобы ответы на запросы, приходящие через определенного провайдера, скажем ровайдера 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