3proxy - бесплатный и открытый прокси-сервер, который используется для различных целей, таких как фильтрация трафика, кэширование и блокирование конкретных веб-сайтов. Он поддерживает различные протоколы, такие как SOCKS v4/v4a/v5, HTTP, HTTPS, FTP, POP3, SMTP, и поддерживает методы аутентификации, такие как SOCKS5 имя пользователя/пароль, NTLM, LDAP, Kerberos и SSO.
Сервер сильно настраиваем, обеспечивая детальное управление использованием пропускной способности и параметрами подключения. 3proxy может быть установлен на платформах Windows, Linux и macOS. Это легкий и простой в использовании прокси-сервер, подходящий для небольших и средних сетей. Возможна аренда vps прокси
Необходимо аккуратно, так как нежелательно устанавливать сервер без авторизации. Это может привести к несанкционированному использованию сервера злоумышленниками для организации рассылки спама и большого трафика.
Для начала необходимо установить несколько пакетов и зависимостей.
Для AlmaLinux выполняется команда
yum -y install gcc wget tar
а для Debian
apt install -y build-essential wget tar
Затем скачиваем файлы с официального сайта проекта 3proxy, распаковываем архив и компилируем скачанные файлы.
Далее создаем необходимые директории для конфигурационных файлов и логов, переносим исполняемый файл 3proxy, а также создаем нового пользователя "proxyuser" и назначаем ему права на директории. Для создания нового конфигурационного файла выполняем команду
touch /etc/3proxy/3proxy.cfg
и назначаем права только для пользователя root с помощью chmod 600 /etc/3proxy/3proxy.cfg.
После создания нового конфигурационного файла необходимо правильно его заполнить. Для этого записываем uid и gid пользователя "proxyuser", затем используем текстовый редактор для копирования и вставки текста из примера файла конфигурации. Сохраняем изменения в файле конфигурации и получаем установленный 3proxy с поддержкой http(s) и socks5-proxy.
Ниже приведем образец конфигурационного файла:
# Настройка запуска сервера от пользователя proxyuser # (вставляем uid и gid нашего пользователя, которые мы узнали ранее) setgid 991 setuid 991 # Указываем правильные сервера имен. Посмотреть можно в /etc/resolv.conf nserver 8.8.8.8 nserver 8.8.4.4 # Используем таймауты и размер кэша для запросов DNS по умолчанию timeouts 1 5 30 60 180 1800 15 60 nscache 65536 # Указываем режим запуска как daemon daemon # Указываем IP-адрес внешнего интерфейса сервера external 111.111.111.111 # либо игнорируем строку, если IP один # Указываем IP-адрес внутреннего интерфейса сервера internal 192.168.0.1 # либо игнорируем, чтобы прокси слушал все IP # Настраиваем http proxy на стандартном порту 3128 proxy -p3128 -n -a # укажите свой порт, предварительно проверив, что он работает # Настраиваем socks proxy на стандартном порту 1080 socks -p1080 # укажите свой порт, предварительно проверив, что он работает # Указываем путь к логам, формат лога и ротацию log /var/log/3proxy/3proxy.log D logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T" rotate 30
Дальше создаем файл-инициализации для systemd и настраиваем верные права:
# touch /etc/systemd/system/3proxy.service # chmod 664 /etc/systemd/system/3proxy.service
В данный файл нужно вставить следующий текст
[Unit] Description=3proxy Proxy Server After=network.target [Service] Type=simple ExecStart=/usr/bin/3proxy /etc/3proxy/3proxy.cfg ExecStop=/bin/kill `/usr/bin/pgrep proxyuser` RemainAfterExit=yes Restart=on-failure [Install] WantedBy=multi-user.target
Сохраняем и обновляем конфигурацию systemd:
# systemctl daemon-reload
Запускаем 3proxy и добавляем его в автозагрузку:
# systemctl start 3proxy # systemctl enable 3proxy
Настройка закончена. На порту 3128 теперь у вас работает http-proxy, на порту 1080 — socks-proxy.
Первая проблема - есть вероятность, что после регистрации нового домена он не будет доступен вам из-за кеширования доменных имён. Чтобы решить эту проблему, необходимо дождаться обновления записей DNS или добавить IP-адрес вашего сервера и новый домен в файл hosts. Это позволит обращаться к новому домену, пока записи в DNS не обновятся.
Проблема вторая - если использовать прокси-сервер с дефолтными портами, то рано или поздно возможно обнаружение сервера. Для того, чтобы решить эту проблему, рекомендуется изменить порты.
Например, на http proxy можно установить порт 7834, а на Socks - 7835. Однако, такие порты также могут быть обнаружены, поэтому в фаерволе можно настроить доступ к серверу только с определенных адресов, в то время как остальным будет запрещен доступ. Это решение является достаточно надежным, хотя не слишком гибким, поскольку вам может не быть доступен статический IP-адрес.
Проблема третья - в случае, если вы используете прокси-сервер и ведете логи всех соединений, то со временем они могут стать достаточно объемными и занять большую часть свободного места на диске. Чтобы избежать этой проблемы, необходимо предварительно позаботиться о ротации логов или о том, чтобы не вести их вовсе.
Существуют различные методы ротации логов, которые позволяют сохранять только последние несколько файлов логов и автоматически удалять более старые записи. Поэтому лучше всего заранее настроить процесс ротации логов, чтобы избежать переполнения диска. Это поможет сохранить все данные и избежать потери информации при использовании прокси-сервера.
users proxyuser:CL:password daemon log /var/log/3proxy/3proxy.log D rotate 30 auth strong proxy -n -a setgid 65534 setuid 65534
Еще необходимо создать директорию под логи и выставить права (мы запускаем сервер с минимальными правами nobody в системе используя директивы setgid/setud):
mkdir /var/log/3proxy ; chown nobody /var/log/3proxy
Рассмотрим вариант установки 3proxy в Docker.
Для начала потребуется установить некоторые пакеты (а для свежеустановленных ОС Debian и Ubuntu, возможно, ещё потребуется обновить индекс пакетов apt командой # apt update
).
Для AlmaLinux и CentOS:
# yum install docker docker-compose
для Ubuntu и Debian:
# apt install docker docker.io docker-compose
Скачиваем образ:
# docker pull 3proxy/3proxy
По умолчанию 3proxy использует безопасную среду chroot в /usr/local/3proxy
с uid 65535 и gid 65535, и ожидает, что конфигурационный файл 3proxy будет помещен в /usr/local/etc/3proxy
. Пути в конфигурационном файле должны указываться относительно /usr/local/3proxy
, т.е. должно быть /logs
вместо /usr/local/3proxy/logs
. В chroot требуется разрешение для nserver.
Для этого создадим директорию и конфигурационный файл 3proxy:
# mkdir -p /etc/dockerapp/3proxy # touch /etc/dockerapp/3proxy/3poxy.conf
Далее с помощью любого удобного для вас текстового редактора необходимо отредактировать созданный конфигурационный файл 3proxy.conf. Для запуска 3proxy в Docker достаточно минимальной конфигурации:
nserver 8.8.8.8 socks -p3129
Для того чтобы добавить логирование и пользователя, необходимо в файл конфигурации 3proxy добавить:
log /logs/3proxy.log auth strong users "proxyuser:CR:87beeef3f4ee4661ac1897eca216fc26"
Вместо «87beeef3f4ee4661ac1897eca216fc26» необходимо указать хэш MD5 пароля для пользователя proxyuser. Узнать хэш MD5 можно с помощью онлайн генераторов.
Запустим 3proxy с помощью docker-compose. Для этого потребуется создать файл конфигурации в формате .yml:
# touch /etc/dockerapp/3proxy/docker-compose.yml
Вставляем туда с помощью текстового редактора следующий текст:
version: "2.1" services: 3proxysvc: image: 3proxy/3proxy:latest container_name: 3proxy volumes: - /etc/dockerapp/3proxy/conf:/usr/local/3proxy/conf ports: - 8080:3129 restart: unless-stopped
Сохраняем. В данном файле мы указали внешний порт 8080. Теперь можем запускать:
# docker-compose -f /etc/dockerapp/3proxy/docker-compose.yml up -d
Получим примерно такой ответ:
Creating network "3proxy_default" with the default driver Creating 3proxy ... done
Проверяем:
# docker ps
Получим ответ, где будут указаны ID контейнера, образ, статус, используемые порты и имя:
48cc0cd140cd 3proxy/3proxy:latest "/bin/3proxy /etc/3p…" 5
Примените скидку, вставив промокод в специальное поле при оформлении заказа: