Skip to content
advanced

Создайте локальный конфигуратор SOCKS5 для цепочки и ротации прокси ChangeMyIP (Windows, macOS, Linux)

Превратите любое приложение в приложение с прокси: запустите локальный конфигуратор SOCKS5 с gost, соедините две конечные точки ChangeMyIP в цепочку для маршрутизации между странами и выполняйте ротацию между резидентными узлами.

Windows macOS Linux SOCKS5 Приватность/Анонимность

Обзор

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

В этом руководстве вы создадите такой конфигуратор с помощью gost — открытого прокси-инструмента — и направите его на конечные точки SOCKS5 ChangeMyIP. Затем вы добавите второй переход для цепочки между странами, настроите ротацию между несколькими конечными точками внутри одного перехода, скроете учётные данные и запустите слушатель постоянно в Windows, macOS и Linux.

Любой поставщик SOCKS5 работает с приведённой ниже конфигурацией. ChangeMyIP используется в качестве примера, потому что он предлагает SOCKS5 на выделенных и общих серверных конечных точках, а также на ротируемых резидентных конечных точках, и потому что фиксированная месячная оплата означает, что постоянно работающий локальный слушатель не добавляет стоимости за запрос.

Предварительные требования

  • План ChangeMyIP, включающий доступ по SOCKS5, а также хост, порт, имя пользователя и пароль конечной точки из панели управления.
  • По одной конечной точке для каждого перехода, который вы планируете объединить в цепочку (для цепочки нужны две независимые конечные точки).
  • Разрешение привязать слушатель к 127.0.0.1:1080 или любому свободному локальному порту.
  • curl для проверки.
  • Базовые навыки редактирования файла YAML.

Как конфигуратор располагается между вашими приложениями и ChangeMyIP

Путь трафика:

  1. Приложение открывает соединение SOCKS5 к 127.0.0.1:1080.
  2. Конфигуратор принимает его и перенаправляет сессию к первой конечной точке ChangeMyIP (входному переходу).
  3. Если определён второй переход, входная конечная точка открывает соединение с выходной конечной точкой.
  4. Выходная конечная точка выполняет исходящий запрос, и ответ возвращается обратно по цепочке.

Что это даёт:

  • Единый локальный порт, который может использовать любое приложение, включая приложения без встроенных настроек прокси.
  • Удалённое разрешение DNS, поэтому при использовании схемы socks5h запросы имён не утекают к вашему локальному резолверу.
  • Предсказуемый исходящий трафик: серверная конечная точка для стабильного IP или ротируемая резидентная конечная точка, когда нужна диверсификация IP.
  • Маршрутизация через цепочку: принудительно направляйте трафик через определённую пару локаций, объединяя две конечные точки в цепочку.

Шаги

  1. Классифицируйте конечные точки ChangeMyIP, которые будете использовать. Скопируйте хост, порт, имя пользователя и пароль для каждой из них и отметьте, является ли она выделенной серверной, общей серверной или ротируемой резидентной конечной точкой.
Роль в конфигураторе Тип конечной точки Когда использовать
Входной переход Выделенный серверный Быстрый и стабильный первый участок; держите его ближе к вашему региону, чтобы ограничить задержку
Входной переход Резидентный ротируемый Когда первый участок не должен указывать обратно на одну серверную подсеть
Выходной переход Серверный или резидентный в целевой стране Когда конечный IP должен отображаться в определённой стране или городе
Один переход (без цепочки) Любой Повседневная маршрутизация, где достаточно одного выходного IP
  1. Установите gost. Скачайте архив релиза для вашей операционной системы и архитектуры со страницы релизов gost, затем распакуйте его.

Windows (PowerShell):

Expand-Archive -Path .\gost_*_windows_amd64.zip -DestinationPath .\gost
.\gost\gost.exe -V

macOS и Linux (используйте архив darwin или linux и соответствующую сборку amd64 или arm64):

