>Имеется своя AS, PI /22 , 2 аплинка, все вертится на кваге
>под линухом.
>Хотелось бы следующего (возможно ли такое):
>1. клиенты подсети x.y.z.1/24 ходили всегда через аплинка А, остальные подсети через
>аплинка В. А в случае отвала одного из аплинков все клиенты
>ходили через живого прова BGP - это то, что управляет входящим трафиком. Очень четко разделить трафик ИМХО будет сложно (некоторая часть трафика пойдет не так, как описано).
Соответственно, надо чтобы блок /22 уходил с большим prepend в аплинки А и В, и отдельно аносировать в A маршрут x.y.z.0/24.
Далее, надо разрулить наш исходящий трафик.
Первый вариант, который видится - это сделать два маршрутизатора, первый - аплинк А и подсеть x.y.z.0/24, второй - аплинк В и остальные подсети. оба маршрутизатора также имеют соединение друг с другом, и обмениваются маршрутами. Для внешних пиров на каждом из рутеров выставляем повышенный приоритет. Соответственно, исходящий трафик будет идти приоритетно через маршруты аплинка, а если маршрута нет - то может пойти в соседний маршрутизатор и в аплинк соседа.
Другой вариант - это больше теоретический, потому что этот софт у меня запустить так и не удалось.
есть бгп-рутер bird, который "умеет" (если его удастся запустить) реализовывать два маршрутизатора в одной системе, ведя таблицы маршрутов в разных таблицах ядра (Linux).
Соответственно, есть две таблицы, и в iproute2 задаем какую для какой сети использовать:
типа так:
ip ru add from x.y.z.0/24 lookup uplinkA pref 2000
ip ru add from x.y.q.0/22 lookup uplinkB pref 2020
ip ru add from x.y.q.0/22 lookup uplinkA pref 2030
Поскольку задачи анонса в А маршрутов, полученных от Б - не стоит, то копии маршрутизатора в bird будут независимыми, и друг с другом маршрутами (как в первом варианте) обмениваться не будут. Если в таблице В маршрут к сети найден не будет, то будет произведен поиск в таблице А, а /24 еще до этого отдельно попытается быть отправленной через маршруты аплинкаА.
Третий вариант - использовать FreeBSD с её возможностью FIB (множественные таблицы маршрутизации) и пытаться запустить две копии quagga, привязывая "куда писать маршруты" через setfib.
Насколько мне известно, отсутствие маршрута в первой таблице не приведет к поиску во второй, поэтому в этом случае копии quagga должны будут обмениваться друг с другом маршрутами, аналогично случаю, описанному в первом варианте решения.
Кроме того, первый случай можно реализовать в одной коробке используя что-нибудь вроде Xen.
>2. заворачивать, например, yandex.ru через прова А, а mail.ru через прова В
>
Входящий трафик от "сайтов" пойдет соответственно анонсам маршрутов, исходящий-то вы можете пинать куда хотите - только асимметрия будет.