3proxy icon indicating copy to clipboard operation
3proxy copied to clipboard

Зависает подключение вместе с admin панелью

Open srvh opened this issue 4 years ago • 8 comments

Я перенес 3proxy с сервера на VPS с виртуализацией KVM. Все конфиги идентичны. NAT включен. IPtables не блокирует порты. CentOS 7. Запущена admin панель на порту -p1501

конфиг:

`nserver 8.8.4.4 nscache 65535

log /logs/3proxy.log D logformat "L%d.%m %H:%M:%S.%. %E %C:%c %R:%r %O %I %T" rotate 30

config /conf/3proxy.cfg monitor /conf/users monitor /conf/count counter /count/3proxy.3cf include /conf/count include /conf/users noforce

auth strong allow * parent 1000 http 11.11.11.11 3112 login pass proxy -a -n -i92.22.22.22 -e92.22.22.22 -p1513 flush

fakeresolve

auth none allow * admin -p1501`

Проблема в следующем. При запуске сервиса systemctl start 3proxy - успешно стартуется. Admin панель работает. Но как только подключаюсь к прокси, ввожу логин и пароль - сразу падает admin панель. То есть в браузере невозможно ее открыть, браузер виснет. При этом прокси в браузере при открытии любого сайта выдает ошибку "Невозможно открыть страницу. Истек период ожидания". Авторизация прокси работает корректно (пробовал вводить неверный логин/пароль).

Цепочка parent 100% рабочая - проверял.

Такое поведение 3proxy с admin панелью я наблюдал на сервере. Но оно случается раз в 2-3 недели и скрипт по крону сразу рестартит 3proxy.

На VPS с KVM такая ситуация случается сразу же. Нагрузки на VPS и на 3proxy нет никакой. Я один тестирую. При этом уточню, что сам процесс 3proxy работает корректно (systemctl status 3proxy - active). Зависает только admin панель.

Лог 3proxy ничего не содержит на предмет ошибок. Это весь лог. Ничего не вырезал.

21.10 13:24:40.692 00000 92.22.22.22:1513 92.22.22.22:0 0 0 Accepting connections [4065/1423865600] 21.10 13:24:40.701 00000 0.0.0.0:1501 0.0.0.0:0 0 0 Accepting connections [4065/1423308544]

На сервере была версия 3proxy 0.9.3 На VPS с KVM поставил последнюю 0.9.4

Пробовал запускать так proxy -s0 -a -n -i92.22.22.22 -e92.22.22.22 -p1513 Не помогает.

Как быть? Что может быть не так?

srvh avatar Oct 21 '21 13:10 srvh

Уточню, что все эти же настройки (такой же конфиг) успешно работает на сервере.

srvh avatar Oct 21 '21 13:10 srvh

Сервер - 4 процессора, 8 Гб RAM VPS на KVM - 2 процессора, 4 Гб RAM

srvh avatar Oct 21 '21 14:10 srvh

Это конфиг для выполнения внутри chroot, к нему еще должен быть конфиг который дергается systemd и делает chroot, он есть? И fakeresolve после proxy не имеет смысла. Так же имеет смысл проверить права на все файлы. Еще смотри что в системных сообщениях и журнале.

z3APA3A avatar Oct 21 '21 16:10 z3APA3A

И стоит уточнить у хостера не ограничивает ли он работу прокси-сервисов

z3APA3A avatar Oct 21 '21 16:10 z3APA3A

Спасибо за быстрый ответ.

Удалось локализовать проблему методом исключения строчек из конфига.

Если удалить файл /count/3proxy.3cf и дать 3proxy самому создать файл при старте, то все работает корректно, панель не зависает. Но как только копирую файл 3proxy.3cf с другого сервера, то прокси перестает работать. С другого сервера нужно перенести эту базу, так как она содержит лимиты по трафику на каждого пользователя.

Возможно происходит неверное чтение двоичного файла? Напомню, что при первом старте 3proxy - лимиты в админ панеле показываются правильные (то есть правильно перенесены с другого сервера). И при первом использовании прокси все зависает до тех пор, пока не перезагрузишь 3proxy. И потом все по кругу (описывал поведение в самом первом сообщении).

Права на этот файл стоят такие (устанавливаются 3proxy по умолчанию) -rw-r----- 1 proxy proxy 7288 окт 22 12:03 3proxy.3cf

Как правильно перенести файл 3proxy.3cf с другого сервера?

Конфиг основной в /etc/3proxy/3proxy.cfg

#!/bin/3proxy #daemon pidfile /var/run/3proxy.pid chroot /usr/local/3proxy proxy proxy include /conf/3proxy.cfg

Кстати поменял pidfile /var/run/3proxy.pid на такой путь, так как по умолчанию на CentOS 7 сначала работает по адресу /var/run/3proxy/3proxy.pid - но после перезагрузки сервера, перестает pidfile создаваться по этому пути. Мне кажется в Github -> Issues я видел сообщение об этом.

srvh avatar Oct 22 '21 09:10 srvh

имею ввиду как перенести значения потребленного трафика, которые отображаются в админ панеле на странице counters в столбце Value.

srvh avatar Oct 22 '21 11:10 srvh

Да, это возможно, т.к. файл бинарный и привязан к платформе, могут быть несовместимости, например при переносе между 32-битной и 64-битной платформами. Раньше была утилитка https://github.com/3proxy/3proxy/blob/0.7/src/countersutil.c для экспорта/импорта в текстовый формат, но сейчас она не поддерживается и не совместима с текущими версиями 3proxy, т.к. между версиями формат тоже менялся. Можно попробовать напилить аналогичную взяв текущий формат заголовка и записей

struct counter_header {
        unsigned char sig[4];
        time_t updated;
};

struct counter_record {
        uint64_t traf64;
        time_t cleared;
        time_t updated;
};

он одинаковый в 0.9.3 и 0.9.4, но time_t может различаться на разных платформах.

Создание пидфайла сейчас вообще убрано в мастере, для systemd он не требуется.

z3APA3A avatar Oct 22 '21 12:10 z3APA3A

К сожалению, совсем не силен в программировании. Можете помочь с этим?

srvh avatar Oct 22 '21 13:10 srvh