Настройка сервера TUIC: sing-box, TLS и проверка

Настройка сервера TUIC: sing-box, TLS и проверка

Marcus Reid
11 октября 2026 г.· 11 мин чтения

Настройка сервера TUIC объединяет защищённый UDP-вход и клиент, который проверяет TLS-идентичность сервера и предъявляет UUID с паролем. Здесь обе стороны используют sing-box 1.14.3 и Ubuntu 24.04 LTS amd64. Проверяется один явно направленный через прокси TCP-запрос. Инструкции основаны на официальной документации; полного сквозного авторского испытания не проводилось.[1]

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

  • Работающий слушатель ещё не подтверждает UDP-путь, TLS, аутентификацию и пересылку.
  • Нужны собственный домен, доверенный сертификат и отключённый 0-RTT.
  • Локальный прокси привязан к loopback и не перехватывает весь трафик устройства.
  • До установки и открытия порта сохраните исходное состояние для восстановления.

Кому нужна настройка сервера TUIC?

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

Объяснение Hysteria2 описывает соседний протокол: переименование его профиля не превращает профиль в TUIC. Основы охвата VPN помогают отличать зашифрованное соединение от фактически направленного через него трафика.

Подготовьте два отдельных разрешённых к администрированию хоста Ubuntu без действующей установки sing-box, которую требуется сохранить. Зарезервируйте UDP 24443 и разрешённое отображение NAT, если оно необходимо. Получите действующую цепочку сертификатов и соответствующий закрытый ключ собственного домена через существующий процесс CA. Пример домена, адреса и значения учётных данных необходимо заменить.

Сохраните приватно список пакетов, состояния служб, правила firewall, адреса, маршруты, DNS и конфигурацию. Проверьте новое независимое SSH-соединение или консоль провайдера. Если источник APT, пользователь, unit или путь уже занят другой службой, остановитесь и согласуйте владение, не перезаписывая работающую установку.

Шаг 1: установите стабильный пакет и подготовьте файлы

На обеих машинах установите необходимые средства из доверенных репозиториев Ubuntu, затем добавьте официальный стабильный источник. Замените APT_VERSION_FOR_1.14.3 точной версией пакета из apt-cache madison, содержащей ядро 1.14.3. При её отсутствии остановитесь; не подставляйте beta и не запускайте непроверенный установочный скрипт.[5]

sudo apt-get update
sudo apt-get install curl ca-certificates openssl
sudo install -d -m 755 /etc/apt/keyrings
sudo curl -fsSL https://sing-box.app/gpg.key -o /etc/apt/keyrings/sagernet.asc
sudo chmod 644 /etc/apt/keyrings/sagernet.asc
sudo tee /etc/apt/sources.list.d/sagernet.sources >/dev/null <<'REPO'
Types: deb
URIs: https://deb.sagernet.org/
Suites: *
Components: *
Enabled: yes
Signed-By: /etc/apt/keyrings/sagernet.asc
REPO
sudo apt-get update
apt-cache madison sing-box
sudo apt-get install sing-box='APT_VERSION_FOR_1.14.3' curl ca-certificates openssl
sing-box version

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

На сервере создайте отдельную служебную учётную запись и скопируйте уже выпущенный сертификат из защищённого источника. Имена должны быть свободны.[4]

sudo useradd --system --user-group --no-create-home --shell /usr/sbin/nologin sbtuic
sudo install -d -o root -g sbtuic -m 750 /etc/sing-box-tuic
sudo install -o root -g sbtuic -m 640 /PRIVATE/SOURCE/fullchain.pem /etc/sing-box-tuic/fullchain.pem
sudo install -o root -g sbtuic -m 640 /PRIVATE/SOURCE/privkey.pem /etc/sing-box-tuic/privkey.pem

В приватном терминале создайте UUID командой sing-box generate uuid, пароль — openssl rand -base64 32. Сохраните их безопасно и передайте по разрешённому защищённому каналу. Не помещайте пароль в аргументы shell, снимки экрана, чат или публичный репозиторий. UUID определяет пользователя, но не заменяет настроенный пароль.[2]