tar -xzf gost_*_linux_amd64.tar.gz
sudo install -m 0755 gost /usr/local/bin/gost
gost -V
  1. Создайте конфигурацию конфигуратора для одного перехода. Сохраните её как gost.yaml и ограничьте доступ, потому что она содержит учётные данные.
chmod 600 gost.yaml
services:
  - name: socks-in
    addr: "127.0.0.1:1080"
    handler:
      type: socks5
      chain: cmi-single
    listener:
      type: tcp

chains:
  - name: cmi-single
    hops:
      - name: hop-exit
        nodes:
          - name: exit-dc
            addr: proxy-host.example:1080
            connector:
              type: socks5
              auth:
                username: YOUR_USERNAME
                password: YOUR_PASSWORD

Замените proxy-host.example:1080 на конечную точку из вашей панели ChangeMyIP и введите учётные данные, выданные с вашим планом.

  1. Запустите слушатель и проверьте его.
gost -C gost.yaml

Во втором терминале убедитесь, что выходной IP принадлежит прокси, а не вам:

curl --silent --show-error --proxy socks5h://127.0.0.1:1080 https://api.ipify.org
echo
curl --silent https://api.ipify.org
echo

Первый запрос должен сообщить адрес конечной точки ChangeMyIP; второй сообщает ваш собственный адрес подключения.

  1. Добавьте второй переход, чтобы объединить две локации в цепочку. Запрос идёт: приложение → входная конечная точка → выходная конечная точка → целевой сайт. Сайт видит адрес выходной конечной точки; выходная конечная точка видит входную как своего клиента.
services:
  - name: socks-in
    addr: "127.0.0.1:1080"
    handler:
      type: socks5
      chain: cmi-two-hop
    listener:
      type: tcp

chains:
  - name: cmi-two-hop
    hops:
      - name: hop-entry
        nodes:
          - name: entry-de
            addr: entry-host.example:1080
            connector:
              type: socks5
              auth:
                username: YOUR_USERNAME
                password: YOUR_PASSWORD
      - name: hop-exit
        nodes:
          - name: exit-us
            addr: exit-host.example:1080
            connector:
              type: socks5
              auth:
                username: YOUR_USERNAME
                password: YOUR_PASSWORD
  1. Настройте ротацию между конечными точками внутри перехода с помощью селектора. Так вы распределяете трафик по нескольким различным адресам вместо привязки к одному узлу.
      - name: hop-exit
        selector:
          strategy: round
          maxFails: 1
          failTimeout: 30s
        nodes:
          - name: exit-us-1
            addr: exit-us-1.example:1080
            connector:
              type: socks5
              auth:
                username: YOUR_USERNAME
                password: YOUR_PASSWORD
          - name: exit-us-2
            addr: exit-us-2.example:1080
            connector:
              type: socks5
              auth:
                username: YOUR_USERNAME
                password: YOUR_PASSWORD
          - name: exit-us-3
            addr: exit-us-3.example:1080
            connector:
              type: socks5
              auth:
                username: YOUR_USERNAME
                password: YOUR_PASSWORD

Если вы предпочитаете не перечислять адреса самостоятельно, направьте переход на одну ротируемую резидентную конечную точку: ChangeMyIP ротирует IP на своей стороне, а конфигуратору нужен только один узел. Пул охватывает 40+ стран, 300+ городов и 1000+ подсетей, поэтому вы можете распределить ротацию по множеству различных сетей, когда задача требует выглядеть как несвязанные посетители.

  1. Направьте ваши приложения на локальный слушатель. В настройках прокси браузера укажите хост SOCKS5 127.0.0.1 и порт 1080 с включённым удалённым DNS, чтобы имена разрешались прокси. Инструменты командной строки обычно принимают флаг или переменную окружения:
export ALL_PROXY=socks5h://127.0.0.1:1080
export HTTPS_PROXY=socks5h://127.0.0.1:1080

Некоторые инструменты игнорируют эти переменные и требуют явного флага, например curl --proxy socks5h://127.0.0.1:1080. Для всего, что связано с приватностью, всегда предпочитайте схему socks5h вместо socks5.

  1. Поддерживайте работу конфигуратора. В Linux самый чистый вариант — юнит systemd:
[Unit]
Description=Local SOCKS5 configurator (gost)
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/local/bin/gost -C /etc/gost/gost.yaml
Restart=on-failure
User=proxyuser
NoNewPrivileges=true

[Install]
WantedBy=multi-user.target
sudo install -m 0600 gost.yaml /etc/gost/gost.yaml
sudo systemctl daemon-reload
sudo systemctl enable --now gost
systemctl status gost

В Windows создайте задачу в Планировщике заданий, которая запускает gost.exe -C C:\\gost\\gost.yaml при входе в систему, и настройте её запуск независимо от того, вошёл пользователь в систему или нет. В macOS запустите ту же команду из терминала во время тестирования, затем оберните её в LaunchAgent, чтобы она запускалась при входе в систему.

Проверка цепочки и поведения DNS

Повторите запрос в цикле, чтобы увидеть, происходит ли ротация на самом деле:

for i in 1 2 3; do
  curl --silent --proxy socks5h://127.0.0.1:1080 https://api.ipify.org
  echo
done

Проверьте сообщаемое местоположение выходного адреса:

curl --silent --proxy socks5h://127.0.0.1:1080 https://ifconfig.co/json
  • Один переход возвращает адрес этой конечной точки. Цепочка из двух переходов возвращает адрес выходной конечной точки, но никогда — входной. Если вы видите входной адрес, цепочка не применяется.
  • Схема socks5h просит прокси разрешать имена хостов. Обычная socks5:// разрешает локально, что может раскрыть ваш резолвер и приблизительное местоположение, даже если сам трафик идёт через прокси.
  • Если при настроенном селекторе каждый запрос возвращает один и тот же адрес, проверьте, не исключают ли узлы параметры maxFails и failTimeout, и не является ли сама конечная точка липким серверным адресом.

Устранение неполадок

Симптом Вероятная причина Решение
Failed to connect to 127.0.0.1 port 1080 Слушатель не запущен или привязан к другому порту Запустите gost -C gost.yaml и проверьте значение addr в конфигурации
Ошибка аутентификации SOCKS5 Неверное имя пользователя, пароль или хост конечной точки Заново скопируйте учётные данные из панели управления и проверьте конечную точку напрямую с помощью curl
Каждый запрос завершается по тайм-ауту Брандмауэр блокирует исходящий доступ к порту конечной точки, или ваш исходный IP не авторизован Проверьте конечную точку без конфигуратора, затем разрешите соединение в брандмауэре
Сообщаемый IP — ваш собственный Приложение обходит слушатель, или вы использовали socks5:// вместо socks5h:// Направьте приложение на 127.0.0.1:1080 и переключите схему на socks5h
IP никогда не меняется Один узел без селектора или липкая серверная конечная точка Добавьте селектор с несколькими узлами или переведите переход на ротируемую резидентную конечную точку
Цепочка работает, но медленно Два перехода удваивают время кругового обхода Вернитесь к одному переходу или разместите входной переход ближе к вашему региону
Изменения конфигурации не действуют Всё ещё работает старый процесс Перезапустите службу командой systemctl restart gost или остановите процесс в терминале и запустите его снова

Итоги

  • Локальный конфигуратор SOCKS5, созданный здесь с помощью gost, даёт каждому приложению на машине одну прокси-конечную точку по адресу 127.0.0.1:1080, независимо от того, поддерживает ли приложение прокси.
  • Один переход даёт стабильный исходящий трафик; два перехода дают маршрутизацию между странами, при этом сайты видят адрес выходной конечной точки.
  • Селекторы выполняют ротацию между несколькими конечными точками внутри перехода, тогда как ротируемая резидентная конечная точка выполняет ротацию на стороне провайдера.
  • Используйте схему socks5h, чтобы DNS разрешался прокси, и проверяйте результат повторяющимся циклом curl и запросом геолокации.
  • Держите файл YAML с правами 0600 и запускайте слушатель как службу, чтобы он переживал перезагрузки и выходы из системы.