3proxy
3proxy copied to clipboard
Зависает подключение вместе с admin панелью
Я перенес 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 Не помогает.
Как быть? Что может быть не так?
Уточню, что все эти же настройки (такой же конфиг) успешно работает на сервере.
Сервер - 4 процессора, 8 Гб RAM VPS на KVM - 2 процессора, 4 Гб RAM
Это конфиг для выполнения внутри chroot, к нему еще должен быть конфиг который дергается systemd и делает chroot, он есть? И fakeresolve после proxy не имеет смысла. Так же имеет смысл проверить права на все файлы. Еще смотри что в системных сообщениях и журнале.
И стоит уточнить у хостера не ограничивает ли он работу прокси-сервисов
Спасибо за быстрый ответ.
Удалось локализовать проблему методом исключения строчек из конфига.
Если удалить файл /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 я видел сообщение об этом.
имею ввиду как перенести значения потребленного трафика, которые отображаются в админ панеле на странице counters в столбце Value.
Да, это возможно, т.к. файл бинарный и привязан к платформе, могут быть несовместимости, например при переносе между 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 он не требуется.
К сожалению, совсем не силен в программировании. Можете помочь с этим?