Как быстро настроить прокси 3proxy на своем сервере на FreeBSD?

2018-11-04 | Автор | комментарии
Готовый скрипт настройки и пошаговая инструкция по аренде и быстрой настройке виртуального сервера для прокси

Как быстро настроить прокси 3proxy на своем сервере на FreeBSD?

В этой статье рассмотрим, как быстро поднять свой собственный прокси-сервер.

Proxy позволяет перенаправлять трафик с вашего компьютера на сервер. Например, вы хотите открыть некий сайт через прокси. Тогда ваш компьютер обращается к прокси, прокси подключается к сайту, получает его содержимое и перенаправляет его на ваш компьютер. Таким образом, сайт видит внешний IP прокси-сервера, а не вашего компьютера, а если сайт заблокирован, например, Роскомнадзором или президентом Украины, то можно сделать прокси-сервер в другой стране, в которой нужные вам ресурсы не заблокированы, и тем самым получить к ним доступ в обход блокировок. Главное, чтобы из вашей страны не был заблокирован сам прокси-сервер.

Также вы сможете настроить, например, Telegram на работу через свой собственный прокси, который не будет периодически умирать, как большинство бесплатных прокси. Некоторые люди используют прокси для обхода региональных ограничений на покупку музыки или игр или для получения более низких цен на них.

Содержание

Вся инструкция очень кратко для продвинутых

Это краткое содержание инструкции для продвинутых пользователей; для новичков все очень подробно расписано ниже.

  1. Установить FreeBSD 11 на сервер
  2. Скачать и запустить скрипт, который настроит локаль, сделает bash шеллом рута, настроит автообновления системы, установит 3proxy, добавит его в автозапуск и добавит в него пользователя для доступа к прокси-серверу с авторизацией, а также выведет ифнормацию о сервере (IPv4, IPv6, порты HTTP и SOCKS прокси):
pkg install git
git clone -b v1.1-comss.ru https://github.com/mikhailnov/freebsd-autodeploy.git
cd freebsd-autodeploy
./freebsd-autodeploy.sh 3proxy-setup

./freebsd-autodeploy.shсправка по командам (параметрам) скрипта.

git pull — скачать обновления скрипта (если они есть).

Выбор хостинга, где арендовать виртуальный сервер

Определитесь с задачами прокси-сервера: куда вы собираетесь через него ходить?

Если это ресурсы, заблокированные в вашей стране, то нужен виртуальный сервер в другой стране. Например, вы живете на Украине и хотите иметь доступ к Яндексу, Вконтакте, Dr.Web, Kaspersky и другим заблокированным ресурсам. Тогда вам подойдет виртуальный сервер в России. По сравнению с, например, европейским сервером российский позволит определять ваш регион как «Россия» и выдавать соответствующий геозависимый контент сайта, а также скорость открытия сайтов будет чуть выше, т.к. магистральные каналы до российских серверов шире, чем до европейских.

Жители России могут арендовать сервер в Украине, но тогда вы попадете под различные украинские блокировки, поэтому лучше всего использовать европейский сервер, тогда вы сможете без проблем иметь доступ ко всем сайтам и месседжерам, в т.ч. получите беспроблемно работающий Telegram.

Выбираем хостинг, на котором арендуем виртуальный сервер.

Виртуальный сервер — это виртуальная машина, отдельная операционная система, работающая на хосте виртуализации, то есть на большом сервере с множеством виртуальных. Это позволяет нам платить только за нужное нам количество ресурсов. К ресурсам относят процессор, оеративную память и место на диске. Хостинг — это компания, предоставляющая услуги аренды сервера.

Вы можете встретить 2 основных типа виртуализации: OpenVZ и KVM. Про их отличия в интернете есть множество статей, нам нужен KVM, иначе не сможем запустить операционную систему FreeBSD. Нам будет достаточно любого минимального тарифа.

В качестве недорого хостинга в России рекомендую «Айхор». Он сочетает в себе низкие цены, тарифы с маленьким, но достаточным для прокси-серверов количеством ресурсов без переплаты за неиспользуемые ресурсы, и достаточно удобное управление. Ниже скриншот заказа виртуального сервера на их сайте после регистрации.

