Sqstat + virtual ip lan
-
Я думаю, должна быть возможность подправить скрипт (sqstat.class.php или sqstat.php) либо еще как-то. Надо разобраться откуда sqstat берет значение ip адреса PFSense. В этих скриптах я так и не понял откуда берется ip. Может кто-то силен в php и подскажет куда смотреть?
-
В sqstat пишется откуда он берет инфомацию, с какого адреса. В ошибочном случае какие адрес/порт там показаны?
-
Ошибочные: 172.16.0.132:81 и 172.16.0.133:81. Вместо этих ip должен стоят один ip - виртуальный 172.16.0.250:81
В принципе, можно, конечно, оставить как есть, т.е. с ошибочными ip, но тогда трафик будет показываться по тому PFSensе, через который он идет в кластере. Это неудобно, но терпимо. Главное для меня - чтобы работала статистика sqstat.
-
SQStat берет активный интерфейс с настроек squid 1:1 Мне не понятно, почему получаются различия в определении IP адреса, так как процедура одна и та-же. Покажите Ваш конфиг squid при работе с виртуальным адресом.
-
http_port 172.16.0.250:81
icp_port 0pid_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 secondsacl 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.0uri_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 95acl 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 dynamicacl FTPclient proto FTP
acl FTP_port port 60000-61000
http_access allow FTPclient
http_access allow CONNECT FTP_porthttp_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 !sslportshttp_access allow localhost
#http_access deny blacklist
http_access allow whitelistauth_param negotiate program /usr/local/libexec/squid/squid_kerb_auth
auth_param negotiate children 30
auth_param negotiate keep_alive onauth_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 minutesacl 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 2delay_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 Unlimithttp_access deny OSB blacklist
http_access allow OSB
http_access deny Unlimit blacklist
http_access allow Unlimithttp_access deny localnet
http_access deny allP.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. Оттуда можно выяснить что и откуда берется. Я не знаю его, поэтому прошу помощи. -
Кстати, еще вопрос.
Можно ли настроить squid на работу в кластере посредством CARP, т.е. в случае отказа основного роутера squid мог работать на резервном при создании новых соединений через прокси? Конечно, старые соединения работать не будут.
Пробовал отключать основной роутер при активной работе сквида. Результат. На той машине, где и были эти активные соединения соединения обрывались (как и должно быть), но новые не создавались. Закрывал и открывал браузер заново - то же самое. А на другой машине, где не было никакого трафика через прокси основного роутера все работало на резервном.
Почему так? По логике новые соединения должны были проходить через прокси резервного роутера. -
Пакет squid не оптимизировался под CARP, думаю дело в этом. Может быть попробовать вариант проброса прокси порта с CARP IP на LAN IP на каждом узле (squid настроить нормальным образом на прослушивание порта на LAN)? Такие соединения будут синхронизироваться CARP и в теории должны подхватываться другим узлом при падении первого.
-
Со сквидом разобрался - была проблема с авторизацией по керберос на втором роутере. Интересное, что сквид мне по этому поводу ничего не сообщал.
Но проблема с sqstat осталась. Написал разработчику - пока тишина. -
А чем разработчик SQStat Вам поможет? Он не в курсе специфики pfSense.
Здесь SQStat берет настройки IP/порт из конфига GUI squid, и Ваша модификация конфига squid не является ожидаемым событием.
Нужно решать вопрос штатными средствами, и один из вариантов я Вам предложил выше. -
По вашему варианту я сделал - работает! Спасибо!
Посмотрю в работе во всех ракурсах :-) -
Возникла проблемка с пробросом прокси порта сквида CARP IP на LAN IP на каждом узле. Дело в том, что CARP синхронизирует правила NAT: port forward. Соответственно, если я на основном роутере указываю проброс на его локальный IP, то это же правило синхронизируется и на второй роутер, а его локальный IP другой и правило не сработает, т.е. сработает, но работать не будет.
Если алиас прописывать на IP, то алиасы у меня тоже синхронизируются CARPом. Как быть?
Может есть какая-нибудь штатная или нештатная возможность исключить избирательно правило(а) из синхронизации CARP? -
Возникла проблемка с пробросом прокси порта сквида CARP IP на LAN IP на каждом узле. Дело в том, что CARP синхронизирует правила NAT: port forward. Соответственно, если я на основном роутере указываю проброс на его локальный IP, то это же правило синхронизируется и на второй роутер, а его локальный IP другой и правило не сработает, т.е. сработает, но работать не будет.
Если алиас прописывать на IP, то алиасы у меня тоже синхронизируются CARPом. Как быть?
Может есть какая-нибудь штатная или нештатная возможность исключить избирательно правило(а) из синхронизации CARP?Опция No XML .. внизу где-то была.
-
Спасибо, уже нашел!