Всем привет.
Имеется, для простоты, 3 сервера.
1: border-сервер; получает по BGP full-view от вышестоящего провайдера и по OSPF раздает другим двум (access servers) дефолтный маршрут, а также готов принимать от них маршруты.
2,3: сервера доступа; с них пакет уходит по дефолтному маршруту на принятый по OSPF от border'а. На них стоит PPTP, а при подключении к нему на border-сервер анонсируется маршрут с маской /32, чтобы пакет дошел обратно до клиента.
Эта схема отлично.
В нее нужно добавить 4-ый сервер, через который бы проходили некоторые сети. OSPF здесь сразу отпадывает, ибо на зоны не поделить (слишком мало серверов, все друг другу соседи), а без зон у всех серверов одинаковые таблицы маршрутизации, и пакет напрямую пойдет в border, как бы мы не старались. Поэтому на AS-ках были подняты BGP, которые принимают маршруты с этого 4-го сервера.
В итоге если туда анонисировать какую-нибудь сеть, то с AS пакет пойдет не по дефолтному маршруту до border-сервера, а по bgp-шному до 4-го сервера, откуда уже по дефолтному уйдет на border-сервер. А обратно возвратится другим путем: напрямую от border'а до AS, т.к., как я говорил в начале, туда по OSPF анонсируются маршруты поключившихся клиентов.
И эта схема тоже работает отлично!
Но тут ВНЕЗАПНО потребовалось установить squid+tproxy на этот 4-ый сервер, которому просто жизненно необходимо, чтобы пакет вернулся обратно.
Собственно, вопрос: как сделать так, чтобы пакет возвращался обратно?
У меня есть идея анонсировать на этот 4-ый сервер по OSPF те же маршруты, что и на border. А на border-сервере каким-то образом сделать так, чтобы пакет уходил (уже входящий для border'а) туда, откуда пришел. Пока что не очень понимаю, как это можно сделать. В какую сторону копать?
Еще раз на всякий случай поясню.
Идет транзитный пакет через border-сервер, приходит на него ответ, который проходит по маршруту типа x.x.x.x/32 в таблице маршрутизации. Нужно, чтобы так и было, но при этом, например, если транзитный пакет пришел от такого-то ip/iface, то ответ отправить на тот же роутер, не взирая на x.x.x.x/32.
Пока что нет идей как сделать так. Всякие NAT'ы и т.п. на 4-ом сервере - не решение. Наоборот, от них пытаемся уйти.
Linux, quagga.