Настройка клиента sing-box в Linux: SOCKS и HTTP

Настройка клиента sing-box в Linux: SOCKS и HTTP

Ryan Foster
11 октября 2026 г.· 12 мин чтения

Настройка клиента sing-box в Linux начинается с входа mixed на 127.0.0.1:2080: подключите его к разрешённому удалённому узлу и явно укажите этот локальный порт в одном приложении. Здесь используются Ubuntu 24.04 LTS, sing-box 1.14.3 и curl; перехват всего трафика устройства не настраивается. Руководство составлено по официальной документации, без полного сквозного тестирования автором.[1]

Ключевые выводы

  • SOCKS и HTTP относятся к локальному входу, а VLESS/REALITY — к удалённому соединению в этом примере.
  • Корректная конфигурация и открытый порт ещё не доказывают работоспособность выхода.
  • Проверяйте новые запросы с неверными учётными данными и при остановленном локальном процессе.
  • Loopback ограничивает обычный удалённый доступ, но не проверяет личность других локальных пользователей.
  • Сохраните работающие службы и настройки прокси; отменяйте только изменения этого упражнения.

В руководстве по планированию самостоятельной настройки определите ответственных за узел, учётные данные, обновления и восстановление. Если приложение не поддерживает явный прокси, сначала изучите различия охвата TUN и системного прокси. Эта процедура не подтверждает охват UDP, IPv6, DNS или других приложений.

Шаг 1: Подготовьте разрешённый узел и отдельный исполняемый файл

Нужен принадлежащий вам или разрешённый для использования узел VLESS/REALITY: его адрес, TCP-порт, UUID, открытый ключ REALITY, short ID, согласованное имя сервера и значение flow. Запросите точные параметры у администратора. Названия подписки или одного IP-адреса недостаточно; не берите учётные данные из публичных списков узлов.

Проверьте Ubuntu 24.04 LTS командой cat /etc/os-release, архитектуру — uname -m. На официальной странице выпуска 1.14.3 выберите Linux-архив: amd64 для x86_64 либо arm64 для aarch64. Распакуйте его в закрытом каталоге и поместите исполняемый файл в $HOME/.local/lib/sing-box-1.14.3/sing-box, создав новый принадлежащий вам каталог; если путь назначения уже существует, остановитесь. Используйте официальные каналы и доступные инструкции проверки целостности выпуска, а не неизвестный установочный скрипт.[1][2]

Этот вариант установки в домашний каталог не заменяет системный пакет и не включает его службу. Не выполняйте команды управления службой из другого способа установки. Заранее сохраните относящиеся к задаче конфигурации и настройки прокси приложения в закрытом месте; запишите действующие системные прокси и VPN и оставьте их без изменений.

SB_BIN="$HOME/.local/lib/sing-box-1.14.3/sing-box"
"$SB_BIN" version
pgrep -a -x sing-box
ss -ltn 'sport = :2080'

Версия должна быть 1.14.3, а проверка порта не должна показывать существующий слушающий сокет. Отсутствие совпадений у pgrep нормально; ограниченная видимость процессов не доказывает отсутствие других прокси на машине. При конфликте службы или порта выясните владельца и прекратите упражнение, не завершая чужой процесс. Для другой версии ядра сначала проверьте поля и примечания к миграции.[3]

Шаг 2: Создайте вход sing-box mixed только на loopback

Создайте новый закрытый каталог. Ограничивающая umask действует только внутри подстановки команды ниже; исходные права по умолчанию для новых файлов в текущем терминале не меняются. Сохраните выведенный путь: во втором терминале нужен тот же каталог, а не ещё один новый.

LOCAL_PROXY_DIR=$(
  umask 077
  mktemp -d "$HOME/sing-box-local.XXXXXX"
)
printf '%s\n' "$LOCAL_PROXY_DIR"

Локальным редактором сохраните следующий текст в config.json внутри этого каталога. До проверки и запуска замените все заполнители в верхнем регистре. Порт 443 приведён для примера и должен совпадать с вашим узлом. Шаблон рассчитан на VLESS поверх TCP с REALITY и Vision; при другом flow или транспорте получите поддерживаемую конфигурацию, не подбирайте поля наугад.[4][5][6]

