Я пытаюсь создать среду, использующую HAProxy, чтобы разрешить доступ к веб-сайтам, размещенным на локальных серверах (имеющих частный IP-адрес), через соединение SSL с использованием HAProxy Server (имеющего общедоступный и локальный частный IP-адреса). Я не хочу, чтобы HAProxy-сервер управлял сертификатом SSL для своих внутренних серверов, вместо этого внутренние серверы (т.е. локальные частные серверы) сами управляют сертификатами, а HAProxy просто использует сертификат внутреннего сервера для создания соединения. Возможно ли это с помощью HAProxy?
1 ответ
Вот решение: с помощью TPROXY мы можем передавать IP-адреса клиентов на конкретный сервер без необходимости пересылки заголовка, и это работает для TCP-соединений.
Требования:
Linux с ядром 2.6.28 и выше
iptables и HAProxy с поддержкой TPROXY
Внутренние серверы должны использовать узел, на котором установлен HAPRoxy, в качестве шлюза по умолчанию
У вас уже есть рабочая конфигурация HAProxy
Процедура:
- Запустите команду ниже, чтобы пометить и направить пакеты
iptables -t mangle -N DIVERT
iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT
iptables -t mangle -A DIVERT -j MARK --set-mark 111
iptables -t mangle -A DIVERT -j ACCEPT
ip rule add fwmark 111 lookup 100
ip route add local 0.0.0.0/0 dev lo table 100
- Установите узел в режим пересылки:
echo 1 > /proc/sys/net/ipv4/conf/all/forwarding
echo 1 > /proc/sys/net/ipv4/conf/all/send_redirects
echo 1 > /proc/sys/net/ipv4/conf/eth0/send_redirects
- В разделе конфигурации внутреннего прокси HAProxy добавьте:
источник 0.0.0.0 использует клиентскую консоль
Перезапустите службу HAProxy.
Готово
Я нашел решение для этого, выполнив следующие шаги, приведенные в руководстве, указанном в приведенной ниже ссылке:http://www.loadbalancer.org/blog/configure-haproxy-with-tproxy-kernel-for-full-transparent-proxy