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

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

    Russian
    3
    12
    1.2k
    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.
    • X
      X3PPY
      last edited by X3PPY

      Всем привет!

      Есть 5 проводов от провайдера. На каждом свой договор. Настройка через PPPoE.
      Есть холдинг. Все вокруг общее, локальная сеть одна. Но нужно чтобы некоторые компьютеры в этой локальной сети ходили через свои шлюзы из числа этих пяти проводов. С NAT все просто. Я завел все провода в сервер, настроил подключения, настроил фаервол для выхода с конкретных алиасов (ip адреса) на свой шлюз. В теории все работает и можно было бы остановится, но т.к. это мое первое знакомство с pfSense решил попробовать считать трафик.

      Хочется получить функционал на подобии Керио. Там можно создать правило по пользователю\по адресу и пустить его через любой шлюз или через любой внешний ИП на шлюзе, при этом тамошний прокси все запишет на нужного пользователя.

      В pfSense же, если работать через прокси, то правила NAT в фаерволе игнорируются и внешний ИП у всех один.

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

      И еще вопрос. В этой же локальной сети есть виртуалка с тестовым pfSense. Один WAN один LAN. Настроен прозрачный squid с фильтрацией HTTPS splice all (Splice Whitelist, Bump Otherwise тоже все работает). В данной конфигурации с клиента все прекрасно работает. Считается HTTPS трафик, подменяется или пропускается сертификаты по whitelist - вопросов нет. Но на сервере с 5 WAN с точно такой же настройкой squid некоторые сайты (например youtube) выводят ошибку SSL_ERROR_RX_RECORD_TOO_LONG. Если настроить непрозрачный прокси то ошибки нет, но не могу понять, почему на тестовой машине все норм, а на боевой нет...

      1 Reply Last reply Reply Quote 0
      • 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.