{
  "log": { "level": "info" },
  "inbounds": [
    {
      "type": "mixed",
      "tag": "local-mixed",
      "listen": "127.0.0.1",
      "listen_port": 2080,
      "set_system_proxy": false
    }
  ],
  "outbounds": [
    {
      "type": "vless",
      "tag": "authorized-exit",
      "server": "YOUR_SERVER_IP",
      "server_port": 443,
      "uuid": "YOUR_AUTHORIZED_UUID",
      "flow": "xtls-rprx-vision",
      "network": "tcp",
      "tls": {
        "enabled": true,
        "server_name": "YOUR_APPROVED_SERVER_NAME",
        "insecure": false,
        "utls": { "enabled": true, "fingerprint": "chrome" },
        "reality": {
          "enabled": true,
          "public_key": "YOUR_REALITY_PUBLIC_KEY",
          "short_id": "YOUR_SHORT_ID"
        }
      }
    }
  ],
  "route": { "final": "authorized-exit" }
}
Что заменитьЧто получить и проверить
YOUR_SERVER_IP, server_portЧисловой адрес разрешённого узла и TCP-порт; IP исключает здесь отдельное начальное разрешение имени самого сервера.
YOUR_AUTHORIZED_UUIDИдентификатор пользователя VLESS, действующий на этом узле.
YOUR_APPROVED_SERVER_NAMEИмя, выданное для данного узла REALITY; оно не обязательно совпадает с IP сервера.
YOUR_REALITY_PUBLIC_KEYОткрытый ключ REALITY сервера, никогда не закрытый.
YOUR_SHORT_ID, flowТочный разрешённый short ID и согласованный параметр Vision.

Разбор ядра, входов и выходов помогает разделить их роли. Вход mixed в sing-box принимает локальные SOCKS/HTTP-соединения, но не делает удалённый HTTP-прокси совместимым с VLESS. Явно заданный конечный выход не имеет резервного прямого маршрута.[4][5][7]

Этот локальный SOCKS и HTTP-прокси не меняет системные настройки: set_system_proxy: false запрещает этому экземпляру автоматически менять системный прокси. Без users локальный вход не требует аутентификации: 127.0.0.1 ограничивает сетевую доступность, но не выбор локальной учётной записи. Перед использованием общей машины оцените границу доверия SOCKS-прокси. Защитите каталог и учётные данные; не вставляйте их в сообщения об ошибках.[4][8]

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

В первом терминале выполните команду от обычного пользователя:

"$SB_BIN" check -c "$LOCAL_PROXY_DIR/config.json"

Продолжайте только после успешного завершения. При ошибке работающая конфигурация остаётся нетронутой: исправьте JSON, заполнители или неподдерживаемое поле в отдельном файле. Проверка не доказывает разрешение доступа к узлу, его доступность или ответ целевого сервиса. Официальное руководство разделяет локальный вход и поведение выхода.[9]

"$SB_BIN" run -c "$LOCAL_PROXY_DIR/config.json"

Оставьте терминал открытым. Во втором выполните ss -ltnp 'sport = :2080': ожидается слушающий TCP-сокет 127.0.0.1:2080, принадлежащий этому экземпляру, если сведения о процессе доступны. При 0.0.0.0, [::], LAN-адресе или неожиданном процессе остановите свой экземпляр через Ctrl-C и разберитесь в причине. Не добавляйте исключения брандмауэра и не переходите на root, чтобы скрыть ошибку запуска.[8]

Шаг 4: Отправьте явные HTTP- и SOCKS-запросы

Во втором терминале задайте в CHECK_URL HTTPS-адрес, к которому вам разрешено обращаться. По возможности выберите контролируемый вами сервис с предсказуемым ответом; заполнитель ниже не является работающим узлом. Выполняйте команды по отдельности и сохраняйте код завершения, ответ и соответствующую запись журнала процесса в закрытом месте.

CHECK_URL="https://YOUR_AUTHORIZED_TEST_HOST/"
curl -q --noproxy "" --proxy http://127.0.0.1:2080 \
  --connect-timeout 5 --max-time 20 --fail --show-error "$CHECK_URL"
