Skip to content
Intermediate / 3 min read

Как настроить прокси IPRoyal Shadowsocks на Linux для приватного трафика CLI и браузера

Настройте IPRoyal Shadowsocks на Linux с shadowsocks-libev, запустите его как службу systemd, проверьте исходящий IP и направьте трафик curl, Git, Python и браузера через локальный SOCKS5-прокси.

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

Обзор

Shadowsocks — это шифрованный прокси-протокол на основе SOCKS5. В Linux локальный клиент Shadowsocks прослушивает 127.0.0.1:1080, шифрует трафик и перенаправляет его на удалённую конечную точку Shadowsocks. Это позволяет направлять выбранные инструменты CLI, браузеры или системный трафик через конечную точку IPRoyal Shadowsocks, не меняя весь сетевой стек.

В этом руководстве показано, как настроить прокси IPRoyal Shadowsocks в Linux с помощью shadowsocks-libev, запустить клиент как службу systemd, проверить ваш исходящий IP и направить такие распространённые инструменты, как curl, git, Python и Firefox, через локальный SOCKS5-прослушиватель. IPRoyal используется как пример провайдера, поскольку он предлагает резидентные, ISP- и датацентровые прокси с поддержкой HTTP, SOCKS5 и Shadowsocks. Если вы используете другого провайдера, замените учётные данные и данные сервера на свои.

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

  • Дистрибутив Linux с systemd, например Ubuntu, Debian, Fedora, Arch Linux, или совместимый сервер или настольная система.
  • Доступ sudo или root для установки и управления службами.
  • Аккаунт IPRoyal с учётными данными Shadowsocks: адрес сервера, порт сервера, пароль и метод шифрования.
  • Базовое знакомство с терминалом и текстовыми редакторами, такими как nano или vim.
  • Необязательно: curl для тестирования.

Как IPRoyal Shadowsocks вписывается в настройку Linux

Shadowsocks — это не HTTP-прокси. Он создаёт шифрованный туннель к удалённой конечной точке и предоставляет локальный SOCKS5-прокси. Ваши приложения должны быть настроены на использование этого локального SOCKS5-прокси, либо вы можете выборочно направлять через него трафик.

Типичный поток:

  1. Приложение подключается к 127.0.0.1:1080.
  2. Локальный клиент Shadowsocks шифрует запрос.
  3. Зашифрованный запрос отправляется на конечную точку IPRoyal Shadowsocks.
  4. Конечная точка перенаправляет запрос на целевой сайт.
  5. Ответ возвращается через тот же туннель.

Поскольку локальный прослушиватель — это SOCKS5, вы можете использовать его с инструментами, поддерживающими SOCKS5 или socks5h (SOCKS5 с удалённым разрешением DNS). Используйте socks5h, когда хотите, чтобы DNS-запросы разрешались через прокси, а не на вашей локальной машине.

Шаги

Шаг 1: Установите клиент Shadowsocks в Linux

Установите shadowsocks-libev, который предоставляет клиент ss-local и хорошо работает с systemd.

Для Debian или Ubuntu:

sudo apt update
sudo apt install shadowsocks-libev

Для Fedora или дистрибутивов семейства RHEL:

sudo dnf install shadowsocks-libev

Для Arch Linux:

sudo pacman -S shadowsocks-libev

Если в вашем дистрибутиве нет пакета shadowsocks-libev, вы можете установить shadowsocks-rust из менеджера пакетов или собрать его из исходников. Приведённые ниже принципы конфигурации те же, хотя имена бинарных файлов могут отличаться.

Шаг 2: Создайте файл окружения IPRoyal Shadowsocks

Создайте файл окружения, содержащий данные конечной точки IPRoyal Shadowsocks. Замените значения-заполнители на точные сервер, порт, пароль и метод из вашей панели IPRoyal.

sudo mkdir -p /etc/iproyal
sudo nano /etc/iproyal/shadowsocks.env

Добавьте следующие значения:

SS_SERVER=YOUR_IPROYAL_SERVER
SS_PORT=8388
SS_PASSWORD=YOUR_IPROYAL_PASSWORD
SS_METHOD=aes-256-gcm
SS_LOCAL_ADDRESS=127.0.0.1
SS_LOCAL_PORT=1080

