./comments
./contacts telegram: @stikname
email: ;

Установка 3proxy на CentOS/Debian

Debian, CentOS


3proxy включает в себя:
- HTTP прокси с поддержкой HTTPS и FTP (proxy/proxy.exe),
- SOCKSv4/SOCKSv4.5/SOCKSv5 прокси (socks/socks.exe),
- POP3 прокси (pop3p/pop3p.exe),
- FTP proxy, кэширующий DNS прокси,
- TCP и UDP портмапперы (tcppm, udppm),
- а так же комбинированный прокси-сервер с поддержкой дополнительных возможностей, таких как:

-> управление доступом,
-> ограничение ширины потребляемого канала,
-> ограничение трафика на день, неделю и месяц,
-> перенаправление соединений,
-> построение цепочек соединений (proxy chaining),
-> ротацию лог-файлов, ведение журналов через ODBC и syslog и т.д.

Немаловажно также то, что 3proxy абсолютно бесплатный, последнюю актуальную версию можно скачать на официальном сайте на странице загрузки http://3proxy.ru/download/

Важное преимущество 3proxy перед другими прокси-серверами (например кэширующем прокси-сервером Squid) заключается в том, что 3proxy маленький и простой, но в то же время функциональный. На момент написания статьи его работоспособность проверена на Windows 98/NT/2000/2003/XP, FreeBSD/i386, NetBSD/i386, OpenBSD/i386, Linux/i386, Linux/PPC, Linux/Alpha. Последняя анонсированная версия 0.6.1 (11/12/2009) Сейчас автор разрабатывает версию 0.7b-devel.

Приступим к установке:
1. Подключаемся к серверу по ssh. Сделать это можно через PuTTY
2.Устанавливаем файловый менеджер mc:
В CentOS
yum install mc

В Debian
apt-get install mc

3. Устанавливаем библиотеку gcc необходимую для компиляции
В CentOS
yum install gcc

В Debian
apt-get install gcc

4. Загружаем 3proxy
wget http://3proxy.ru/0.6.1/3proxy-0.6.1.tgz

5. Разархивируем скачанный архив командой
tar -xvzf 3proxy-0.6.1.tgz

6. Переходим в папку с распакованными файлами:
cd 3proxy-0.6.1

7. Перед компиляцией используя nano добавим одну строчку в src/proxy.h, чтобы сервер был анонимным
#define ANONYMOUS 1

8. Компилируем:
make -f Makefile.Linux

Во время компиляции могут появляться следующие ошибки:
3proxy.c:1103: warning: pointer targets in passing argument 1 of …

Но они не критичны и их мы игнорируем
9. Создаем папки:
mkdir /usr/local/etc/3proxy
mkdir /usr/local/etc/3proxy/bin
mkdir /usr/local/etc/3proxy/logs
mkdir /usr/local/etc/3proxy/stat

10. Переносим исполняемый файл
cp src/3proxy /usr/local/etc/3proxy/bin

11. Переносим файл для автозапуска
cp ./scripts/rc.d/proxy.sh /etc/init.d/3proxy

12. Записываем информацию в файл автозагрузки
В CentOS
chkconfig 3proxy on

В Debian
update-rc.d 3proxy defaults

13. Создаем новый конфигурационный файл
touch /usr/local/etc/3proxy/3proxy.cfg

Или переносим из образца конфигурационный файл
cp cfg/3proxy.cfg.sample /usr/local/etc/3proxy/3proxy.cfg

14. Выставляем права
chown -R nobody:nogroup /usr/local/etc/3proxy

15. Переходим в папку
cd /usr/local/etc/3proxy

и настраиваем 3proxy.cfg запустив mc, выбрав файл и нажав F4.

В интернете можно найти множество разных версий конфигурации 3proxy, я приведу свой вариант 3proxy.cfg, максимально упрощённый, не ведущий никаких логов, с авторизацией по паролю, заточенный под работу со всеми IP вашего сервера или VPS. Т.е. после установки мы получаем не один прокси сервер, а сразу несколько - столько, сколько IP привязано к вашему серверу или VPS. Вот конфиг:
daemon
auth strong
users admin:CL:password
users vasyawww:CL:password
proxy -n -a -p3128 -ixxx.xxx.xxx.xxx -exxx.xxx.xxx.xxx
proxy -n -a -p3128 -iyyy.yyy.yyy.yyy -eyyy.yyy.yyy.yyy
flush
allow admin,vasyawww

Добавте столько строчек вида proxy -n -a -p3128 -ixxx.xxx.xxx.xxx -exxx.xxx.xxx.xxx, сколько IP вам выдал ваш хостер. Таким образом можно использовать все дополнительные IP, а не только главный! На выходе мы получим прокси
xxx.xxx.xxx.xxx:3128
yyy.yyy.yyy.yyy:3128

Порт 3128 стандартный, вы можете заменить его на нестандартный, например 43153.
Теперь важный момент, если вдруг после установки ваш прокси откажется работать, как у меня на моём сервере, попробуйте добавить правила для firewall для всех портов, которые вы упоминали в конфиге, например:

iptables -I INPUT -p tcp - -dport 3128 -j ACCEPT
iptables -I INPUT -p tcp - -dport 8082 -j ACCEPT


Правда после ребута сервера прокси опять отказались работать и эти команды пришлось выполнять повторно.
Добавить новых возможностей вашим прокси, создать возможные ограничения для юзеров вы можете добавив в конфиг дополнительные параметры:
# Установить размер кэша для запросов DNS, можно оставить значение по умолчанию:
nscache 65536