Совсем дешевые VPS за границей можно найти на сайте lowendbox.com. Обратите внимание, что обычно виртуализация OpenVZ или ее родственник Virtuozoo стоят дешевле, однако нам нужен KVM с возможностью установить FreeBSD 11 или просто произвольную операционную систему из своего образа, если FreeBSD не предлагается на выбор при автоматической настройке сервера (в таком случае берите образ FreeBSD *disk1.iso отсюда).

Мы же ниже подробно разберем весь процесс на примере недорого и надежного зарубежного хостинга Vultr.

Регистрация на сайте хостинга Vultr

  • Идем на сайт vultr.com
  • Нажимаем "Create account" ("Создать аккаунт"):

  • Заполняем открывшуюся форму:

    • E-mail (электронная почта)
    • Пароль, который должен удовлетворять следующим условиям:
      • Не менее 10 символов
      • Содержать хотя бы одну заглавную букву
      • Содержать хотя бы одну строчную букву
      • Содержать хотя бы одну цифру
    • Пройти капчу
  • Нажать "Create Account" ("Создать учетную запись")
  • Перейти по ссылке в пришедшем на указанную почту письме ("Verify Your E-mail")

  • После перехода по ссылке из письма ввести пароль и нажать "Login" ("Войти")

Добавление платежной банковской карты в Vultr

После регистрации в Vultr баланс составляет 10 долларов, однако, чтобы ими воспользоваться, нужно привязать банковскую карту или пополнить счет. После того, как вы вошли в личный кабинет Vultr, перейдите в раздел "Billing" ("Платежи") в левом меню и добавьте банковскую карту или пополните счет через Paypal. Заполните поля, как показано на картинке ниже. Обратите внимание, что указание адреса — это формальность, если вы его укажите неправильно, платеж все равно пройдет. Оплата за сервер почасовая.

Галка "I just want to link my credit card - 0.00$ deposit" означает, что будет выполнена просто привязка карты без списания выбранной суммы (по умолчанию ), а как закончатся подарочные 10$, деньги начнут списываться с привязанной карты. Если ее не отметить, то выбранная сумма будет списана сразу. Поставьте галку "I agree to the terms of service" ("Согласен с условиями использования").

После заполнения формы нажмите большую синюю кнопку "Link credit card" ("Привязать банковскую карту").

Создание виртуального сервера с FreeBSD в Vultr

После добавления банковской карты откроется страница создания нового виртуального сервера (в дальнейшем будем его называть прсото сервером). В любое другое время туда можно попасть из раздела "Servers":

Теперь нужно выставить параметры создаваемого сервера.

  • Выбираем дата-центр (страну), где будет расположен сервер. Когда начинал писать эту статью, из европейских локаций была доступна Франция, однако на момент снятия скриншота она временно недоступна. Выбирайте Нидерланды (Амстердам), Германию (Франкфурт) или Париж (Францию). Пинг до европейских серверов будет немного ниже, чем до американских, однако вы вряд ли заметите разницу при использовании прокси-сервера. У большинства операторов трафик в Японию (Tokyo, Japan) и Сингапур (Singapore) в обе сторону идет по маршруту Россия-Европа-США-Япония/Сингапур или Россия-Европа-Суэцкий канал-Япония/Сингапур, но у Ростелекома есть прямые каналы на Японию через Дальний Восток России (в ряде случаев трафик все равно ходит через США), что уменьшает пинг и увеличивает скорость. Я выберу Японию, но большинству пользователей рекомендую Европу или США.

  • Выбираем операционную систему FreeBSD 11 x64

  • Выбираем тариф. подойдет минимальный тариф за 2 с половиной долларов в месяц, если он недоступен, как на момент написания статьи, выбираем тариф за 5$ в месяц.

  • Ставим галку "Enable IPv6" для включения IPv6 на виртуальном сервере (обратите внимание, что для работы прокси через IPv6 ваш интернет-провайдер все равно должен поддерживать IPv6). Если не поддерживает, то эта галка никак не помешает — будет работать через IPv4.

  • Внимание! Если вы не очень поняли этот пункт, то пропустите его.

    Если вы на своем компьютере используете операционную систему Linux (или FreeBSD), то для удобного и безопасного захода на сервер вместо пароля можно использовать авторизацию по SSH-ключу. Сначала на компьютере создайте SSH-ключ, не от root, а от пользователя выполнив команду в терминале:

    ssh-keygen

    Затем выведите в терминал и скопируйте содержимое вашего публичного SSH-ключа:

    cat ~/.ssh/id_rsa.pub

    Его и нужно добавить в Vultr как свой публичный SSH ключ, чтобы с компьютера заходить в управление сервером по SSH без пароля.

  • Все настройки сделаны, для создания сервера нажмите "Deploy now":

  • В разделе "Servers" в списке своих серверов вы увидите, что на вновь созданный сервер устанавливается операционная система ("Installing..."), а значит через несколько минут сервер будет готов к работе:

  • Тогда желтая надпись "Installing" будет изменена на зеленую "Running". Подождите 5 минут и приступайте к настройке сервера.