curl -q --noproxy "" --proxy socks5h://127.0.0.1:2080 \
  --connect-timeout 5 --max-time 20 --fail --show-error "$CHECK_URL"

Параметр -q первым в команде curl исключает скрытые настройки .curlrc; пустой --noproxy переопределяет списки обхода прокси. Прокси задан только для этих вызовов. HTTP-прокси использует CONNECT для HTTPS; socks5h:// передаёт имя назначения прокси, а socks5:// разрешает его в curl локально. В этой конфигурации переданное имя доходит до узла VLESS; это не аудит удалённого резолвера или всех DNS-запросов машины.[10]

Для проверки выхода curl сопоставьте новый запрос с исходным адресом, записанным вашим целевым сервисом, учитывая доверенный обратный прокси перед ним. Ожидается фактический выходной адрес разрешённого сервера, который может отличаться от адреса подключения. Одного HTTP-кода или успешной загрузки страницы для определения адреса недостаточно.

Если вы явно настроили браузер на тот же локальный вход, откройте в нём инструмент проверки IP и сравните показанный выход. Результат относится к запросу этого инструмента: ненастроенный браузер не проверяет curl, а ни один из этих результатов не доказывает путь другого приложения. Если меняете настройки браузера, сохраните их и затем восстановите.

Шаг 5: Проверьте отказы и границы локального входа

Таблица содержит методы, ожидаемое поведение и действия при сбое, а не результаты выполненных тестов. Используйте новые вызовы curl, а не кэшированную страницу браузера или уже установленное соединение.

МетодОжидаемое поведениеДействия при сбое
Остановите свой процесс через Ctrl-C, подтвердите отсутствие слушающего сокета, повторите оба явных запроса.Оба новых запроса не могут подключиться к локальному входу.Если запрос успешен, проверьте его реальные аргументы, другой слушающий процесс и оболочку вызова; не заявляйте защиту от прямого выхода при отказе.
При остановленном исходном процессе скопируйте config.json в invalid.json; замените только UUID на синтаксически корректный, но подтверждённо не разрешённый администратором. Проверьте и запустите копию, повторите оба запроса.Локальный вход может запуститься, но ответ защищённого назначения не поступает из-за отказа удалённой авторизации.При получении ожидаемого содержимого остановитесь и выясните, какой файл, процесс, узел и идентификатор использовались.
Пока отдельный экземпляр работает, попробуйте LAN-адрес его машины и порт 2080 с другого разрешённого устройства; также проверьте локальный сокет.Другое устройство не может использовать вход; локально он привязан к 127.0.0.1.Сам по себе отказ может быть вызван брандмауэром. При более широкой привязке остановите процесс и исправьте её; не открывайте порт ради теста.

Для ветки с неверным UUID в первом терминале выполните "$SB_BIN" check -c "$LOCAL_PROXY_DIR/invalid.json" до "$SB_BIN" run -c "$LOCAL_PROXY_DIR/invalid.json". Затем остановите копию и запускайте исходную конфигурацию повторно только при необходимости дальнейших проверок. Должен работать ровно один экземпляр упражнения. Не меняйте учётные данные настоящего сервера ради отрицательного результата.

Такая настройка клиента sing-box в Linux имеет узкий охват. Выход только TCP не проверяет передачу UDP, а локальный вход IPv4 не перехватывает IPv6 машины. Другой локальный пользователь всё ещё может подключиться к входу без аутентификации. Если эта модель доверия не подходит, остановитесь и отдельно спроектируйте аутентификацию или изоляцию.[4][5]

Шаг 6: Восстановите настройки и удалите экземпляр упражнения

Верните изменённые настройки приложений к записанным значениям. Команды curl не создают постоянных настроек прокси: прекратите передавать их явные аргументы прокси. Не очищайте глобально переменные окружения и не сбрасывайте сеть, которую упражнение не меняло.

В первом терминале нажмите Ctrl-C для своего работающего экземпляра. Командой ss -ltnp 'sport = :2080' подтвердите исчезновение его слушающего сокета. Если сокет остался, определите процесс до удаления файлов; не используйте killall и не останавливайте чужую службу. Запрос, намеренно оставленный на остановленном входе, должен завершиться ошибкой; обычную работу восстановленного приложения проверьте отдельно.

