Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    HAProxy, разъясните пару вопросов.

    Scheduled Pinned Locked Moved Russian
    16 Posts 2 Posters 3.1k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      k0st1k
      last edited by

      Пытаюсь настроить для доступа из вне по одному адресу(IP) доступ к поддоменам находящимся во внутренней сети.
      Сколько гайдов не находил ничего не заработало.
      https://blog.devita.co/pfsense-to-proxy-traffic-for-websites-using-pfsense/#step2configurehaproxy
      http://nathandarnell.com/haproxy-in-pfsense-as-a-reverse-proxy
      более менее актуальные. но всеравнол не сработало.
      На текущий момент 2 портала в во внутренней сети один из них https. может быть в этих гайдах чтото не так?

      1 Reply Last reply Reply Quote 0
      • K
        k0st1k
        last edited by

        Порядок я правильно понимаю? сначала создаю фронтенд с указанием какой порт слушает HAProxy(предварительно в правилах сделал рарешение на вход с wan интерефейса http). затем уже в бэкэнд добавляю непосредтсвенно правила по перебросу(домен+ип+порт)
        нужно ли как отстраивать днс?

        1 Reply Last reply Reply Quote 0
        • V
          vladimirlind
          last edited by

          Покажите ваш текущий конфиг на haproxy - в Service > Haproxy > Settings - внизу есть кнопка "Show" - automatically generated configuration - content of /var/etc/haproxy/haproxy.cfg

          K 1 Reply Last reply Reply Quote 0
          • K
            k0st1k @vladimirlind
            last edited by k0st1k

            @vladimirlind
            Причем я добился того что присходит редирект на портале с http на https, но все стопорится на том что неверный сертификат(на прямую через порт маппинг работает без проблем).

            Automaticaly generated, dont edit manually.

            Generated on: 2019-04-24 16:12

            global
            maxconn 1000
            stats socket /tmp/haproxy.socket level admin
            gid 80
            nbproc 1
            hard-stop-after 15m
            chroot /tmp/haproxy_chroot
            daemon
            server-state-file /tmp/haproxy_server_state

            listen HAProxyLocalStats
            bind 127.0.0.1:2192 name localstats
            mode http
            stats enable
            stats admin if TRUE
            stats show-legends
            stats uri /haproxy/haproxy_stats.php?haproxystats=1
            timeout client 5000
            timeout connect 5000
            timeout server 5000

            frontend http
            bind 82.142.165.226:80 name 82.142.165.226:80
            mode http
            log global
            option http-keep-alive
            maxconn 500
            timeout client 30000
            acl httpRedirectACL var(txn.txnhost) -m str -i er.vokod34.ru
            http-request set-var(txn.txnhost) hdr(host)
            http-request redirect scheme https if httpRedirectACL
            default_backend help.vokod34.ru_ipvANY

            frontend https
            bind 82.142.165.226:443 name 82.142.165.226:443
            mode tcp
            log global
            timeout client 30000
            tcp-request inspect-delay 5s
            acl er req.ssl_sni -i er.vokod34.ru
            tcp-request content accept if { req.ssl_hello_type 1 }
            use_backend er.vokod34.ru_ipv4 if er

            backend help.vokod34.ru_ipvANY
            mode http
            id 100
            log global
            timeout connect 30000
            timeout server 30000
            retries 3
            server help.vokod34.ru 193.125.5.27:80 id 101 weight 50

            backend er.vokod34.ru_ipv4
            mode tcp
            id 10102
            log global
            timeout connect 30000
            timeout server 30000
            retries 3
            source ipv4@ usesrc clientip
            server er.vokod34.ru 193.125.5.9:443 id 10104 ssl weight 50 verify none

            1 Reply Last reply Reply Quote 0
            • V
              vladimirlind
              last edited by

              @k0st1k said in HAProxy, разъясните пару вопросов.:

              acl er req.ssl_sni -i er.vokod34.ru
              tcp-request content accept if { req.ssl_hello_type 1 }

              Если неправильный сертификат - то, наверное, маршрутизация по acl на фронтенде не срабатывает. Сертификат какой, вебгуя пфсенса? Скриншот настроек acl на фронтенде https было бы интересно посмотреть.

              K 2 Replies Last reply Reply Quote 0
              • K
                k0st1k @vladimirlind
                last edited by

                @vladimirlind скрин с утра сделаю, для понимания, использовать сертификат сайта не выйдет? придется свой подсовывать?

                V 1 Reply Last reply Reply Quote 0
                • K
                  k0st1k @vladimirlind
                  last edited by

                  @vladimirlind alc.PNG

                  1 Reply Last reply Reply Quote 0
                  • V
                    vladimirlind @k0st1k
                    last edited by

                    @k0st1k В текущей конфигурации у вас SSL устанавливается между сервером и клиентом, без терминации на haproxy. Можно использовать режим SSL offloading - для того того, чтобы SSL сессия клиента перехватывалась haproxy, на котором был бы установлен сертификат сайта. В этом случае надо сертификат сайта импортировать на пфсенс и указать его на фронтенде.
                    Вы говорите - неверный сертификат при попытке зайти на сайт - а какой сертификат?
                    Если на фронтенде https убрать ACL и установить на нем er.vokod34.ru_ipv4 как дефолтный бекенд - будет работать?

                    1 Reply Last reply Reply Quote 0
                    • V
                      vladimirlind
                      last edited by

                      Если терминировать SSL на haproxy, то стоит попробовать ssl_fc_sni вместо req.ssl_sni в АСL:

                      e972ed6f-c8d6-4b6c-96d3-e802615ea539-image.png

                      K 1 Reply Last reply Reply Quote 0
                      • K
                        k0st1k @vladimirlind
                        last edited by

                        @vladimirlind доковыярл настройки на столько что откат конфига не спасает и отваливаются правила фаервола) на праздниках планирую переставить с нуля и импортировать бэкапом часть основных настроек.
                        Как Подскажите как правильно отстроить.
                        Как я вижу порядок:
                        1.в бэкенд добавляю нужные ресурсы вида ИП*порт.
                        2. в фронтенд добавляется правило перекидывания.
                        необходимо ли дополнительно настраивать NAT?

                        1 Reply Last reply Reply Quote 0
                        • V
                          vladimirlind
                          last edited by

                          HAproxy проксирует запросы, приходящие на айпи:порт, указанные на фронтенде с учетом правил ACL, если таковые настроены, на сервер(ы) в в бекенде (тоже с учетом правил, если таковые настроены). Как правило, на фронтенде указывается айпи внешнего интерфейса, а на бекенде - айпи серваков во внутренней сети. Правил НАТ никаких делать не надо.

                          1 Reply Last reply Reply Quote 0
                          • K
                            k0st1k
                            last edited by k0st1k

                            Вот пример бэкенда для сервиса https, все верно?
                            для каждой пары ип+порт свой бэкенд или в один добавлять как альяс?
                            8f1a42f7-0dd2-4ad3-9474-3680115046fc-изображение.png
                            a237a79e-397b-47a5-b1ce-3a77ab83afda-изображение.png
                            787ac073-0551-4628-9f9a-527cfe3481c1-изображение.png

                            1 Reply Last reply Reply Quote 0
                            • V
                              vladimirlind
                              last edited by

                              сложно сказать - айпи сервера бекенда внешний? Ок, может на то есть причина. Если серверов бекенда несколько - то можно балансировать трафик между ними. Тут много возможностей и вариантов, все зависит от желаемого результата.

                              1 Reply Last reply Reply Quote 0
                              • K
                                k0st1k
                                last edited by

                                Нужна одна реализация
                                domain.ru - 85.125.125.125
                                er.domain.ru - 85.125.125.125 (но во внутренней сети свой адрес, в примере 193.125.5.9)
                                post.domain.ru - 85.125.125.125 (так же свой 193.125.5.4)
                                cloud.domain.ru - 85.125.125.125 (так же свой 193.125.5.2)

                                адресация 193.125.5.* внутренняя( не я её придумал такой) порталы все разные гдето есть ssl гдето нет.

                                1 Reply Last reply Reply Quote 0
                                • V
                                  vladimirlind
                                  last edited by vladimirlind

                                  Я так понимаю, фронтенд один для 85.125.125.125:443 (ну, + еще 80 фронтенд для перенаправления на 443), и с помощью трех правил ACL разруливать на три разных бекенда: если обращение идет к er.domain.ru -> бкенед с 193.125.5.9 и так далее для остальных. Тут еще SSL offloading на фронтенде просится с wildcard сертификатом для *.domain.ru

                                  K 1 Reply Last reply Reply Quote 0
                                  • K
                                    k0st1k @vladimirlind
                                    last edited by

                                    @vladimirlind не совсем, просто по найду на фронтенде был настроен переброс с http на https, а так нам необходимо чтобы отдельно http и https(переброс сделан на стороне веб сервера если требуется).

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post
                                    Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.