После создания сервера вам на почту придет письмо с его IP адресом и, если не была настроена авторизация по SSH-ключам, паролем для пользователя root.

Проверка сервера на доступность. Удаление сервера

На сайте Роскомнадзора можно проверить, не заблокирован ли IP-адрес вашего сервера в России. Если заблокирован, то создавайте новые сервера (оплата за время использования, а не сразу за месяц), пока вам не попадется сервер с незаблокированным IP-адресом, а затем удалите все лишние ранее созданные сервера, как показано на скриншоте:

Быстрая настройка сервера

Вот мы и создали наш виртуальный сервер, поздравляю! Теперь пришло время подключиться к его командной строке и запустить скрипт для автоматической настройки прокси-сервера 3proxy. Скрипт freebsd-autodeploy был написан специально для этой статьи и операционной системы FreeBSD.

  • В панели управления Vultr нажимаем на сервер и смотрим root-пароль:

  • Подключаемся к серверу по SSH — протоколу удаленного управления через командную строку. Если вы боитесь командной строки и думаете, что она неудобна, то в UNIX-подобных ОС она гораздо удобнее, чем в Windows, и прочитайте статью «Почему консоль, а не графический интерфейс?»

    Если вы используете Linux/UNIX/MacOS, то подключиться к серверу по SSH очень просто. Для этого откройте терминал и выполните команду:

    ssh root@ip-адрес-сервера

    в которую подставьте IP своего сервера. В целом команда имеет следующий вид: ssh имя_пользователя@IP_или_домен_сервера -p порт. Если не указан порт, то используется стандартный — 22.

    При первом подключении нужно ввести yes и нажать Enter. При вводе пароля он НЕ отображается никак! Скриншот:

    Дальше у вас есть полноценный графический терминал, в котором можно мышью с помощью контекстного меню или клавишами Ctrl+Shift+C, Ctrl+Shift+V копировать и вставлять текст, а по средней кнопке мыши работает параллельный буфер обмена, вставляющий ранее выделенный текст. что очень сильно экономит время, т.к. не нужно копировать и вставлять.

    Чтобы каждый раз не вводить пароль, вы можете скопировать свой локальный публичный SSH-ключ на сервер:

    ssh-copy-id root@ip-адрес-сервера

    Если вы используете Windows, то для подключения к серверу по SSH воспользуйтесь бесплатной программой Putty (по удобству очень сильно уступает графическому терминалу в Linux):

  • На сервере последовательно выполняем команды ниже. Одна команда — одна строка. Копируем-вставляем команду в терминал и нажимаем Enter.

    env ASSUME_ALWAYS_YES=yes pkg install -y pkg git nano (установим необходимые для работы пакеты)

    cd (с помощью этой команды перейдем в домашнюю папку)

    git clone -b v1.1-comss.ru https://github.com/mikhailnov/freebsd-autodeploy.git (скачаем код скрипта автонастройки)

    cd freebsd-autodeploy (перейдем в папку freebsd-autodeploy)

    ./freebsd-autodeploy.sh 3proxy-setup (запустим скрипт автоматической настройки FreeBSD и 3proxy)

  • В процессе выполнения последней команды будут запрошены желаемое имя пользователя для авторизации на вашем личном прокси-сервере, а затем пароль для этого имени пользователя. Вам нужно их ввести и нажать Enter. В конце скрипт выдаст IPv4, IPv6 (при наличии) адреса прокси-сервера, порт HTTP(S) и SOCKSv5 прокси.