Шаг 2: настройте TUIC в sing-box и отдельную службу

В защищённом редакторе с необходимыми правами создайте /etc/sing-box-tuic/config.json. Вместо SERVER_LOCAL_IPV4 укажите реально назначенный серверу IPv4, не внешний NAT-адрес. UUID и пароль должны совпадать в обеих конфигурациях. Установите владельца файла root:sbtuic и права 640.

{
  "log": {
    "level": "info"
  },
  "dns": {
    "servers": [
      {
        "type": "local",
        "tag": "system-dns"
      }
    ]
  },
  "inbounds": [
    {
      "type": "tuic",
      "tag": "tuic-in",
      "listen": "SERVER_LOCAL_IPV4",
      "listen_port": 24443,
      "users": [
        {
          "name": "reader-test",
          "password": "REPLACE_WITH_PRIVATE_PASSWORD",
          "uuid": "REPLACE_WITH_GENERATED_UUID"
        }
      ],
      "tls": {
        "enabled": true,
        "certificate_path": "/etc/sing-box-tuic/fullchain.pem",
        "key_path": "/etc/sing-box-tuic/privkey.pem"
      },
      "zero_rtt_handshake": false
    }
  ],
  "outbounds": [
    {
      "type": "direct",
      "tag": "direct"
    }
  ],
  "route": {
    "final": "direct",
    "default_domain_resolver": "system-dns"
  }
}

Вход требует TLS и пользователя; прямая пересылка — отдельная стадия после аутентификации. Локальный DNS-сервер (type: local) передаёт разрешение имён системному резолверу сервера. default_domain_resolver явно выбирает его для разрешения имени при прямом соединении; системный DNS клиента не меняется.[2][6]

Сохраните следующий unit в /etc/systemd/system/sing-box-tuic.service, владелец root, права 644. Он работает без привилегированного пользователя и читает файлы только этого упражнения. Порт 24443 не требует права привязки к низким портам.

[Unit]
Description=Isolated sing-box tuic reader exercise
After=network-online.target
Wants=network-online.target

[Service]
User=sbtuic
Group=sbtuic
ExecStart=/usr/bin/sing-box run -c /etc/sing-box-tuic/config.json
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
Restart=on-failure
RestartSec=3

[Install]
WantedBy=multi-user.target

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

sudo -u sbtuic /usr/bin/sing-box check -c /etc/sing-box-tuic/config.json
sudo systemctl daemon-reload
sudo systemctl start sing-box-tuic.service
sudo systemctl status sing-box-tuic.service --no-pager
sudo ss -lnup

Просмотрите ограниченный журнал: sudo journalctl -u sing-box-tuic.service -n 30 --no-pager. Храните его приватно: диагностика может раскрывать адреса клиентов. Ошибку привязки или доступа исправляйте корректным адресом и правами, а не открытием закрытого ключа всем пользователям.

Шаг 3: разрешите один UDP-путь и подключите клиент

Определите владельца firewall и сохраните административный доступ. Только если уже активный UFW управляет политикой, добавьте UDP-разрешение от видимого публичного адреса тестового клиента к локальному адресу сервера, порт 24443, комментарий tuic-test. При необходимости добавьте столь же узкое правило провайдера. Запишите точное добавление для удаления; не включайте, не сбрасывайте и не очищайте общий firewall.

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

sudo ufw allow proto udp from CLIENT_PUBLIC_IP to SERVER_LOCAL_IPV4 port 24443 comment 'tuic-test'

Открытие TCP 24443 не обеспечивает внешний транспорт QUIC/UDP. Поле network: tcp ниже ограничивает прикладной трафик примера, а не превращает серверный UDP-слушатель в TCP.[3]

Приватно создайте tuic-client.json. Замените SERVER_PUBLIC_IPV4 доступным числовым адресом, tuic.example.com — реальным именем сертификата. Соединение с IP и проверка домена разделяют доступность и TLS-идентичность. Сохраните insecure: false.[4]

