Установка 3proxy из исходников.
Contents
Установим пакет для компиляции программ:
$ apt-get install build-essentialСкачаем исходники отсюда:
$ wget https://github.com/z3APA3A/3proxy/archive/refs/tags/0.9.3.tar.gz -O 3proxy093.tgz
$ tar -zxvf 3proxy093.tgz
$ cd 3proxy-0.9.3Собираем:
$ sudo apt install checkinstall
$ make -f Makefile.LinuxСоздадим учётную запись для 3proxy:
$ sudo adduser --system --disabled-login --no-create-home --group proxy3Копируем файл в /usr/bin/, а так же создаём директорию для log-файлов:
$ sudo mkdir -pv /var/log/3proxy /etc/3proxy
$ sudo cp -v bin/3proxy /usr/bin/Установим права:
$ sudo chown -v proxy3:proxy3 -R /etc/3proxy /usr/bin/3proxy /var/log/3proxyВ конфиге нужно указать setuid и setgid. Узнаем, какие у нас:
id proxy3
uid=126(proxy3) gid=136(proxy3) groups=136(proxy3)Создадим конфиг:
cat <<- EOF | tee /etc/3proxy/3proxy.cfg
setgid 136
setuid 126
nserver ns1.zavod.lan
# nserver 192.168.8.1
# nserver 8.8.8.8
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
# ip внешнего интерфейса
external 91.122.226.82
# ip внутреннего интерфейса
internal 192.168.8.1
daemon
log /var/log/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
rotate 30
auth none
allow * * * 80-88,8080-8088 HTTP
allow * * * 443,8443 HTTPS
proxy -n
EOFЗапускаем 3proxy и проверяем, что всё работает:
$ sudo /usr/bin/3proxy /etc/3proxy/3proxy.cfgСоздадим systemd файл для запуска unit:
Как создавать
unitфайлы, я почитал тут.
cat <<- EOF | sudo tee /etc/systemd/system/3proxy.service
[Unit]
Description=3proxy Proxy Server
After=syslog.target network.target
[Service]
Type=simple
User=proxy3
Group=proxy3
ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg
RemainAfterExit=yes
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOFПеречитаем конфиг файлы юнитов, установим автозапуск и запустим:
$ sudo systemctl daemon-reload
$ sudo systemctl enable 3proxy
$ sudo systemctl start 3proxy
$ journalctl --unit=3proxyНастроим аутентификацию:
CL- пароль в виде текста (plain text)CR- зашифрованный пароль (md5)NT- пароль в формате NT
При использовании зашированного пароля с символами
$нужно его заключить в кавычки.
Генерируем пароль die3Aipa с солью Kkyp7:
$ openssl passwd -1 -salt Kkyp7
Password:
$1$Kkyp7$qZgpu9h7vi9.raAZl..Fd/Добавим в файл /etc/3proxy/3proxy.cfg следующие строки:
cat <<- EOF | sudo tee --append /etc/3proxy/3proxy.cfgне корректно переносит данные со спец символами.
users test01:CL:test01
users test03:CL:test03
users "test04:CR:$1$Kkyp7$qZgpu9h7vi9.raAZl..Fd/"
users "test05:CR:$1$Kkyp7$Z42v1BMb8dbN5Ou/mgVJa."Обратите внимае у пользователей
test04иtest05использована одинаковая соль. Соль используется, чтобы получить разные результаты для одинаковых паролей. Для каждого пользователя нужно использовать разную соль.
Изменим параметр auth в /etc/3proxy/3proxy.cfg для активации.
Возможные варианты:
none- без авторизации.iponly- авторизация по IP-адресу клиента.nbname- по Netbios имени.strong- по логину и паролю.
# auth none
auth strongДобавим ораничение скорости:
$ cat <<- EOF | sudo tee --append /etc/3proxy/3proxy.cfg
# ограничение скорости в 1 Мбит/с (1024 * 1024)
bandlimin 1048576 odpantus
# ограничение скорости в 5 Мбит/с (5 * 1024 * 1024)
# bandlimin 5242880 user1,user2
EOFПерезапустим 3proxy
$ sudo systemctl restart 3proxySOCKS5 proxy (не заработал)
$ cat <<- EOF | sudo tee --append /etc/3proxy/3proxy.cfg
socks -p1080 -i192.168.8.1 -e91.122.226.82
EOF-p1080- 1080 стандартные порт для SOCKS5-i192.168.8.1- ip-address внутреннего интерфейса-e91.122.226.82- ip-address внешнего интерфейса