Порт HTTP(S)-прокси — это случайное число от 30000 до 70000. Так сделано для того, чтобы у всех читателей этой статьи не оказались одинаковые порты прокси, что могло бы упростить взлом, например, методом перебора пароля, когда заранее известен порт прокси-сервера. Порт SOCKS-прокси на 1 больше порта HTTP(S).

Ваш личный прокси-сервер готов к использованию.

Если выполнить команду ./freebsd-autodeploy.sh, то будет выведена справка по командам скрипта:

Запустите скрипт с одним из параметров:
./freebsd-autodeploy.sh 3proxy-setup
3proxy-setup выполнит установку и настройку 3proxy с нуля на вашей системе, в т.ч. настроит FreeBSD (локаль, обновит систему и т.д.), а потом выполнит добавления пользователя (adduser)
./freebsd-autodeploy.sh listusers
listusers выведет список пользователей прокси-сервера с паролями
./freebsd-autodeploy.sh serverinfo
serverinfo попробует определить IPv4 и IPv6 адреса вашего прокси-сервера и выведет порты прокси-сервера
./freebsd-autodeploy.sh adduser
adduser запросит имя пользователя и пароль, добавит этого пользователя в 3proxy и перезапустит прокси-сервер
./freebsd-autodeploy.sh deluser
adduser запросит имя пользователя и удалит указанного пользователя
./freebsd-autodeploy.sh setup-freebsd
Выполнит базовую настройку ОС FreeBSD: настроит русскую локаль, обновит систему

Обратите внимание, что если вы заново зайдете на сервер, то сначала нужно выполнить команду cd freebsd-autodeploy, чтобы перейти в папку, в которой находится скрипт. Затем можно выполнять указанные команды, например, ./freebsd-autodeploy.sh adduser для добавления нового пользователя прокси-сервера (с логином и паролем), ./freebsd-autodeploy.sh listusers для вывода списка имеющихся пользователей, ./freebsd-autodeploy.sh serverinfo для повторного вывода IP-адресов и портов прокси-сервера.

Если вы хотите обновить скрипт, установив его новую версию, совместимую с этой инструкцией, то выполните команду git pull.

Настройка браузера на работу через прокси

В настройках Firefox можно указать прокси, чтобы все сайты открывались через него. Достаточно указать только SOCKS-прокси.

С помощью специальных расширений, например FoxyProxy для Chromium и FoxyProxy для Firefox можно настроить так, чтобы через прокси шли запросы только к определенным сайтам, а ко всем остальным трафик шел напрямую. Это позволит и скорость интернета сохранить, и получить доступ к заблокированным сайтам, внеся их в список FoxyProxy для работы через прокси.

На сайтах 2ip.ru или yandex.ru/internet можно посмотреть свой IP-адрес: если он свопадает с IP прокси-сервера, то это значит, что все настроено правильно.

Настройка Telegram на работу через прокси

Укажите прокси SOCKS.

Быстрая проверка работы прокси через командную строку Linux/UNIX/MacOS

С помощью командной строки UNIX-подобных ОС можно быстро проверить работу прокси, для этого с любого другого сервера или компьютера выполните в терминале:

env http_proxy="имя_пользователя:пароль@IP-адрес:порт" curl http://wtfismyip.com/text

В ответ вы должны увидеть IP-адрес своего прокси-сервера. Если выполнить просто curl http://wtfismyip.com/text, то вы увидите свой IP без прокси. Обратите внимание, что работа этих команд зависит от работоспособности стороннего ресурса wtfismyip.com.

Дальнейший уход за сервером (основные команды)

