Агент Mail.ru и Captive Portal. Загрузка CPU.



  • Доброго времени суток!
    Использую Pfsense 2.0 и Captive Portal.
    Столкнулся с проблемкой. В сети есть пользователи, у которых установлен Агент Mail.ru. Так вот если пользователь запускает агента (как правило в автозагрузке), то агент начинает долбиться на порт 8001 и создавать кучу соединений, что в свою очередь нагружает Pfsense. При этом агент постоянно меняет порты и отследить его не получается.
    Подскажите как с этим бороться?



  • Создать для такого пользователя отдельное правило с ограничением количества установленных соединений.



  • Я пробовал ограничивать пользователей в 100 соединений, но это не помогло. Но дело в том, что агент делает генерирует большое количество пакетов на порт 8001, и ему хватает этого чтобы нагрузить pfsense.



  • Я кажется нашёл в чём проблема. Проанализировав пакеты через Wireshark, было замечено что агент ломиться на хост remote.mra.mail.ru.
    В настройках Captive Portal открыл его напрямую по имени хоста и прижал по скорости. Буду смотреть.



  • @schrek:

    Я кажется нашёл в чём проблема. Проанализировав пакеты через 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.conf

    Do 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 seconds

    Allow 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 off

    No 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 !sslports

    Always 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 all

    Setup 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, или как описано в правилах.


Locked