Примечания:

  • Используйте метод шифрования точно так, как указано IPRoyal. Распространённые методы включают aes-256-gcm, chacha20-ietf-poly1305 и aes-128-gcm, но конечная точка должна поддерживать выбранный вами метод.
  • Если IPRoyal предоставляет вам конечную точку SOCKS5 вместо конечной точки Shadowsocks, используйте конфигурацию клиента SOCKS5 или такой инструмент, как ProxyChains, вместо Shadowsocks.
  • Если файл содержит учётные данные, держите его доступным для чтения только root:
sudo chmod 600 /etc/iproyal/shadowsocks.env

Шаг 3: Проверьте конфигурацию в режиме переднего плана

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

sudo ss-local -s YOUR_IPROYAL_SERVER -p 8388 -b 127.0.0.1 -l 1080 -k YOUR_IPROYAL_PASSWORD -m aes-256-gcm -u -v

Оставьте этот терминал открытым. Во втором терминале проверьте локальный SOCKS5-прослушиватель:

curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me

Если команда возвращает IP-адрес, отличающийся от вашего обычного публичного IP, туннель работает. Нажмите Ctrl+C в первом терминале, чтобы остановить клиент в режиме переднего плана.

Шаг 4: Запустите клиент Shadowsocks как службу systemd

Создайте unit-файл systemd, чтобы клиент запускался при загрузке и перезапускался после сбоев.

sudo nano /etc/systemd/system/iproyal-shadowsocks.service

Добавьте:

[Unit]
Description=IPRoyal Shadowsocks local client
After=network-online.target
Wants=network-online.target

[Service]
EnvironmentFile=/etc/iproyal/shadowsocks.env
ExecStart=/usr/bin/ss-local -s ${SS_SERVER} -p ${SS_PORT} -b ${SS_LOCAL_ADDRESS} -l ${SS_LOCAL_PORT} -k ${SS_PASSWORD} -m ${SS_METHOD} -u
Restart=on-failure
RestartSec=5
LimitNOFILE=32768

[Install]
WantedBy=multi-user.target

Измените путь в ExecStart, если ваш бинарный файл ss-local находится в другом месте. Его можно найти с помощью:

command -v ss-local

Если ваш провайдер не поддерживает ретрансляцию UDP, удалите -u из строки ExecStart.

Перезагрузите systemd и запустите службу:

sudo systemctl daemon-reload
sudo systemctl enable --now iproyal-shadowsocks
sudo systemctl status iproyal-shadowsocks

Шаг 5: Проверьте локальный SOCKS5-прослушиватель и исходящий IP

Убедитесь, что клиент прослушивает локально:

ss -ltnp | grep 1080

Затем проверьте исходящий IP через прокси:

curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me
curl --socks5-hostname 127.0.0.1:1080 https://ipinfo.io/ip

Сравните результат с вашим прямым соединением:

curl https://ifconfig.me

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

Шаг 6: Направьте инструменты CLI через локальный SOCKS5-прокси

Используйте локальный SOCKS5-прослушиватель с инструментами, поддерживающими SOCKS5. Предпочитайте socks5h, чтобы разрешение DNS происходило через прокси.

Для curl:

curl --socks5-hostname 127.0.0.1:1080 https://httpbin.org/ip

Для git:

git config --global http.proxy socks5h://127.0.0.1:1080
git config --global https.proxy socks5h://127.0.0.1:1080

Чтобы позже удалить эти настройки прокси Git:

git config --global --unset http.proxy
git config --global --unset https.proxy

Для Python requests установите поддержку SOCKS и используйте прокси:

python3 -m pip install 'requests[socks]'
import requests

proxies = {
    'http': 'socks5h://127.0.0.1:1080',
    'https': 'socks5h://127.0.0.1:1080',
}

response = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=30)
print(response.json())

Для wget используйте совместимую с SOCKS5 обёртку или переменные окружения, где они поддерживаются. curl и Python обычно обеспечивают наиболее однозначное поведение при тестировании SOCKS5.

Шаг 7: Настройте браузер или прокси рабочего стола

В Firefox откройте Настройки, найдите Настройки сети, выберите Настроить прокси вручную и укажите:

  • Узел SOCKS: 127.0.0.1
  • Порт: 1080
  • SOCKS v5: выбрано
  • Проксировать DNS при использовании SOCKS v5: включено

Для настольных сред GNOME вы можете настроить системный прокси вручную:

