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

    pfSense как шлюз для нескольких компаний

    Scheduled Pinned Locked Moved Russian
    12 Posts 3 Posters 1.3k 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.
    • viktor_gV
      viktor_g Netgate
      last edited by

      Собственно вопросы: может ли pfSense + squid в принципе работать с несколькими раздельными WAN (грубо говоря своя копия squid на каждый WAN)? Можно ли создавать правила с Source не по алиасам\ip адресам, а по имени пользователя, если настроен kerberos?

      В squid'е есть директива tcp_outgoing_address вот с помощью неё и можно указать исходящий адрес для конкретного адреса,
      см. https://forum.netgate.com/topic/97328/work-in-progress-squid-failover-and-load-balancing-for-pfsense
      На данный момент поддерживается только Local/RADIUS/LDAP аутентификация. С kerberos не всё так просто, см https://redmine.pfsense.org/issues/5646

      Но на сервере с 5 WAN с точно такой же настройкой squid некоторые сайты (например youtube) выводят ошибку SSL_ERROR_RX_RECORD_TOO_LONG.

      Какая у вас версия pfSense / squid ?

      1 Reply Last reply Reply Quote 1
      • X
        X3PPY
        last edited by X3PPY

        pfSense: 2.4.5-RELEASE-p1 (amd64)
        squid: 0.4.44_30 (squid -v: Squid Cache: Version 4.10)

        viktor_g, спасибо!

        @viktor_g said in pfSense как шлюз для нескольких компаний:

        В squid'е есть директива tcp_outgoing_address вот с помощью неё и можно указать исходящий адрес для конкретного адреса

        Это решение работает! Спасибо!
        В Services -> Squid Proxy Server -> General: Show Advanced Options
        Custom Options (Before Auth), нужно указать примерно следующее
        acl ACL_NAME src 192.168.100.1 10.0.3.0/24
        tcp_outgoing_address GATEWAY_IP ACL_NAME

        Осталась проблема с SSL_ERROR_RX_RECORD_TOO_LONG + прозрачный прокси + HTTPS

        1 Reply Last reply Reply Quote 0
        • werterW
          werter
          last edited by werter

          @X3PPY

          Осталась проблема с SSL_ERROR_RX_RECORD_TOO_LONG + прозрачный прокси + HTTPS

          Попробовать создать исключения для проблемных доменов и пускать их мимо сквида?

          X 1 Reply Last reply Reply Quote 0
          • werterW
            werter
            last edited by werter

            @X3PPY

            acl ACL_NAME src 192.168.100.1 10.0.3.0/24

            Может acl ACL_NAME src 10.0.3.0/24 ? Зачем там еще одиночный ip (192.168.100.1) ?

            X 1 Reply Last reply Reply Quote 0
            • X
              X3PPY @werter
              last edited by X3PPY

              @werter said in pfSense как шлюз для нескольких компаний:

              @X3PPY

              Осталась проблема с SSL_ERROR_RX_RECORD_TOO_LONG + прозрачный прокси + HTTPS

              Попробовать создать исключения для проблемных доменов?

              Проблемных доменов может быть много, гугл, ютуб... Никакой подмены сертификатов не происходить (splice all).
              Да и даже если придумать какой-то костыль - почему на тестовой машине все работает...
              Ошибка в логах squid: NONE/409 4101 CONNECT www.youtube.com:443 - HIER_NONE/- text/html
              Попробовал на тестовой машине добавить в прослушку loopback интерфейс, убрать\поставить прозрачный прокси, убрать\поставить SSL MITM. На 5 минут ситуация повторилась - ошибка при открытии youtube. Но спустя короткое время все восстановилось и работает...

              @werter said in pfSense как шлюз для нескольких компаний:

              @X3PPY

              acl ACL_NAME src 192.168.100.1 10.0.3.0/24

              Может acl ACL_NAME src 10.0.3.0/24 ? Зачем там еще одиночный ip (192.168.100.1) ?

              Это просто для примера, вдруг кому-то потребуется. Можно как одиночный ип указывать так и сеть. У меня несколько одиночных ИП указано в конечном итоге - это работает.

              1 Reply Last reply Reply Quote 0
              • werterW
                werter
                last edited by werter

                Ошибка в логах squid: NONE/409 4101 CONNECT www.youtube.com:443 - HIER_NONE/- text/html

                https://www.linuxquestions.org/questions/linux-server-73/tag_none-409-connect-squid-3-5-20-a-4175620518/
                https://stackoverflow.com/questions/31742245/https-sites-not-working-in-squid-transparent-mode

                1 Reply Last reply Reply Quote 0
                • werterW
                  werter
                  last edited by

                  @X3PPY said in pfSense как шлюз для нескольких компаний:

                  GATEWAY_IP

                  Подскажите, что там указывать?

                  1 Reply Last reply Reply Quote 0
                  • X
                    X3PPY @werter
                    last edited by

                    @werter said in pfSense как шлюз для нескольких компаний:

                    @X3PPY said in pfSense как шлюз для нескольких компаний:

                    GATEWAY_IP

                    Подскажите, что там указывать?

                    Перечисляем клиентов: хосты или сети

                    acl acl_wan2 src 192.168.1.5 192.168.1.20 192.168.1.21 192.168.1.23 192.168.1.24

                    Указываем шлюз

                    tcp_outgoing_address 5.255.255.5 acl_wan2

                    где 5.255.255.5 - это внешний IP адрес от провайдера (соединение предварительно настроено)

                    Проблема с прозрачным прокси + HTTPS решена:
                    https://docs.netgate.com/pfsense/en/latest/cache-proxy/squid-troubleshooting.html

                    Перевод от гугла:

                    Сайты не загружаются с соединением / Ошибка 409 в журнале доступа
                    В качестве меры безопасности squid не позволит пользователю подключаться к сайту, имя которого не соответствует его IP-адресу. Это не позволяет клиентам жестко кодировать или изменять ответы DNS, чтобы избежать контроля доступа. Побочным эффектом этого, однако, является то, что сайты, которые используют циклический DNS или другие оптимизации DNS, могут заставить squid непреднамеренно блокировать или сбрасывать соединения с этими сайтами. Журнал доступа squid будет иметь код ошибки 409 (конфликт) по причине разрыва соединения.

                    Это происходит с такими сайтами, как Google или Facebook, когда клиент и squid используют разные источники для DNS и, таким образом, получают разные результаты DNS для одного и того же запроса, потому что результаты рандомизированы. Несмотря на то, что адрес для сервера является действительным, несоответствие заставляет Squid разорвать соединение.

                    Решение состоит в том, чтобы клиенты использовали брандмауэр в качестве своего DNS-сервера, чтобы и Squid, и клиенты использовали один и тот же источник DNS, и результаты соответствовали бы.

                    1 Reply Last reply Reply Quote 1
                    • werterW
                      werter
                      last edited by werter

                      @X3PPY

                      Может и так можно https://www.linux.org.ru/forum/general/14459476 ?
                      Т.е. 'dns_nameservers 127.0.0.1' добавить в Advanced сквида и перезагрузиться?
                      Возможно, еще понадобится принудительно завернуть все днс-запросы клиентов на ip пф для того, чтобы не было конфликта с разрешением имен сквидом и локальными клиентами.

                      X 1 Reply Last reply Reply Quote 0
                      • X
                        X3PPY @werter
                        last edited by

                        @werter said in pfSense как шлюз для нескольких компаний:

                        @X3PPY

                        Может и так можно https://www.linux.org.ru/forum/general/14459476 ?
                        Т.е. 'dns_nameservers 127.0.0.1' добавить в Advanced сквида и перезагрузиться?
                        Возможно, еще понадобится принудительно завернуть все днс-запросы клиентов на ip пф для того, чтобы не было конфликта с разрешением имен сквидом и локальными клиентами.

                        Тут решение просто поднять DNS сервер (он уже стоит по умолчанию в pfSense) и указать его для squid и для клиентов. У меня в сети есть AD и DNS. В настройках pfSense эти днс указаны. Но так же у pfSense есть днс от провайдеров, а у меня их 5. Теоретически можно запретить pfSense использовать днс от провайдера и получать резолв от моих внутренних днс... надо подумать какой вариант лучше...

                        1 Reply Last reply Reply Quote 0
                        • werterW
                          werter
                          last edited by werter

                          Добрый.
                          @X3PPY said in pfSense как шлюз для нескольких компаний:

                          1. У меня в сети есть AD и DNS. В настройках pfSense эти днс указаны.

                          Не указывать ip этих ДНС явно в настройках днс пф-а. Указать их в форвадинге в настройках unbound, т.е. "объяснить" пф, что вот эти домены обслуживают вот эти DNS. Делается прямо в вебке пф.
                          Клиентам же по dhcp выдавать 1-м днс - адрес пф, 2-м и последующими - адреса внутренних dns.

                          1. Но так же у pfSense есть днс от провайдеров, а у меня их 5.

                          Не использую днс провайдеров без особой надобности (напр., для разрешения имен внутренних ресурсов провайдеров, но и это решаемо). Использую я-днс\г-днс etc. Тот же днс от adguard еще и рекламу резать будет.

                          1. Получать резолв от моих внутренних днс

                          Описал в п.1

                          И самое главное - не забыть принудительно завернуть все днс-запросы клиентов на ip пф. Делается одним правилом port forward на LAN https://docs.netgate.com/pfsense/en/latest/dns/redirecting-all-dns-requests-to-pfsense.html

                          Тогда схема сквида с директивой 'dns_nameservers 127.0.0.1' должна заработать.

                          Я бы попробовал реализовать, сделав перед этим обязательный бэкап настроек пф.

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