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

      Порядок я правильно понимаю? сначала создаю фронтенд с указанием какой порт слушает 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.