Почему программные балансировщики нагрузки маскируют IP-адрес клиента?

Почему программные балансировщики нагрузки маскируют IP-адрес клиента?

В настоящее время я использую аппаратный балансировщик нагрузки Cisco CSS. С точки зрения веб-сервера IP-адрес конечного пользователя проставляется во всем трафике, как будто балансировщик нагрузки вообще не присутствует.

Сейчас я рассматриваю программные замены, такие как HAProxy, Pound или AWS ELB. У них всех есть одна общая черта: веб-сервер получает IP-адрес балансировщика нагрузки вместо IP-адреса конечного пользователя. Ваша система должна знать об этом и обращаться к заголовку X-Forwarded-For, если вам нужен IP-адрес конечного пользователя, или, в случае SSL, расшифровывать и повторно шифровать трафик.

Итак, мой вопрос: почему так происходит? Почему программные балансировщики нагрузки не могут вести себя так же, как аппаратные балансировщики нагрузки, а просто передавать TCP-пакеты, как если бы они были простым сетевым устройством?

решение1

Потому что это программное обеспечение работает на уровне 7 (приложение)Модель OSI, есть программные решения, которые работают на уровне 3/4, напримерЛВС.

Что касается вашей проблемы, то решение довольно простое, если вы используете Apache в качестве веб-сервера, вам просто нужно установитьmod_rpafЭтот модуль позволяет напрямую регистрировать IP-адрес, предоставленный заголовком X-Forwarded-For.

решение2

Хм, если коротко, то «могут», поэтому я не уверен, что на этот вопрос можно ответить.

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

решение3

Программные балансировщики нагрузки работают на более высоком уровне стека TCP. Для достижения того же эффекта следует использовать iptables. Пример можно найти здесьздесь.

решение4

Они могут, это не поддерживается по умолчанию в ядре. Обычно это называют (я полагаю) подменой исходного адреса. Если вы загуглите "source spoofing haproxy", то получите несколько результатов.

В частности.

http://blog.loadbalancer.org/configure-haproxy-with-tproxy-kernel-for-full-transparent-proxy/

Связанный контент