Здравствуйте, grey_olli, Вы писали:
J>>Есть задача реализовать прозрачный прокси, причём необходима прозрачность не только для клиентов (обычно этого достаточно), но и для сервера...
_>Чтобы осмыслить это нужно картинку. Потому как желаете Вы странного и единственный вариант, когда это будет работать (если я правильно понял что именно Вы хотите реализовать) — когда маршрутизация для транзитного проксируемого трафика идет через сервер с вашим прокси.
Именно в качестве транзитного маршрутизатора я и хочу фигурировать в сети (при этом в действительности проксировать трафик)
J>> Отсюда необходимость создавать интерфейс с адресом клиента, что есть не очень хорошее решение (клиентов может быть несколько тысяч).
_>На время создания такого интерфейса вы будет терять к нему маршрут. Это вообще не решение.
Действительно. Так углубился, что не обратил внимание на поверхностный факт
А картинка довольно простая:
клиент (C) роутер (R) прокси (P) сервер (S)
10.0.0.4 ------ 10.0.0.3 ----- 10.0.0.2 ----- 10.0.0.1
Разумеется, подсети могут быть (и вероятно и будут) разными.
Если предположить, что клиентов за
роутером (R) много, то пустить весь трафик через
прокси (P) можно только лишь немного скорректировав маршруты на
роутере (R) и
сервере (S). Важно, что конфигурация клиентов останется прежней. Для пущей простоты
роутер (R) можно спрятать:
клиент (C) прокси (P) сервер (S)
10.0.0.4 ------ 10.0.0.2 ----- 10.0.0.1
В итоге:
обычный прокси: клиент (C) соединяется с прокси (P), сервер (S) видит соединение с прокси (P) (не подходит - надо перенастраивать клиентов)
прозрачный прокси: клиент (C) соединяется с сервером (S), сервер (S) видит соединение с прокси (P) (плохо подходит - сервер может использовать адрес клиента)
нужный прокси: клиент (C) соединяется с сервером (S), сервер (S) видит соединение с клиентом (C)
Т.е.
прокси (P) становится вообще невидимым. Вернее, он ведёт себя как роутер, что позволяет оказать минимальное влияние на функционирование сети. Что и требуется достичь.