Убедившись, что каталог — именно новый путь, созданный вами, удалите только два известных файла и пустой каталог:

rm -f -- "$LOCAL_PROXY_DIR/config.json" "$LOCAL_PROXY_DIR/invalid.json"
rmdir -- "$LOCAL_PROXY_DIR"

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

Почему настройка клиента sing-box в Linux не работает?

Начните с первого отказавшего уровня. Нет слушающего сокета — проверьте ошибку в терминале, путь файла и владельца порта. Есть сокет, но нет удалённого ответа — вместе с администратором проверьте узел, UUID, ключ, short ID, flow, имя сервера и часы; не отключайте проверку сертификата и не добавляйте прямой резервный маршрут.

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

Итоги

Рабочая настройка клиента sing-box в Linux требует определённого исполняемого файла, закрытой конфигурации, входа на loopback, явных запросов приложения и проверенного восстановления. Ведите собственные записи метода, ожидания и наблюдения: разбор конфигурации, IP в браузере и отказ другого устройства отвечают на разные вопросы.

Часто задаваемые вопросы (FAQ)

Совпадает ли mixed с протоколом удалённого узла?

Нет. Mixed принимает SOCKS и HTTP локально, а здесь соединения передаются через выход VLESS/REALITY. Удалённый узел должен соответствовать конфигурации выхода, а не названию прокси в локальном приложении.

Почему проверка конфигурации успешна, а запросы не работают?

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

Почему браузер и терминал показывают разные выходы?

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

Исключает ли socks5h все локальные DNS-запросы?

Нет. Он передаёт имя назначения конкретного запроса curl прокси вместо локального разрешения в curl. Другие приложения, фоновые службы и удалённый резолвер работают отдельно; эта процедура их поведение не проверяет.

Охватываются ли UDP и IPv6?

Такой охват не подтверждается. Выход VLESS ограничен TCP, вход принимает соединения на IPv4 loopback. Для UDP-приложений и IPv6-трафика машины нужны отдельное проектирование и проверка; успешного HTTP-запроса недостаточно.

Могут ли другие локальные пользователи подключиться к порту?

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

Как восстановить работу после остановки sing-box?

Верните изменённые настройки приложений и прекратите передавать curl аргумент локального прокси. Убедитесь, что сокет своего экземпляра исчез, затем проверьте обычную работу приложения. Не меняйте существующий VPN или системную службу ради восстановления отдельного упражнения.


Руководство относится только к вашим системам и узлам либо к тем, которые вам разрешено использовать. Соблюдайте закон и правила сети. Описанные проверки — процедуры и ожидания для читателя, а не заявление о полном тестировании автором или защите всего устройства.

Источники:

  1. SagerNet, sing-box 1.14.3 release. https://github.com/SagerNet/sing-box/releases/tag/v1.14.3
  2. sing-box, official installation channels. https://sing-box.sagernet.org/installation/package-manager/
  3. sing-box, migration notes. https://sing-box.sagernet.org/migration/
  4. sing-box, Mixed inbound. https://sing-box.sagernet.org/configuration/inbound/mixed/
  5. sing-box, VLESS outbound. https://sing-box.sagernet.org/configuration/outbound/vless/
  6. sing-box, TLS and REALITY fields. https://sing-box.sagernet.org/configuration/shared/tls/
  7. sing-box, Route final outbound. https://sing-box.sagernet.org/configuration/route/
  8. sing-box, Listen fields. https://sing-box.sagernet.org/configuration/shared/listen/
  9. sing-box, client proxy guide. https://sing-box.sagernet.org/manual/proxy/client/
  10. curl, proxy, hostname resolution and configuration options. https://curl.se/docs/manpage.html

Sources checked 11 октября 2026 г.

Рекомендуемые статьи:

Начните бесплатный 3-дневный пробный период

Зарегистрируйтесь и попробуйте все премиум-функции бесплатно.

*Только для новых пользователей. Один пробный период на пользователя.

Настройка клиента sing-box в Linux: SOCKS и HTTP | AethoVPN