Создайте локальный конфигуратор SOCKS5 для цепочки и ротации прокси ChangeMyIP (Windows, macOS, Linux)
Превратите любое приложение в приложение с прокси: запустите локальный конфигуратор SOCKS5 с gost, соедините две конечные точки ChangeMyIP в цепочку для маршрутизации между странами и выполняйте ротацию между резидентными узлами.
Обзор
Конфигуратор SOCKS5 — это небольшая локальная служба, которая прослушивает порт на вашей машине и перенаправляет всё, что отправляют ваши приложения, через неё к вышестоящему прокси или через цепочку прокси. Это практичное решение, когда у приложения нет собственных настроек прокси или когда вы хотите, чтобы несколько несвязанных приложений использовали одну конфигурацию прокси вместо отдельного редактирования каждого.
В этом руководстве вы создадите такой конфигуратор с помощью gost — открытого прокси-инструмента — и направите его на конечные точки SOCKS5 ChangeMyIP. Затем вы добавите второй переход для цепочки между странами, настроите ротацию между несколькими конечными точками внутри одного перехода, скроете учётные данные и запустите слушатель постоянно в Windows, macOS и Linux.
Любой поставщик SOCKS5 работает с приведённой ниже конфигурацией. ChangeMyIP используется в качестве примера, потому что он предлагает SOCKS5 на выделенных и общих серверных конечных точках, а также на ротируемых резидентных конечных точках, и потому что фиксированная месячная оплата означает, что постоянно работающий локальный слушатель не добавляет стоимости за запрос.
Предварительные требования
- План ChangeMyIP, включающий доступ по SOCKS5, а также хост, порт, имя пользователя и пароль конечной точки из панели управления.
- По одной конечной точке для каждого перехода, который вы планируете объединить в цепочку (для цепочки нужны две независимые конечные точки).
- Разрешение привязать слушатель к
127.0.0.1:1080или любому свободному локальному порту. curlдля проверки.- Базовые навыки редактирования файла YAML.
Как конфигуратор располагается между вашими приложениями и ChangeMyIP
Путь трафика:
- Приложение открывает соединение SOCKS5 к
127.0.0.1:1080. - Конфигуратор принимает его и перенаправляет сессию к первой конечной точке ChangeMyIP (входному переходу).
- Если определён второй переход, входная конечная точка открывает соединение с выходной конечной точкой.
- Выходная конечная точка выполняет исходящий запрос, и ответ возвращается обратно по цепочке.
Что это даёт:
- Единый локальный порт, который может использовать любое приложение, включая приложения без встроенных настроек прокси.
- Удалённое разрешение DNS, поэтому при использовании схемы
socks5hзапросы имён не утекают к вашему локальному резолверу. - Предсказуемый исходящий трафик: серверная конечная точка для стабильного IP или ротируемая резидентная конечная точка, когда нужна диверсификация IP.
- Маршрутизация через цепочку: принудительно направляйте трафик через определённую пару локаций, объединяя две конечные точки в цепочку.
Шаги
- Классифицируйте конечные точки ChangeMyIP, которые будете использовать. Скопируйте хост, порт, имя пользователя и пароль для каждой из них и отметьте, является ли она выделенной серверной, общей серверной или ротируемой резидентной конечной точкой.
| Роль в конфигураторе | Тип конечной точки | Когда использовать |
|---|---|---|
| Входной переход | Выделенный серверный | Быстрый и стабильный первый участок; держите его ближе к вашему региону, чтобы ограничить задержку |
| Входной переход | Резидентный ротируемый | Когда первый участок не должен указывать обратно на одну серверную подсеть |
| Выходной переход | Серверный или резидентный в целевой стране | Когда конечный IP должен отображаться в определённой стране или городе |
| Один переход (без цепочки) | Любой | Повседневная маршрутизация, где достаточно одного выходного IP |
- Установите 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
- Создайте конфигурацию конфигуратора для одного перехода. Сохраните её как
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 и введите учётные данные, выданные с вашим планом.
- Запустите слушатель и проверьте его.
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; второй сообщает ваш собственный адрес подключения.
- Добавьте второй переход, чтобы объединить две локации в цепочку. Запрос идёт: приложение → входная конечная точка → выходная конечная точка → целевой сайт. Сайт видит адрес выходной конечной точки; выходная конечная точка видит входную как своего клиента.
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
- Настройте ротацию между конечными точками внутри перехода с помощью селектора. Так вы распределяете трафик по нескольким различным адресам вместо привязки к одному узлу.
- 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+ подсетей, поэтому вы можете распределить ротацию по множеству различных сетей, когда задача требует выглядеть как несвязанные посетители.
- Направьте ваши приложения на локальный слушатель. В настройках прокси браузера укажите хост 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.
- Поддерживайте работу конфигуратора. В 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и запускайте слушатель как службу, чтобы он переживал перезагрузки и выходы из системы.