Как настроить прокси IPRoyal Shadowsocks на Linux для приватного трафика CLI и браузера
Настройте IPRoyal Shadowsocks на Linux с shadowsocks-libev, запустите его как службу systemd, проверьте исходящий IP и направьте трафик curl, Git, Python и браузера через локальный SOCKS5-прокси.
Обзор
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-прокси, либо вы можете выборочно направлять через него трафик.
Типичный поток:
- Приложение подключается к
127.0.0.1:1080. - Локальный клиент Shadowsocks шифрует запрос.
- Зашифрованный запрос отправляется на конечную точку IPRoyal Shadowsocks.
- Конечная точка перенаправляет запрос на целевой сайт.
- Ответ возвращается через тот же туннель.
Поскольку локальный прослушиватель — это 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; всегда подтверждайте точный протокол и учётные данные в панели провайдера перед настройкой клиентов.