Поднимаем свой socks5 proxy-сервер

6
20853

Вводятся постоянные блокировки, и может возникнуть потребность в бюджетном способе их обхода, например, использование socks5. Как это сделать? Рассказываем в нашем материале.

Если у вас нет своей VDS

Берем, регистрируемся на digitalocean.com, за регистрацию по реферальной ссылке получаем 10$.

Простой способ поднятия VPN

  1. Создайте аккаунт на Digital Ocean и добавьте свои платежные данные.
  2. Заходим сюда.
  3. Нажимаем кнопку Digital Ocean.
  4. Скрипт собирает droplet c vpn после установки отдаёт настройки с vpn и все, пользуетесь на здоровье.

И того, всего нужно сделать 3 клика.

Правда это будет стоить $5 в месяц, но можно легко разделить на друзей.

Если кто тестировал VPN в три клика на DigitalOcean и не получалось подключить клиента с Win 10 и в «диспетчере событий» (eventvwr.msc) появляется error 720, то в «Диспетчере устройств» (devmgmt.msc) удалите все сетевые адаптеры начинающиеся с «WAN Miniport» и обновите конфигурацию оборудования. После всё будет работать.

Не очень простой способ поднятия socks5

  • Выберете самый дешевый тариф как описано ниже (у вас будут списывать деньги за час, а не сразу за весь месяц)
  • Создаем новый droplet любой конфигурации, минимальный стоит 5$/месяц, трафик 1TB, чуть дороже 10$/месяц — трафик 2TB, 20$ — 4TB. Операционная система ubuntu 16.04.4 x64 подойдет идеально.

socks5
Просто создайте дроплет. Меню может изменится в будущем, но все будет понятно

socks5
Выберете Ubuntu 16.04.

socks5
Выберите самый дешевый тариф. Провайдеры типа Vulture или Hetzner дешевле, но у DO отличнейший сервис

 

socks5
Выберите регион, который ближе всего к вашему

Вы можете заметить, что у вас нет ssh ключа в вашем аккаунте. Если так, то вот чуть про ssh ключи и как их настроить

Если вы пользователь Windows — не беспокойтесь, я расскажу как легко работать с ssh ключами в Windows.

Доступ до вашего VDS

socks5

Если вы Linux или Mac пользователь, то вы скорее всего уже знаете как сгенерировать ssh ключи и как использовать их. В этом случае, просто загрузите приватный ключ на ваш аккаунт Digital Ocean и проследуйте дальше.

Также — включение двухфакторной аутентификации добавит безопасности и избавит от головной боли в случае чего.
socks5
Это меню находит в разделе Settings -> Security tab

socks5
Загрузка вашего ключа это просто копирование и вставка вашего публичного ключа

Есть один момент — DO ожидает формат вашего ключа как если бы он был сгенерирован Linux ssh генератором. Это выглядит вот так:

ssh-rsa AAAAB3NzaC ...7QpNuybOgF [email protected]

Теперь часть для windows пользователей

Я лично использую Putty и PuttyGen. SSH ключи — это базовый метод контроля Linux серверов и защищенного доступа. Можно прочитать про это на википедии. Если вы Windows пользователь ssh консоль это тоже самое как и cmd.exe.

Не беспокойтесь об этом, на самом деле это довольно просто.

Но если вы сгенерировали ключи через Putty, ваш публичный ключ будет выглядеть как то так и в таком виде он не будет работать с Ubuntu:

Убедиться, что ваш ключ будет работать с DO можно следуя этим указаниям

  • Создать ключ используя Linux как описано здесь. Вы будете использовать этот ключ на сервере DO.
  • Сохраните новые созданные публичный и приватные ключи где нибудь на своем компьютере
  • Загрузите приватный ключ в PuttyGen через Conversion -> Import Key
  • Затем нажмите «save private key» — вы будете использовать этот ключ с Putty позже

socks5Конвертирование ключа в PuttyGen

Если вы не имеет доступа до Linux консоли, вы можете сгенерировать ключи используя следующие действия**:

  • Создайте дроплет в DO, сбросьте root пароль (смотрите картинку), откройте в онлайн консоли. Создайте ключи там и используйте команду cat для вывода ключа
  • Создайте дроплет в DO, сбросьте root пароль, откройте Putty и введите логин, пароль
  • В обоих случаях — будет проще создать новый дроплет после того, как нужные ключи будут установлены

 