gsettings set org.gnome.system.proxy mode 'manual'
gsettings set org.gnome.system.proxy.socks host '127.0.0.1'
gsettings set org.gnome.system.proxy.socks port 1080

Чтобы вернуться к прямому соединению:

gsettings set org.gnome.system.proxy mode 'none'

Не каждое приложение учитывает системные настройки прокси. Если сомневаетесь, настройте прокси непосредственно в приложении или используйте обёртку с поддержкой SOCKS5.

Шаг 8: Проверьте поведение DNS и утечек

Выполните запрос, который сообщает DNS-резолвер и IP:

curl --socks5-hostname 127.0.0.1:1080 https://ipinfo.io/json

Проверьте, принадлежит ли указанный IP конечной точке прокси. Поскольку socks5h отправляет имя хоста прокси для разрешения, локальные DNS-запросы для этого запроса не выполняются. Если вместо этого использовать socks5://, имя хоста может сначала разрешаться локально, что может привести к утечке DNS-информации.

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

Служба запускается, но IP не меняется

  • Убедитесь, что ваша тестовая команда использует --socks5-hostname или socks5h://, а не прямое соединение.
  • Проверьте журналы службы:
journalctl -u iproyal-shadowsocks -e
  • Убедитесь, что адрес сервера, порт, пароль и метод шифрования точно совпадают с панелью IPRoyal.
  • Проверьте с другим назначением, например https://httpbin.org/ip, чтобы исключить поведение, зависящее от сайта.

ss-local завершается с ошибкой аутентификации или метода

  • Метод шифрования должен совпадать с удалённой конечной точкой. Если IPRoyal предоставляет chacha20-ietf-poly1305, не используйте aes-256-gcm.
  • Проверьте поле пароля на наличие завершающих пробелов или скрытых символов.
  • Если ваш пароль содержит специальные символы, правильно заключите его в кавычки в файле окружения или используйте файл конфигурации, который поддерживает ваш клиент.
  • Запустите клиент в подробном режиме, чтобы увидеть точную ошибку:
sudo ss-local -s YOUR_IPROYAL_SERVER -p 8388 -b 127.0.0.1 -l 1080 -k YOUR_IPROYAL_PASSWORD -m aes-256-gcm -u -v

Отказ в соединении на 127.0.0.1:1080

  • Возможно, порт 1080 уже используется другой службой. Проверьте с помощью:
sudo ss -ltnp | grep 1080
  • Измените SS_LOCAL_PORT в файле окружения на другое значение, например 1081, перезапустите службу и обновите команды клиента.
  • Убедитесь, что служба systemd действительно запущена:
systemctl is-active iproyal-shadowsocks

Тайм-ауты или низкая пропускная способность

  • Попробуйте другую конечную точку или регион IPRoyal, если ваша панель предлагает несколько локаций.
  • Проверьте в режиме только TCP, удалив -u из строки ExecStart, если конечная точка не поддерживает UDP.
  • Проверьте локальный брандмауэр и сетевые политики. Некоторые корпоративные или университетские сети блокируют нестандартные исходящие порты.
  • Снижайте значения тайм-аута только для тестирования; очень низкие тайм-ауты могут вызывать ложные сбои на медленных каналах.

Браузерный трафик не использует прокси

  • В Firefox убедитесь, что выбран SOCKS v5 и включено «Проксировать DNS при использовании SOCKS v5».
  • Если используете настройки GNOME, помните, что только некоторые приложения учитывают системный прокси.
  • Проверьте то же назначение с помощью curl --socks5-hostname, чтобы убедиться, что локальный SOCKS5-прослушиватель работает независимо от браузера.

Итог

Вы настроили конечную точку IPRoyal Shadowsocks в Linux, установив shadowsocks-libev, создав локальную конфигурацию клиента, запустив её как службу systemd и проверив исходящий IP через локальный SOCKS5-прослушиватель. Вы также узнали, как направлять трафик curl, Git, Python requests и браузера через 127.0.0.1:1080, а также как устранять распространённые проблемы с аутентификацией, портом, DNS и тайм-аутами. IPRoyal — один из провайдеров, который стоит рассмотреть, когда вам нужны резидентные, ISP- или датацентровые прокси с поддержкой SOCKS5 и в стиле Shadowsocks; всегда подтверждайте точный протокол и учётные данные в панели провайдера перед настройкой клиентов.