Логи прокси-сервера лежат в /var/log/3proxy/. Автоматическое архивирование логов раз в 30 дней. Логируется всё, кто, когда и куда ходит через прокси-сервер.

Обновление системы (установка обновлений, в т.ч. закрывающих уязвимости безопасности): pkg update; pkg upgrade

Наш скрипт сам настраивает автообновления системы раз в час, смотрите /usr/local/bin/system-autoupdate и вызов этого скрипта в 0 минут каждого часа в /etc/crontab. Это сделано для того, чтобы поддерживать безопасность сервера без вмешательства пользователя. В Linux/FreeBSD не нужно перезагружать систему для установки обновлений.

Перезагрузка: reboot

3proxy запускается автоматически, это настроено в файле /etc/rc.conf. Также можно перезапустить сервер через панельуgравления хостинга, но так лучше не делать, т.к. это эквивалентно отключению электропитания компьютера, в результате чего может произойти порча файловой системы.

Временное выключение 3proxy (до перезагрузки): service 3proxy stop

Временное включение 3proxy (до перезагрузки): service 3proxy start

Перезапуск 3proxy (остановить и запустить): service 3proxy restart

Конфиг (текстовый концигурационный файл) 3proxy расположен по адресу /usr/local/etc/3proxy.cfg, файл со списком пользователей — /usr/local/etc/3proxy.cfg.auth

Для смены стандартного порта SSH (защита от перебора паролей ботами):

nano /etc/ssh/sshd_config

В строке Port убрать знак решетки # в начале при наличии такового (то есть раскомментировать строку), 22 заменить на любой другой порт, кроме тех, что используются для прокси-сервера. Ctrl+O для сохранения и Ctrl+X для выхода из nano. Ctrl+W для поиска по тексту файла.

Перезапустить сервер SSH: service sshd restart

Если вы самостоятельно настроили фаервол, то не забудьте предварительно открыть новый порт.

Если в результате ошибки в настройках вы не можете подключиться к серверу по SSH, то попробуйте открыть браузерную консоль, эмулирующую прямой доступ к экрану сервера, как если бы был подключен монитор:

Русскоязычная подробная докуменатция по операционной системе FreeBSD

Улучшения статьи и скрипта freebsd-autodeploy

Скрипт freebsd-autodeploy был написан для использования в этой статье, однако, возможно, в будущем его функционал будет расширен, например, для автоматической настройки не только proxy, но и VPN и защиты сервера с помощью фаервола. Разработка ведется на Github. Так как в статье предлагается брать исходный код скрипта прямо с Github, для того, чтобы пользователи всегда получали именно ту версию, которая совместима с этой инструкцией, создан отдельный бранч v1.1-comss.ru, в рамках которого в скрипт могут вноситься незначительные доработки и исправления ошибок (о которых вы можете написать в комментариях к этой статье) с сохранением совместимости всего функционала с тем, что написано в этой статье. В бранче master ведется дальнейшая разработка скрипта под свободной лицензией GPLv3. В папке doc/ в дереве исходных кодов находится текст этой статьи. Если у вас есть правки к скрипту или статье, пишите в комментариях или присылайте их пулл-реквестами на Github. Спасибо.

Скрипт автоматически настраивает ОС FreeBSD версии 11 (работа на других версиях не проверялась, но должно работать): настраивает русскую UTF-8 локаль, делает bash шеллом пользователя root, настраивает автоматические обновления системы раз в час для оперативного закрытия уязвимостей, устанавливает и настраивает прокси-сервер 3proxy из репозитория. Пока не хватает автоматической настройки фаервола, смены порта SSH и fail2ban для дополнительной безопасности. FreeBSD была выбрана потому, что в репозиториях дистрибутивов Linux нет 3proxy, да и настройка Линукса заезженная тема, в отличие от FreeBSD.

Работа скрипта проверена на образах FreeBSD на хостингах «Айхор», Vultr, DigitalOcean, а также официальном установочном образе FreeBSD 11.1.

Автор: Михаил Новоселов

Нашли опечатку? Нажмите Ctrl+Enter

Комментарии и отзывы

Добавляя комментарий, ознакомьтесь с Правилами сообщества