socks5
Это меню позволяет сбросить пароли и запустить онлайн консоль

Наконец-то получить доступ до своего дроплета используя Putty и ключи

  • Создайте новое соединение в Putty
  • Введите ваш IP адрес и порт (обычно 22)
  • Введите имя для вашего соединения и нажмите сохранить
  • Пойдите в data -> Auto-login username и введите root
  • Пойдите в data -> SSH -> Auth и выберет приватный ключ, который вы сохранили с помощью PuttyGen;
  • Не забудьте вернуться обратно в сессию после всех настроек

socks5
socks5
socks5

Настройка вашего VDS и прокси сервера

Теперь у вас есть ваш собственный VDS и ssh терминал с root доступом до него. Отлично!

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

socks5

Поднятие socks5 через Docker

Выбираем при создании Droplet в разделе One-click Apps образ Docker:
socks5

Логинимся на сервер через ssh и загружаем готовый Docker-образ и запускаем его:

Таким образом, вы создали прокси сервер с логином your_username и паролем your_password c портом 1080. См. секцию Использование socks5 для добавления настроек в приложение Telegram.

Если хочется сделать свой велосипед

После создания авторизуемся как root, используя ssh и выполняем следующие команды (должны работать):

 

Можно из под ssh это сделать используя vim, либо подключитесь по ftp/sftp и отредактруйте файл текстовым редактором
Важный момент — юзера стоит создавать с флагом —shell /usr/sbin/nologin
Таким образом, этот юзер не сможет шариться по VPS через ssh. Особенно учитывая что пасс от него летает по сети в открытом виде.
Теперь создаем пользователя для прокси

вводим ему пароль дважды и запоминаем

Использование socks5

socks5Hostname это IP адрес вашего дроплета. Порт из конфига данте. Логин и пароль, тот который вы выбрали

Или например, можно использовать браузер Firefox, который из коробки умеет это, в отличии от Chrome и других браузеров на основе Chromium, которые не поддерживают прокси аутентификацию. А еще можно установить в него дополнительные расширения (тысячи их), которые позволять легко управлять прокси для разных сайтов.

Поднимаем сервера, делимся с друзьями. Учтите, что чем больше друзей использует ваш прокси-сервер, тем выше расход трафика.

 




6 Комментарии

  1. хорошая статья, на волне паники из-за блокировки телеграммы сойдет как указание на то, что примерно нужно сделать.
    Есть правда несколько НО:
    1. если не приходилось работать с ключами, линуксами/юниксами и putty в винде, то возня с ключами обеспечена, для новичка это будет гемор.
    2. конфигурирование danted — в эту версию из репов ставится древнючая 1.19, а сообщения в лог нифига не информативные. Нет в 1.19 параметра user.Unprivileged: nobody, есть user.NOTnprivileged: nobody. Unprivileged это из 1.41 мозги вывихнешь пока поймешь. Короче понамешано, и не разберешься, пока не начнешь версии сравнивать.

    В общем, ничего так квестик получился.

    • Может версия и древняя, но работает.
      Просто не нужно огульно копировать чужие конфиги.
      Если даже посмотреть на тот конфигурированиям, что дан для примера, а потом глазками пробежать по дефолтному и раскомментариить нужные строки, то все получится.

  2. Скажите, а как ограничить количество одновременных подключений для пользователя? Хочу сделать логины друзьям, но ограничить 2-3 подключениями, чтобы доступы не расползлись по интернету.

  3. Можно всё гораздо проще. Зачем из исходников собирать? можно скачать сразу deb пакет из ppa:
    wget http://ppa.launchpad.net/dajhorn/dante/ubuntu/pool/main/d/dante/dante-server_1.4.1-1_amd64.deb
    dpkg -i dante-server_1.4.1-1_amd64.deb
    и второе. Конфигурацию всё-таки классически надо делать что-то типа:
    cat <> /etc/dante.conf
    config
    EOF

  4. Большое спасибо за статью, очень пригодилась все получилось, есть в ней только один косяк — опечатка
    # запуск сервера как демона
    /home/dante/sbin/sockd -f /home/dante/dantedconf -D
    в этой команде в имени конфиг файла пропущена точка, сервер не может открыть конфиг и не стартует с говорящей об этом ошибкой, правильно так:
    /home/dante/sbin/sockd -f /home/dante/danted.conf -D