Агент Mail.ru и Captive Portal. Загрузка CPU.
-
Доброго времени суток!
Использую Pfsense 2.0 и Captive Portal.
Столкнулся с проблемкой. В сети есть пользователи, у которых установлен Агент Mail.ru. Так вот если пользователь запускает агента (как правило в автозагрузке), то агент начинает долбиться на порт 8001 и создавать кучу соединений, что в свою очередь нагружает Pfsense. При этом агент постоянно меняет порты и отследить его не получается.
Подскажите как с этим бороться? -
Создать для такого пользователя отдельное правило с ограничением количества установленных соединений.
-
Я пробовал ограничивать пользователей в 100 соединений, но это не помогло. Но дело в том, что агент делает генерирует большое количество пакетов на порт 8001, и ему хватает этого чтобы нагрузить pfsense.
-
Я кажется нашёл в чём проблема. Проанализировав пакеты через Wireshark, было замечено что агент ломиться на хост remote.mra.mail.ru.
В настройках Captive Portal открыл его напрямую по имени хоста и прижал по скорости. Буду смотреть. -
Я кажется нашёл в чём проблема. Проанализировав пакеты через Wireshark, было замечено что агент ломиться на хост remote.mra.mail.ru.
В настройках Captive Portal открыл его напрямую по имени хоста и прижал по скорости. Буду смотреть.А если его в DNS прописать как 127.0.0.1 ?
-
Не заработало. Агент продолжает ломиться на 8001 порт.
-
Нашёл проблему почему так сильно загружает агент. Дело в том что есть несколько приложение, которые неправильно обрабатываю редирект Captive Portal и начинают долбать его авторизацию, при этом нагружая его.
Может кто нибудь пробовал убрать Captive Portal с 80/443 портов, т.е. что бы он слушал определённый порт, а всё остальное дропил до авторизации. -
Проблему решил допиливанием PFSENSE.
Было сделано следующее.
1. Поправлен файл /etc/inc/captiveportal.inc
в нём изменены следующие строчки
закометировал строчку add 65531 set 1 fwd 127.0.0.1,8000 tcp from any to any in (делает форвард на авторизацию)
вставил строчки
add 65529 set 1 fwd 127.0.0.1,8000 tcp from any to IP-адрес внешний in
add 65531 set 1 fwd 127.0.0.1:8800 tcp from any to any 80 in
Для того чтобы на авторизацию перенаправлял только при обращению на определённый адрес в инете.
вторая строчка просто порт заглушка на squid.
2. Установил пакет squid.
3. Сконфигурировал squid
/usr/local/etc/squid/squid.confDo not edit manually !
http_port 127.0.0.1:8800
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 localhost
cache_mgr admin@localhost
access_log /dev/null
cache_log /var/squid/logs/cache.log
cache_store_log none
logfile_rotate 0
shutdown_lifetime 3 secondsAllow local network(s) on interface(s)
acl localnet src 127.0.0.0/255.0.0.0
uri_whitespace deny
cache_mem 8 MB
maximum_object_size_in_memory 32 KB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
cache_dir ufs /var/squid/cache 100 16 256
minimum_object_size 0 KB
maximum_object_size 10 KB
offline_mode offNo redirector configured
Setup some default acls
acl all src 0.0.0.0/0.0.0.0
acl localhost src 127.0.0.1/255.255.255.255
acl safeports port 21 70 80 210 280 443 488 563 591 631 777 901 8050 3128 1025-65535
acl sslports port 443 563 8050
acl manager proto cache_object
acl purge method PURGE
acl connect method CONNECT
acl dynamic urlpath_regex cgi-bin ?
cache deny dynamic
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !safeports
http_access deny CONNECT !sslportsAlways allow localhost connections
http_access allow localhost
request_body_max_size 0 KB
reply_body_max_size 0 deny all
delay_pools 1
delay_class 1 2
delay_parameters 1 -1/-1 -1/-1
delay_initial_bucket_level 100
delay_access 1 allow allSetup allowed acls
Allow local network(s) on interface(s)
http_access allow localnet
Default block all to be sure
http_access deny all
4. В папке /usr/local/etc/squid/errors/Russian-1251 изменил файлы с ошибками (кинул маленькую инструкцию для пользователей). Все файлы в каталоге должны быть UTF-8, чтобы отображались правильно.
И всё, как говорится, перезагрузка.
В результате, при 400 одновременно работающих клиентах на машине с 256 MB RAM и 1 CPU 1.8 Ghz, CPU выше 20% не поднимается. -
Подскажи, правильно понял, что до авторизации например через портал не будет генерироваться множество соединений по разным портам, если изменить строчку add 65531 set 1 fwd 127.0.0.1:8000 tcp from any to any 80 in? после удачной авторизации разрешено будет any to any?
-
to anzak84
Немного не так. Ты только изменишь правила файервола. А для того чтобы клиенты получали правильный отбой при соединении у меня стоит squid. Суть проблемы заключается в том, что некоторые клиенты не могут правильно обработать приглашение Captive Portal, и поэтому начинают создавать новые соединения, а squid корректно говорит, что соединения нет. Я в правиле 65529 дописал только один адрес, по которому будет авторизация. После удачной авторизации разрешается any to any, или как описано в правилах.