====== Установка 3proxy на Ubuntu ======
https://www.3proxy.ru
3proxy это маленький многоплатформный набор прокси-серверов (под Linux/Unix и Windows, включая 64-битные версии).
Он включает в себя HTTP прокси с поддержкой HTTPS и FTP (proxy/proxy.exe), SOCKSv4/SOCKSv4.5/SOCKSv5 прокси (socks/socks.exe), POP3 прокси (pop3p/pop3p.exe), SMTP прокси (smtpp/smtpp.exe), AIM/ICQ прокси (icqpr/icqpr.exe), MSN messenger / Live messenger proxy (msnpr/msnpr.exe), FTP proxy, кэширующий DNS прокси, TCP и UDP портмапперы (tcppm, udppm) а так же комбинированный прокси-сервер с поддержкой дополнительных возможностей, таких как управление доступом, ограничение ширины потребляемого канала, ограничение трафика на день, неделю и месяц, перенаправление соединений, построение цепочек соединений (proxy chaining), ротацию лог-файлов, ведение журналов через ODBC и syslog и т.д.
===== Установка из исходников =====
sudo apt-get install -y build-essential
wget --no-check-certificate https://github.com/z3APA3A/3proxy/archive/0.8.12.tar.gz
tar xzf 0.8.12.tar.gz
cd ~/3proxy-0.8.12
sudo make -f Makefile.Linux
Копируем полученный файл
sudo cp 3proxy /usr/bin/
===== Настройка =====
Создаем отдельного пользователя и узнаем его UID/GID:
sudo adduser --system --no-create-home --disabled-login --group 3proxy
id 3proxy
Создаем папки, раздаем на них права и создаем файлы конфигурации:
sudo mkdir /etc/3proxy
sudo touch /etc/3proxy/3proxy.cfg
sudo touch /etc/3proxy/.proxyauth
sudo chown 3proxy:3proxy -R /etc/3proxy
sudo chown 3proxy:3proxy /usr/bin/3proxy
sudo chmod 444 /etc/3proxy/3proxy.cfg
sudo chmod 400 /etc/3proxy/.proxyauth
sudo mkdir /var/log/3proxy
sudo chown 3proxy:3proxy /var/log/3proxy
Содержимое файла /etc/3proxy/3proxy.cfg:
# UID и GID нашего пользователя 3proxy
setgid 112
setuid 114
# DNS-сервера
nserver 8.8.8.8
nserver 8.8.4.4
# Размер кэша для запросов DNS по умолчанию
nscache 65536
# Таймауты по умолчанию
timeouts 1 5 30 60 180 1800 15 60
# Внешний адрес IP через который сервер будет ходить во внешний мир
# Если он один - настройку можно не делать
#external
# Внутренний IP, который 3proxy должен прослушивать.
# Если он один или нужно прослушивать на всех IP - настройку можно не делать
#internal
# Файл с пользователями и паролями для авторизации пользователей
users $/etc/3proxy/.proxyauth
# Режим запуска как daemon
daemon
# Путь к папке с логам и формат лога
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
# Время хранения логов
rotate 7
# Включить строгую авторизацию. Для отключения авторизации измените на 'auth none'
# Кэширование авторизации делает жизнь легче
auth strong cache
authcache user 60
# Можно разрешить/запретить подключение с определенных IP или по портам
deny * * 127.0.0.1,192.168.1.1
#allow * * * 80-88,8080-8088 HTTP
#allow * * * 443,8443 HTTPS
#allow * * * 1-65535 HTTP
#allow * * * 1-65535 HTTPS
# SOCKS
auth strong cache
#auth none
flush
socks -p1080
# HTTP/HTTPS Proxy
# Анонимный (-a) HTTP-proxy на порту (-p) 3128 c отключенной NTLM-авторизацией (-n)
proxy -n -p3128 -a
Содержимое файла /etc/3proxy/.proxyauth
## Add users in below formats:
## user:CL:password
## user:CR:encrypted_password
users test1l:CL:YouSecretPassword
users "test2:CR:$1$Ane7Q3dX$ulgxFo2Ytzsf9/YtDt1Eq."
CL - пароль открытым текстом
CR - зашифрованный пароль. Так же строка должна быть заключена в кавычки
Скрипт для добавления новых учеток в файл:
#!/bin/sh
user=$1
pass=$2
#hash="$(echo -n "$pass" | md5sum | cut -d' ' -f1)"
hash=`mkpasswd --method=md5 $pass`
echo "users \"$user:CR:$hash\"" >> /etc/3proxy/.proxyauth
Формат запуска:
./adduser UserName UserPassword
Скрипт запуска 3proxy
touch /etc/init.d/3proxy
sudo chmod +x /etc/init.d/3proxy
Сам скрипт:
#!/bin/sh
#
### BEGIN INIT INFO
# Provides: 3Proxy
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Initialize 3proxy server
# Description: starts 3proxy
### END INIT INFO
case "$1" in
start)
echo Starting 3Proxy
/usr/bin/3proxy /etc/3proxy/3proxy.cfg
;;
stop)
echo Stopping 3Proxy
/usr/bin/killall 3proxy
;;
restart|reload)
echo Reloading 3Proxy
/usr/bin/killall -s USR1 3proxy
;;
*)
echo Usage: \$0 "{start|stop|restart}"
exit 1
esac
exit 0
Добавление скрипта в автозагрузку:
sudo update-rc.d 3proxy defaults
Запускаем прокси-сервер:
sudo /etc/init.d/3proxy start
{{tag>3proxy proxy socks server 1080}}