{
  "log": {
    "level": "info"
  },
  "inbounds": [
    {
      "type": "mixed",
      "tag": "local-in",
      "listen": "127.0.0.1",
      "listen_port": 1080
    }
  ],
  "outbounds": [
    {
      "type": "tuic",
      "tag": "tuic-out",
      "server": "SERVER_PUBLIC_IPV4",
      "server_port": 24443,
      "password": "REPLACE_WITH_PRIVATE_PASSWORD",
      "tls": {
        "enabled": true,
        "server_name": "tuic.example.com",
        "insecure": false
      },
      "uuid": "REPLACE_WITH_GENERATED_UUID",
      "zero_rtt_handshake": false,
      "network": "tcp"
    }
  ],
  "route": {
    "final": "tuic-out"
  }
}
chmod 600 tuic-client.json
sing-box check -c tuic-client.json
sing-box run -c tuic-client.json

Оставьте процесс на переднем плане, запросы отправляйте из другого терминала. Его используют только приложения, явно направленные на 127.0.0.1:1080. Существующие сетевые средства контроля и другие прокси-приложения не изменяйте и не закрывайте ради успешного результата.

Шаг 4: как проверяется аутентификация TUIC при отказах?

Отправьте ограниченный по времени запрос через SOCKS с удалённым разрешением имени:

curl --noproxy "" --proxy socks5h://127.0.0.1:1080 --connect-timeout 5 --max-time 20 https://example.com/

Ответ подтверждает путь этого запроса, а не всех приложений, DNS, IPv6 или прикладного UDP. Для наблюдения выходного адреса настройте отдельный профиль браузера на локальный HTTP-прокси и посмотрите IP, видимый для его запроса. Затем восстановите настройки профиля. Результат браузера и результат команды — разные свидетельства.

Для отрицательных проверок используйте приватные копии файла. Каждый раз остановите только собственный клиент через Ctrl-C, измените одно условие, запустите новый процесс и отправьте новый запрос. Так старое аутентифицированное соединение не скроет ошибку.

Проверка читателяОжидаемое наблюдениеДействие при расхождении
Верные адрес, имя, UUID и парольОграниченный запрос завершаетсяРазделите ошибки локального слушателя, журнала, DNS и назначения
Измените только UUID, затем только парольНовый запрос отклоняется или не проходитУбедитесь, что загружен изменённый файл и старый клиент не обслуживает 1080
Замените только имя TLS посторонним доменомПроверка сертификата останавливает соединениеПроверьте имена сертификата, не включайте insecure
Удалите только разрешение UDP упражнения в изолированной политикеНовое соединение не проходит, если путь действительно закрытДругие разрешения могут сохранять доступ; проверьте владельца политики
Удалите пользователя, проверьте файл, перезапустите unitУдалённые данные не работают в новом соединенииСверьте эффективный файл, команду unit и новый клиент
Перезапустите с сохранённым действующим пользователемНовый разрешённый запрос проходитСравните приватную исходную копию и последние журналы

Это ожидаемые проверки, а не авторские результаты. После UDP-проверки восстановите именно удалённое правило и административный доступ. Не добавляйте широкий запрет в общей сети. Если безопасно изолировать путь нельзя, отметьте проверку как невыполненную.

Оставьте zero_rtt_handshake: false с обеих сторон. Документация рекомендует отключить оптимизацию с риском повторного воспроизведения. Изменение congestion control также не доказывает улучшение скорости или устойчивости к блокировкам.[2][3]

Шаг 5: обновите сертификат, отзовите доступ и восстановите состояние

Продлите сертификат существующим процессом CA, установите новую цепочку и соответствующий ключ с прежними ограниченными правами. Проверьте файл, перезапустите только sing-box-tuic.service, выполните новый разрешённый запрос. Сверьте реально предоставленные идентичность и срок действия: перезапуск сам по себе недостаточен. Документация описывает перечитывание файлов, но здесь используется явный перезапуск с проверкой.[4]

