Linux Advanced Routing & Traffic Control HOWTO (Hubert, Graf) - страница 10

># ip rule add from 10.0.0.10 table John

># ip rule ls

>0:     from all lookup local

>32765: from 10.0.0.10 lookup John

>32766: from all lookup main

>32767: from all lookup default

Теперь нам нужно лишь сгенерировать таблицу John и очистить кэш маршрутов:

># ip route add default via 195.96.98.253 dev ppp2 table John

># ip route flush cache

Вот и все. В качестве упражнения вы можете добавить это в скрипт ip-up.

4.2. Маршрутизация через несколько каналов/провайдеров.

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

>                                                                 _______

>                                          +------------+        /

>                                          |            |       |

>                            +-------------+ Провайдер 1+-------

>        __                  |             |            |     /

>    ___/  \_         +------+-------+     +------------+    |

>  _/        \__      |     if1      |                      /

>/              \     |    Linux     |                      |

>| Локальная сеть-----+ маршрутизатор|                      |     Internet

>\_           __/     |              |                      |

>   \__     __/       |     if2      |                      \

>      \___/          +------+-------+     +------------+    |

>                            |             |            |     \

>                            +-------------+ Провайдер 2+-------

>                                          |            |       |

>                                          +------------+        \_______

       В этом случае обычно возникает два вопроса.

4.2.1. Раздельный доступ

Первый вопрос заключается в том, как организовать маршрутизацию таким образом, чтобы ответы на запросы, приходящие через определенного провайдера, скажем ровайдера 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