Categories: CentOSlinuxUbuntu

Установка и настройка прокси сервера 3proxy в Linux

3proxy это легкий и довольно производительный кроссплатформенный прокси сервер, который можно развернуть как на Windows, так и в Linux. В этой статье мы покажем, как установить и настроить 3proxy на базе Linux. Инструкция применима для большинства современных дистрибутивов (Debian, Ubuntu, CentOS, RHEL, Rocky, Oracle Linux, и т.д.)

3proxy универсальный прокси сервером с поддержкой HTTP, HTTPS, SOCKS v4, SOCKS v4a, SOCKS v5, FTP, POP3, UDP и TCP портмаппинг (переадресация или порт-форвардинг), поддержкой ACL, управлением пропускной способности канала, возможностями авторизации по имени пользователя, IP и рядом других полезных опций.

Пакет установки 3proxy отсутствует почти во всех репозиториях Linux, поэтому проще скомпилировать его самостоятельно. Для этого нужно установить компилятор gcc .

В CentOS/RHEL/Oracle Linux/Rocky gcc можно установить с помощью пакетного менеджера yum (dnf) :

# yum install gcc

В Debian/Ubuntu используйте команду:

# apt-get install gcc

Скачайте исходные файлы 3proxy с Github и распакуйте архив:

# wget https://github.com/z3APA3A/3proxy/archive/0.9.3.tar.gz
# tar -xvzf 0.9.3.tar.gz

Перейдите в каталог с 3Proxy и скомпилируйте программу:

# cd 3proxy-0.9.3
# make -f Makefile.Linux

Команду make install не запускайте.

Создайте нового пользователя, от имени которого будет работать 3proxy (без доступа к shell и без домашнего каталога):

# useradd -s /usr/sbin/nologin -U -M -r 3proxy

Получите UID и GID нового пользователя:

# id 3proxy

uid=986(3proxy) gid=984(3proxy) groups=984(3proxy)

Создаем каталог для конфигурационного файла 3proxy:

# mkdir /etc/3proxy

Создайте каталог для логов:

# mkdir -p /var/log/3proxy

Скопируйте исполняемый файл 3proxy в /usr/bin:

# sudo cp bin/3proxy /usr/bin/

Предоставьте права для учетной записи 3proxy:

# chown 3proxy:3proxy -R /etc/3proxy
# chown 3proxy:3proxy /usr/bin/3proxy
# chown 3proxy:3proxy /var/log/3proxy

Создайте файл конфигурации:

# mcedit /etc/3proxy/3proxy.cfg

Добавьте в него следующие данные:

# Запуск сервера от пользователя 3proxy_x000D_setgid 984_x000D_ setuid 986_x000D_# Пропишите правильные DNS сервера (можно получить в /etc/resolv.conf)_x000D_nserver 8.8.8.8_x000D_nserver 8.8.4.4_x000D_# укажите режим запуска как deamon_x000D_daemon_x000D_# IP-адрес внешнего интерфейса:_x000D_#external 192.168.20.14_x000D_# IP-адрес адрес внутреннего интерфейса:_x000D_#internal 192.168.1.14_x000D_# запуск http proxy на порту 4555_x000D_proxy -p4555 -n -a_x000D_# socks proxy на порту 2333_x000D_socks -p2333_x000D_# путь к логам и формат лога_x000D_log /var/log/3proxy/3proxy.log D_x000D_logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"_x000D_rotate 30_x000D_# Оставьте размер кэша для запросов DNS по умолчанию_x000D_nscache 65536_x000D_# Используйте стандартные таймауты_x000D_timeouts 1 5 30 60 180 1800 15 60_x000D_ # Включите авторизацию по логинам и паролям_x000D_auth cache strong_x000D_users "testproxy:CL:Q#x8!jx!-n$)re;V"_x000D_users "testproxy2:CR:$1$yourSalt$FZ1CZhbunc3enF.ujQCS.1"_x000D_# CL – пароль пользователя укаывается в открытом виде_x000D_# CR зашифрованный пароль (md5), можно получить с помощью команды openssl passwd -1 -salt yourSalt2_x000D_# можно хранить пользователей и пароли в отдельном файле, тогда укажите такую строку users $/etc/3proxy/.proxyauth_x000D_
За основу вашего конфигурационного файла можно взять шаблон конфига из каталога с исходниками — /cfg/ 3proxy.cfg.sample

Создайте собственного демона 3proxy для управления им через systemd (подробнее про автозапуск служб и скриптов в Linux ):

# touch /etc/systemd/system/3proxy.service
# chmod 664 /etc/systemd/system/3proxy.service
# mcedit /etc/systemd/system/3proxy.service

Добавьте в файл 3proxy.service следующую конфигурацию:

[Unit]_x000D_Description=3proxy Proxy Server_x000D_After=network.target_x000D_[Service]_x000D_Type=simple_x000D_ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg_x000D_ExecStop=/bin/kill `/usr/bin/pgrep 3proxy`_x000D_RemainAfterExit=yes_x000D_Restart=on-failure_x000D_[Install]_x000D_WantedBy=multi-user.target

Обновите конфигурацию systemd:

# systemctl daemon-reload

Добавьте сервис в автозагрузку и запустите его:

# systemctl enable 3proxy
# systemctl start 3proxy
# systemctl status 3proxy

Добавьте правило в файервол, которое открывает для подключений к прокси порт TCP 4555. Если у вас используется firewalld , добавьте разрешающее правило так:

# firewall-cmd --zone=public --add-port=4555/tcp
# firewall-cmd --reload

Если ваш Linux сервер расположен у внешнего провайдера (AWS, Azure, Oracle Cloud, и т.д.), не забудьте настроить в них соответствующую Security Group для порта 4555.

На этом настройка 3proxy завершена. Задайте IP адрес (имя) хоста с 3proxy и порт в настройках браузера. На компьютеры Windows можно распространить настройки прокси через GPO .

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

admin

Share
Published by
admin

Recent Posts

Консоль удаленного рабочего стола(rdp console)

Клиент удаленного рабочего стола (rdp) предоставляет нам возможность войти на сервер терминалов через консоль. Что…

2 недели ago

Настройка сети в VMware Workstation

В VMware Workstation есть несколько способов настройки сети гостевой машины: 1) Bridged networking 2) Network…

2 недели ago

Логи брандмауэра Windows

Встроенный брандмауэр Windows может не только остановить нежелательный трафик на вашем пороге, но и может…

2 недели ago

Правильный способ отключения IPv6

Вопреки распространенному мнению, отключить IPv6 в Windows Vista и Server 2008 это не просто снять…

2 недели ago

Ключи реестра Windows, отвечающие за параметры экранной заставки

Параметры экранной заставки для текущего пользователя можно править из системного реестра, для чего: Запустите редактор…

2 недели ago

Как управлять журналами событий из командной строки

В этой статье расскажу про возможность просмотра журналов событий из командной строки. Эти возможности можно…

2 недели ago