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

    Sqstat + virtual ip lan

    Scheduled Pinned Locked Moved Russian
    17 Posts 2 Posters 7.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.
    • S
      sundoom
      last edited by

      Решил настроить CARP. Задал виртуальный ip на LAN интерфейс. Прописал этот ip в dns на виндовом серваке. Проверил работу виртуального ip в сети - работает. Указал в браузере прокси сервер на виртуальном ip - все работает. Хочу посмотреть статистику в реальном времени с помощью sqstat - а там указан не виртуальный ip, а реальный ip LAN интерфейса - соотвественно, статистика не работает и вываливается ошибка: Error (60): Operation timed out
      Вопрос, как это можно поправить? Как для sqstat задать вместо реального ip виртуальный? Я не знаю php, поэтому просмотр скриптовых sqstat.php и sqstat.class.php файлов не увенчался успехом.

      Если же в squid прописать не виртуальный ip а реальный, то sqstat запускается, но зато не работает прокси, т.к. в интернет-браузере указано dns имя pfsense с виртуальным ip.

      P.S. Дальше CARP я не настравивал. Полагаю, что если до конца настрою CARP, то squid вместе c sqstat заработают как надо с виртуальным ip. Или как?

      1 Reply Last reply Reply Quote 0
      • D
        dvserg
        last edited by

        В подобной ситуации пакет не рассматривался.
        Попробуйте на Proxy server: Access control в External Cache-Managers через точку с  запятой добавить виртуальный адрес.

        SquidGuardDoc EN  RU Tutorial
        Localization ru_PFSense

        1 Reply Last reply Reply Quote 0
        • S
          sundoom
          last edited by

          Не помогло.
          НАстроил до конца CARP. Все работает как надо. НО через sqstat не могу посмотреть реальную статистику ни на одном из 2х PFSense в кластере. НА одном в sqstat пишется его локальный ip 172.16.0.132, а на другом - 172.16.0.133, а должно быть везде виртуальный IP 172.16.0.250. В самом squid стоит виртуальный ip, как и должно быть. Прокси работает. Подскажите, куда посмотреть и где подкрутить для sqstat?

          1 Reply Last reply Reply Quote 0
          • D
            dvserg
            last edited by

            Думаю пока никуда - нужно посмотреть совместимость пакета с виртуальными адресами.

            SquidGuardDoc EN  RU Tutorial
            Localization ru_PFSense

            1 Reply Last reply Reply Quote 0
            • S
              sundoom
              last edited by

              Я думаю, должна быть возможность подправить скрипт (sqstat.class.php или sqstat.php) либо еще как-то. Надо разобраться откуда sqstat берет значение ip адреса PFSense. В этих скриптах я так и не понял откуда берется ip. Может кто-то силен в php и подскажет куда смотреть?

              1 Reply Last reply Reply Quote 0
              • D
                dvserg
                last edited by

                В sqstat пишется откуда он берет инфомацию, с какого адреса. В ошибочном случае какие адрес/порт там показаны?

                SquidGuardDoc EN  RU Tutorial
                Localization ru_PFSense

                1 Reply Last reply Reply Quote 0
                • S
                  sundoom
                  last edited by

                  Ошибочные: 172.16.0.132:81 и 172.16.0.133:81. Вместо этих ip должен стоят один ip - виртуальный 172.16.0.250:81

                  В принципе, можно, конечно, оставить как есть, т.е. с ошибочными ip, но тогда трафик будет показываться по тому PFSensе, через который он идет в кластере. Это неудобно, но терпимо. Главное для меня - чтобы работала статистика sqstat.

                  1 Reply Last reply Reply Quote 0
                  • D
                    dvserg
                    last edited by

                    SQStat берет активный интерфейс с настроек squid 1:1 Мне не понятно, почему получаются различия в определении IP адреса, так как процедура одна и та-же. Покажите Ваш конфиг squid при работе с виртуальным адресом.

                    SquidGuardDoc EN  RU Tutorial
                    Localization ru_PFSense

                    1 Reply Last reply Reply Quote 0
                    • S
                      sundoom
                      last edited by

                      http_port 172.16.0.250:81
                      icp_port 0

                      pid_filename /var/run/squid.pid
                      cache_effective_user proxy
                      cache_effective_group proxy
                      error_directory /usr/local/etc/squid/errors/Russian-1251
                      icon_directory /usr/local/etc/squid/icons
                      visible_hostname pfsense
                      access_log /var/squid/logs/access.log
                      cache_log /var/squid/logs/cache.log
                      cache_store_log none
                      logfile_rotate 30
                      shutdown_lifetime 3 seconds

                      acl localnet src 172.16.0.0/255.255.255.0
                      acl localnet src 172.16.1.0/255.255.255.0
                      acl localnet src 172.16.3.0/255.255.255.0
                      acl localnet src 172.16.101.0/255.255.255.0
                      acl localnet src 172.16.11.0/255.255.255.0
                      acl localnet src 172.16.12.0/255.255.255.0
                      acl localnet src 172.16.13.0/255.255.255.0
                      acl localnet src 192.168.0.0/255.255.255.0
                      acl localnet src 192.168.25.0/255.255.255.0

                      uri_whitespace strip

                      cache_mem 100 MB
                      maximum_object_size_in_memory 32 KB
                      memory_replacement_policy heap GDSF
                      cache_replacement_policy heap LFUDA
                      cache_dir ufs /var/squid/cache 500 16 256
                      minimum_object_size 0 KB
                      maximum_object_size 4 KB
                      offline_mode off
                      cache_swap_low 90
                      cache_swap_high 95

                      acl all src 0/0
                      acl localhost src 127.0.0.1/255.255.255.255
                      acl webserver src 172.16.0.250/255.255.255.255
                      acl safeports port 20 21 70 80 210 280 443 488 563 591 631 777 901 3128 1025-65535
                      acl sslports port 20 21 443 563
                      acl manager proto cache_object
                      acl purge method PURGE
                      acl connect method CONNECT                                                                                                                    
                      acl dynamic urlpath_regex cgi-bin ?
                      acl blacklist dstdom_regex -i "/var/squid/acl/blacklist.acl"
                      acl whitelist dstdom_regex -i "/var/squid/acl/whitelist.acl"
                      cache deny dynamic

                      acl FTPclient proto FTP
                      acl FTP_port port 60000-61000
                      http_access allow FTPclient
                      http_access allow CONNECT FTP_port

                      http_access allow manager webserver
                      http_access deny webserver
                      http_access deny manager
                      http_access allow purge localhost
                      http_access deny purge
                      http_access deny !safeports
                      http_access deny CONNECT !sslports

                      http_access allow localhost

                      #http_access deny blacklist
                      http_access allow whitelist

                      auth_param negotiate program /usr/local/libexec/squid/squid_kerb_auth
                      auth_param negotiate children 30
                      auth_param negotiate keep_alive on

                      auth_param basic program /usr/local/libexec/squid/squid_ldap_auth -v 3 -b dc=green,dc=local -D user@green.local -w 123123123 -f "sAMAccountName=%s" -u cn -P go-srv-dc1:389
                      auth_param basic children 5
                      auth_param basic realm Hello!
                      auth_param basic credentialsttl 60 minutes

                      acl auth_users proxy_auth REQUIRED

                      external_acl_type domain_users %LOGIN /usr/local/libexec/squid/squid_ldap_group -R -b "dc=green,dc=local" -f "(&(sAMAccountName=%v)(memberOf=CN=%a,CN=Builtin,DC=green,DC=local))" -D user@green.local -w 123123123 -K go-srv-dc1

                      acl GP1 external domain_users Internet-GP1
                      acl OSB external domain_users Internet-OSB
                      acl Vkl external domain_users Internet-Vkl
                      acl Unlimit external domain_users Internet-Unlimit
                      delay_pools 1
                      delay_class 1 2

                      delay_parameters 1 128000/128000 30000/30000
                      delay_access 1 allow OSB
                      delay_access 1 allow GP1
                      delay_access 1 allow Vkl
                      delay_access 1 allow Unlimit

                      http_access deny OSB blacklist
                      http_access allow OSB
                      http_access deny Unlimit blacklist
                      http_access allow Unlimit

                      http_access deny localnet
                      http_access deny all

                      P.S. В PFSense у меня 2 конфига сквида - один рабочий, который я ручками изменяю (squid.conf), а второй, который через веб-морду редактируется (squid.gui.conf) - не рабочий. Сделал так, т.к. в самом PFSense не особо гибко настраиваются некоторые параметры, да и некоторых фичей нет, которые есть в самом сквиде.
                      Конфиг, который меняется системой, прописан реальный ip, т.е. 172.16.0.132 и 172.16.0.133. Я понял так, что sqstat берет настройки не с рабочего конфига сквида, а с системного. Соответственно, вопрос - где прописать виртуальный ip вместо реального в самом PFSense на squid?

                      В общем, изменил запись в файле /usr/local/pkg/squid.inc
                      $conf .= "http_port {$real_ifaces[$i][0]}:$port\n";
                      на
                      $conf .= "http_port 172.16.0.250:$port\n";

                      Сохранил конфиг squid из под веб-морды PFSense. Конфиг изменился - прописался 172.16.0.250 вместо реального ip. Но статистика не работает - показывает реальный ip. Перезагрузил PFSense - то же самое. Sqstat показывает реальный ip.
                      Вывод - sqstat берет ip не с squid а с системы.
                      Думаю, нужно просто разобраться в php скриптах sqstat. Оттуда можно выяснить что и откуда берется. Я не знаю его, поэтому прошу помощи.

                      1 Reply Last reply Reply Quote 0
                      • S
                        sundoom
                        last edited by

                        Кстати, еще вопрос.
                        Можно ли настроить squid на работу в кластере посредством CARP, т.е. в случае отказа основного роутера squid мог работать на резервном при создании новых соединений через прокси? Конечно, старые соединения работать не будут.
                        Пробовал отключать основной роутер при активной работе сквида. Результат. На той машине, где и были эти активные соединения  соединения обрывались (как и должно быть), но новые не создавались. Закрывал и открывал браузер заново - то же самое. А на другой машине, где не было никакого трафика через прокси основного роутера все работало на резервном.
                        Почему так? По логике новые соединения должны были проходить через прокси резервного роутера.

                        1 Reply Last reply Reply Quote 0
                        • D
                          dvserg
                          last edited by

                          Пакет squid не оптимизировался под CARP, думаю дело в этом. Может быть попробовать вариант проброса прокси порта с CARP IP на LAN IP на каждом узле (squid настроить нормальным образом на прослушивание порта на LAN)? Такие соединения будут синхронизироваться CARP и в теории должны подхватываться другим узлом при падении первого.

                          SquidGuardDoc EN  RU Tutorial
                          Localization ru_PFSense

                          1 Reply Last reply Reply Quote 0
                          • S
                            sundoom
                            last edited by

                            Со сквидом разобрался - была проблема с авторизацией по керберос на втором роутере. Интересное, что сквид мне по этому поводу ничего не сообщал.
                            Но проблема с sqstat осталась. Написал разработчику - пока тишина.

                            1 Reply Last reply Reply Quote 0
                            • D
                              dvserg
                              last edited by

                              А чем разработчик SQStat Вам поможет? Он не в курсе специфики pfSense.
                              Здесь SQStat берет настройки IP/порт из конфига GUI squid, и Ваша модификация конфига squid не является ожидаемым событием.
                              Нужно решать вопрос штатными средствами, и один из вариантов я Вам предложил выше.

                              SquidGuardDoc EN  RU Tutorial
                              Localization ru_PFSense

                              1 Reply Last reply Reply Quote 0
                              • S
                                sundoom
                                last edited by

                                По вашему варианту я сделал - работает! Спасибо!
                                Посмотрю в работе во всех ракурсах :-)

                                1 Reply Last reply Reply Quote 0
                                • S
                                  sundoom
                                  last edited by

                                  Возникла проблемка с пробросом прокси порта сквида CARP IP на LAN IP на каждом узле. Дело в том, что CARP синхронизирует правила NAT: port forward. Соответственно, если я на основном роутере указываю проброс на его локальный IP, то это же правило синхронизируется и на второй роутер, а его локальный IP другой и правило не сработает, т.е. сработает, но работать не будет.
                                  Если алиас прописывать на IP, то алиасы у меня тоже синхронизируются CARPом. Как быть?
                                  Может есть какая-нибудь штатная или нештатная возможность исключить избирательно правило(а) из синхронизации CARP?

                                  1 Reply Last reply Reply Quote 0
                                  • D
                                    dvserg
                                    last edited by

                                    @sundoom:

                                    Возникла проблемка с пробросом прокси порта сквида CARP IP на LAN IP на каждом узле. Дело в том, что CARP синхронизирует правила NAT: port forward. Соответственно, если я на основном роутере указываю проброс на его локальный IP, то это же правило синхронизируется и на второй роутер, а его локальный IP другой и правило не сработает, т.е. сработает, но работать не будет.
                                    Если алиас прописывать на IP, то алиасы у меня тоже синхронизируются CARPом. Как быть?
                                    Может есть какая-нибудь штатная или нештатная возможность исключить избирательно правило(а) из синхронизации CARP?

                                    Опция No XML .. внизу где-то была.

                                    SquidGuardDoc EN  RU Tutorial
                                    Localization ru_PFSense

                                    1 Reply Last reply Reply Quote 0
                                    • S
                                      sundoom
                                      last edited by

                                      Спасибо, уже нашел!

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