нужно чтобі в интеренет ходить по 2м канал
тоесть
если загнулся 1й провайдер ходить через 2го
если загнулся 2й ходить через 1го
если все 2е работают ходить через их
равномерно разделяя нагрузку
Сейчас конф сделал так
Простая маршрутизация
Начнём с простейшей задачи. Допустим, мы подключены к двум провайдерам
- "Мегаполис" и "Интерком" (все названия здесь и далее вымышлены;
любое совпадение с наименованиями и торговыми марками реально
существующих компаний случайно). Причём "Мегаполис" предоставляет
дешёвый трафик внутри сети, но довольно дорогой внешний, в то время
как "Интерком" продаёт весь трафик по единой, "средней", цене.
Возникает желание весь внутрисетевой трафик направлять через канал
"Мегаполиса", в то время как остальной - через "Интерком".
В этом случае логично в качестве маршрута по умолчанию (параметр
defaultrouter в файле /etc/rc.conf) задать шлюз "Интеркома" (пусть
это будет 10.1.1.1; на интерфейсе rl1 будем полагать адрес 10.1.1.2).
А задачу выделения трафика на внутренние сети "Мегаполиса" можно
решить путём настройки статических маршрутов (при некоторых условиях,
о которых читайте дальше):
# route add 8x.25y.0.0/16 10.0.1.1
add net 8x.25y.0.0: gateway 10.0.1.1
# netstat -rn | head -4; netstat -rn | grep 8x.25y
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
8x.25y/16 10.0.1.1 UGS 0 2 rl0
Постоянная "прописка" маршрута делается в /etc/rc.conf:
static_routes="meganet"
route_meganet="-net 8x.25y 10.0.1.1"
Здесь 8x.25y.0.0 - внутренняя подсеть провайдера "Мегаполис". То
есть мы прописываем для этих адресов явный маршрут через интерфейс rl0
(для определённости его IP будет 10.0.1.2 со шлюзом 10.0.1.1),
подключённый к каналу "Мегаполиса", в то время как для остального
трафика используется маршрут по умолчанию.
Аналогичного результата можно достичь, используя функцию
"форвардинга" файервола ipfw:
# ipfw table 1 add 8x.25y.0.0/16
# ipfw add 5000 fwd 10.0.1.1 ip from 192.168.0.0/24 to 'table(1)'
Благодаря использованию файервола можно более гибко управлять
трафиком, определяя его в тот или иной канал не просто по IP-адресу
назначения, но и по целому ряду других критериев (протокол, порты
источника и назначения, IP-адрес источника, и т. д.). Впрочем, об этом
мы ещё поговорим.
Особо хочу обратить ваше внимание, что этот метод будет работать
только при наличии в соответствующем направлении (то есть уже за
интерфейсом) NAT-сервера, например, реализованного в ADSL-модеме, -
это то самое "особое условие", на которое я ссылался выше. В
противном случае провайдер наверняка будет "рубить" у себя на шлюзе
пакеты с IP-адресами, не принадлежащими ему. И уж тем более нет
никаких оснований полагать, что схема будет работать при
непосредственном использовании "серых" адресов, вроде показанных в
примере 192.168.0.0/24 (см. рис. 1).
Рисунок 1. Схема с "внешними" NAT-серверами
Да и даже в том случае, если вы - счастливый обладатель достаточно
большого массива реальных адресов, которые без проблем пропускают
через себя все ваши провайдеры, поставленная задача без NAT-серверов
решена не будет. Поскольку ответные пакеты будут приходить к вашему
серверу в соответствии с правилами маршрутизации внешних узлов, на
которые вы вряд ли сможете оказать какое-то влияние. То есть входящий
трафик в любом случае будет идти так, как прописано на маршрутизаторах
провайдера и выше, а не так, как захочется нам. (Позже будет показано,
как можно использовать NAT непосредственно на настраиваемой машине,
чтобы "форсировать" решение данной проблемы).