# Таймауты, можно оставить значение по умолчанию:
timeouts 1 5 30 60 180 1800 15 60

# путь к логам и формат лога, к имени лога будет добавляться дата создания
log /var/log/3proxy/3proxy.log D
logformat “- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T”

# сжимать логи при помощи gzip
archiver gz /usr/bin/gzip %F

# и хранить их 30 дней
rotate 30

# ограничить доступ по портам через http(s)-proxy
deny * * 127.0.0.1,192.168.1.1
allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS
allow * * * 21 FTP

# Установить ограничения на одновременные подключения, например на 32
maxconn 32

# запускаем socks
socks

# ограничиваем толшину канала для каждого
# пользователя dima и roman в 20000 bps
# а для egor 10000 bps
bandlimin 20000 dima,roman
bandlimin 10000 egor

# запускаем сервер от пользователя nobody
# (возможно в вашей ОС uid и gid пользователя nobody
# будут другими для их определения воспользуйтесь коммандой id nobody)
setgid 65534
setuid 65534

16.Запускаем для проверки
/usr/local/etc/3proxy/bin/3proxy /usr/local/etc/3proxy/3proxy.cfg


Перегружаем сервер командой reboot и проверяем работоспособность.
08.05.2013 03:20:24
stk
10067
12
Комментарии

я.
07.07.2014 17:15:30
Спасибо, пригодилось!
maxiccc
17.01.2016 04:37:29
Огромнейшее вам спасибо!
ant
28.11.2016 11:01:05
Перегружаем сервер командой reboot и проверяем работоспособность. =)))))))))))

Если вы в 2016 да на centos 6 лучше используйте yum install 3proxy а не непонятные архивы с сайта который уже наверное много лет не обновляется... морока с маке инсталл и правами на файлы и остальное тоже отпадает...

Гугол на сайт с архивом ругается, наверняка уже сайт ломанули и архивчик подменили... так что не рискуйте

На Сентос в итоге нужно всего 3 шага:

Установка
yum install 3proxy -y
Отредактировать настройки
nano /etc/3proxy/3proxy.cfg
Запуск
service 3proxy start

Конфиг кстати немного тоже изменился, так что читайте внутри коментарии на инглише
stk
29.11.2016 16:44:19
ant, смысл в такой установке 3proxy чтоб он был реально анонимен, за счет правки стандартных настроек, при установке через "yum install 3proxy" у тебя будет палиться реальный айпи потому как встанет деф версия прокси.

"Гугл" еблан. Сайт ни кто не ломал. Это в порядке вещей, гнать на нормальные сайты что они вредоносны. Только что сверил скачанный мною архив два года назад, с версией о которой речь в посте, с только что скачанным, тем же архивом. Все хеши идентичны. Ни кто ничего не подменял.

У Заразы на гитхабе по сей день идут работы над софтом и правки github.com/z3APA3A/3proxy , ни о каких серьёзных уязвимостях информации не сообщалось.
Bulavka
13.07.2017 10:21:37
Как я понимаю подобный способ установки еще актуален?
stk
14.07.2017 18:58:51
Bulavka, по идее да, врятли что-то изменилось. А по факту, сам давно не проверял.
Дмитрий
04.08.2017 12:25:47
Привет. А ддя седьмой версии CentOS подойдёт ли данный мануал?
stk
04.08.2017 22:43:51
Дмитрий, привет. Я не проверял потому как на 99% работаю с дебианом, не думаю что могло что то значительно измениться.
Дмитрий
10.09.2017 20:02:51
Действительно, получилось запустить прокси по данному мануалу на Centos 7, но возникла проблема с анонимностью, не смотря на то, что перед компиляцией в документ proxy.h был добавлен пункт #define ANONYMOUS 1. Проблема в том, что при проверке ip в яндексе, выдается реальный город, хотя ip изменен. Если проверять на 2ip.ru, то ip и город изменены, но при детальной проверке на 2ip, выдается сообщение, что замечено использование средств анонимной защиты - разница часовых поясов браузера и сервера.
Так же не работает автозапуск прокси, хотя пункты cp ./scripts/rc.d/proxy.sh /etc/init.d/3proxy и chkconfig 3proxy on были выполнены. Но один раз, все же удалось настроить автозапуск, когда я, по-моему, не перенес файлы 3proxy в созданные каталоги на /usr/local/etc, т.е. неправильно произвел настройку, точно не помню что именно сделал. Но больше этого повторить не удалось.
Есть ли какие-то пожелания и предложения?
stk
13.09.2017 13:42:39
Дмитрий, с тем что прокси при проверке выдает реальный город, может быть стоит посмотреть в сторону отключения WebRTC в вашем браузере.
Что с автозапуском на конкретно вашем сайте, я увы не подскажу. В статье описаны стандартные методы, которые должны работать. Если не работают, то возможно проблема в изначальной конфигурации сервера у того хостера где вы его арендуете.
Дмитрий
05.11.2017 15:25:20
Проблема с анонимностью решилась чисткой куков в браузере.
Автозагрузка заработала после удаления лишних символов (^M) из скрипта автозапуска, так как на Centos 6 некорректно распознавалась кодировка скрипта, хотя на Сentos 7 такой проблемы не было.
Кстати, чтобы после перезагрузки сервера сохранялись изменения в настройках фаервола, необходимо после добавления правил вводить команду service iptables save (для Centos 6).
stk
05.11.2017 18:06:25
Дмитрий, спасибо за информацию. Возможно кому то это будет полезно.