При компрометации удалите или замените затронутого пользователя и перезапустите отдельную службу, прервав её существующие соединения. Не восстанавливайте утёкший пароль из резервной копии. Проверьте успех нового пользователя и отказ старому перед включением автозапуска через sudo systemctl enable sing-box-tuic.service.

Для завершения остановите и отключите этот unit, остановите свой клиент, удалите только записанные правила упражнения у firewall и провайдера. Восстановите прокси браузера. Сохраните нужную приватную диагностику, удалите unit и частные файлы упражнения, выполните sudo systemctl daemon-reload. Проверьте порт, исходные управление и DNS. Пакеты и APT-файлы удаляйте лишь при доказанном отсутствии других пользователей и наличии записи, что их добавило упражнение. При неудачном восстановлении прекратите изменения и используйте независимый канал управления.

Проверьте установленный файл сертификата: sudo openssl x509 -in /etc/sing-box-tuic/fullchain.pem -noout -subject -issuer -dates. Команда показывает локальные идентичность и срок действия. Дополните её новым запросом клиента с проверкой TLS: чтение файла само по себе не доказывает сертификат, предоставляемый удалённым процессом.

После удаления файлов упражнения удаляйте созданную им учётную запись sbtuic только после проверки, что от её UID или группы больше не зависят процессы, службы и файлы. Используйте sudo userdel sbtuic без принудительного режима и удаления домашнего каталога. Если отдельная группа сохранилась и у неё нет других участников или зависимостей, удалите её через sudo groupdel sbtuic.[7][8]

Существовавшие ранее идентичности сохраняйте; при неясном владении остановитесь. Удалите принадлежащие упражнению tuic-client.json и копии отрицательных проверок, когда они больше не нужны. Необходимые резервные копии храните приватно и не возвращайте отозванные данные доступа.

Итоги

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

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

Почему TCP-порт доступен, а TUIC не работает?

Внешний транспорт TUIC — UDP/QUIC. TCP-проверка не подтверждает UDP, TLS, аутентификацию пользователя или пересылку приложения.

Может ли UUID заменить пароль?

Нет. Этот профиль использует оба поля одного пользователя; клиент должен соответствовать UUID и паролю сервера.[2][3]

Зачем отключать 0-RTT?

Реализация предупреждает о риске повторного воспроизведения. Здесь он отключён, без обещаний улучшения вашей нагрузки при включении.[2]

Удаление пользователя немедленно завершает старое соединение?

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

IP браузера подтверждает охват всего устройства?

Нет. Наблюдение относится к проверенному запросу браузера; остальные приложения, DNS, IPv6 и UDP проверяются отдельно.

Можно вставить профиль Hysteria2?

Нет. Нужны поля выбранной реализации TUIC; профиль соседнего протокола не подтверждает совместимость с этим сервером.

Что восстанавливать первым после неудачи?

Сохраните независимое управление, остановите свои процессы, верните точные правила и настройки клиента, проверьте исходное состояние, затем удаляйте частные файлы.

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

Источники:

  1. sing-box 1.14.3 release — https://github.com/SagerNet/sing-box/releases/tag/v1.14.3
  2. sing-box TUIC inbound — https://sing-box.sagernet.org/configuration/inbound/tuic/
  3. sing-box TUIC outbound — https://sing-box.sagernet.org/configuration/outbound/tuic/
  4. sing-box TLS configuration — https://sing-box.sagernet.org/configuration/shared/tls/
  5. sing-box package installation and service management — https://sing-box.sagernet.org/installation/package-manager/
  6. sing-box local DNS server and route — https://sing-box.sagernet.org/configuration/dns/server/local/
  7. Ubuntu Noble userdel manual — https://manpages.ubuntu.com/manpages/noble/man8/userdel.8.html
  8. Ubuntu Noble groupdel manual — https://manpages.ubuntu.com/manpages/noble/man8/groupdel.8.html

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

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

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

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

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

Настройка сервера TUIC: sing-box, TLS и проверка | AethoVPN