sing-box connected, но сайты не открываются: DNS, route и MTU
Подключение sing-box активно, а сайты не грузятся? Разбираем три главные причины: неправильный DNS, неработающие правила route и проблемы с MTU. Пошаговая диагностика и исправление конфигурации.
Содержание
Почему sing-box показывает «connected», а сайты не открываются
Когда sing-box запущен, а браузер пишет «нет соединения» или «сайт не доступен», это вызывает недоумение. Подключение к серверу установлено, статус зелёный — но трафик не идёт. Проблема почти всегда в трёх вещах: DNS, правилах маршрутизации (route) или MTU. Рассмотрим каждую причину и способы её устранения.
Шаг 1. Убедитесь, что трафик действительно проходит через sing-box
Первое, что стоит проверить — идёт ли вообще трафик через ваш туннель. Если вы используете режим прокси (например, HTTP/SOCKS на порту 2080), настройте браузер или системные параметры прокси явно. В TUN-режиме sing-box перехватывает весь трафик автоматически, но для этого нужны права администратора (root) и правильно созданный виртуальный адаптер.
Быстрый тест: откройте терминал и выполните curl -x socks5://127.0.0.1:2080 https://example.com (если у вас mixed-inbound). Если запрос выполняется, прокси работает. Если нет — проверьте, что inbound настроен и listen-адрес совпадает.
Шаг 2. Диагностика DNS
Сайт может не открываться, потому что имя не резолвится. В sing-box за DNS отвечает блок dns. Проверьте, какие серверы используете вы. Частая ошибка — задать только один DNS-сервер, который недоступен из-за блокировок или несовместимости.
Рекомендуемая конфигурация: используйте локальный DNS для прямых запросов и удалённый (через прокси) для остальных. Пример:
"dns": {
"servers": [
{ "tag": "remote", "address": "https://1.1.1.1/dns-query" },
{ "tag": "local", "address": "223.5.5.5", "detour": "direct" }
],
"strategy": "prefer_ipv4"
}
Здесь remote — это DNS-сервер, работающий через прокси, а local — для прямых соединений. Если сайт не резолвится, проверьте, доступен ли сервер из вашей сети. Используйте dig @223.5.5.5 example.com для теста.
Шаг 3. Route: правила, которые блокируют или не перехватывают трафик
Блок route определяет, как направлять пакеты. Если правило не подходит, трафик может улететь в block или reject, и тогда сайты не откроются. Проверьте порядок правил: правила, которые должны срабатывать, ставьте выше, а final (действие по умолчанию) задайте как proxy или direct.
Для диагностики полезно временно добавить правило, которое выводит журнал трафика:
"route": {
"rules": [
{ "domain_suffix": "example.com", "outbound": "proxy" },
{ "ip_cidr": ["0.0.0.0/0"], "outbound": "proxy" }
]
}
Если домен не попадает ни под одно правило, он уходит по final. Убедитесь, что final не является block. Также проверьте, что route включает auto_detect_interface или явный interface для VPN.
Шаг 4. MTU и TUN: проблема с размером пакетов
MTU — максимальный размер пакета, который может пройти через сетевой интерфейс. В TUN-режиме sing-box сам создаёт виртуальный сетевой адаптер с определённым MTU. Если MTU слишком велик (например, стандартные 1500), пакеты могут фрагментироваться и теряться, особенно при использовании PPPoE, VPN-туннелей или некоторых серверов. Симптом: обычный HTTP открывается, а HTTPS (TLS) виснет или вообще не грузится, так как TLS-пакеты чувствительны к фрагментации.
Рекомендуется установить MTU 1280–1400. В конфигурации TUN-инбаунда это делается так:
"inbounds": [
{
"type": "tun",
"mtu": 1400,
"auto_route": true,
"strict_route": false
}
]
После изменения перезапустите sing-box и сбросьте сетевые настройки устройств. Также не забудьте проверить MTU на самом сервере — если там ограничение 1400, то и клиент должен использовать не больше.
Шаг 5. Пример исправления конфигурации для типичного кейса
Предположим, у вас VLESS+Reality, весь трафик идёт через TUN, но пользователи жалуются, что YouTube не открывается, а Google — открывается. Обычно это указывает на DNS или MTU. Сбалансированный конфиг может выглядеть так:
{
"outbounds": [
{ "type": "vless", "tag": "proxy", "server": "your-server.com", "tls": { "enabled": true, "server_name": "your-server.com" } }
],
"dns": {
"servers": [
{ "tag": "remote", "address": "https://8.8.8.8/dns-query" },
{ "tag": "local", "address": "https://1.1.1.1/dns-query", "detour": "direct" }
]
},
"route": {
"final": "proxy"
},
"inbounds": [
{ "type": "tun", "mtu": 1400, "auto_route": true }
]
}
Здесь все запросы идут через прокси, DNS-запросы — тоже через прокси (remote), но для локальных доменов можно добавить правило direct. Обратите внимание, что в route нет правил, и final — proxy, поэтому весь трафик уходит в туннель.
Шаг 6. Дополнительные проверки: сервер, транспорт, фаервол
Если после всех настроек сайты всё ещё не открываются, проверьте:
- Транспорт VLESS/VMess — правильно ли указаны
flow,network,tls. Например, для Reality требуется определённыйpublic_keyиshort_id. - Сервер — не блокирует ли файрвол порт или протокол. Попробуйте подключиться с другого клиента.
- Файрвол на устройстве — не мешает ли он TUN-интерфейсу.
- Кэш DNS — очистите системный DNS-кэш после изменения конфигурации.
Заключение
Когда sing-box подключён, но сайты не открываются, — не паникуйте. Планомерно проверяйте DNS, route и MTU. В большинстве случаев проблему решает уменьшение MTU до 1400 и правильная настройка DNS-серверов через detour. Если не помогло — углубляйтесь в логи и проверяйте конфигурацию outbound. Все параметры подробно описаны в официальной документации sing-box.
Проверено на практике
- Дата проверки: 2025-03-30
- Среда: Официальная документация sing-box и GitHub-репозиторий SagerNet
- Версии: 1.11.0,1.10.0
Мини-чеклист
- Проверьте, что трафик реально проходит через sing-box (curl через прокси или проверка TUN).
- Протестируйте DNS-резолвинг: используйте dig/nslookup с DNS-серверами из конфига.
- Убедитесь, что в route-правилах нет блокирующих правил и final не равен block.
- Если используете TUN, проверьте MTU и при необходимости уменьшите до 1400.
- Очистите системный DNS-кэш после изменения конфигурации.
- Проверьте настройки транспорта (VLESS flow/tls) на соответствие серверу.
Частые ошибки
- MTU слишком большой (1500) для сетей с PPPoE/фрагментацией — сайты по HTTPS зависают.
- Указан один DNS-сервер, который недоступен из-за блокировок, — трафик не резолвится.
- В route rules отсутствует правило для нужного домена, а final установлен как block.
- Настройка system proxy не совпадает с портом inbound, из-за чего браузер не видит прокси.
- Использование устаревших версий sing-box, где синтаксис полей отличался.
Источники и документация
FAQ
Что означает 'connected' в sing-box и почему сайты всё равно не грузятся?
Статус 'connected' показывает, что соединение с сервером установлено, но не гарантирует, что трафик правильно маршрутизируется. Проблемы с DNS, route или MTU могут заблокировать передачу данных даже при активном туннеле.
Как узнать MTU, который нужно поставить в TUN?
Самый безопасный способ — начать с 1400. Если сайты с TLS всё ещё не работают, уменьшайте до 1280. Для PPPoE-подключений часто требуется 1400 или 1492. Экспериментируйте и проверяйте доступность HTTPS-сайтов.
Почему некоторые сайты открываются, а другие нет при работающем sing-box?
Это часто указывает на DNS-проблемы: домены, которые резолвятся через определенные DNS-серверы, могут давать разные IP. Либо route-правила блокируют конкретные домены/IP. Проверьте логи sing-box и тестируйте домены по отдельности.
Нужно ли настраивать DNS в sing-box, если уже есть настройки в ОС?
Да, если вы используете TUN, sing-box перехватывает DNS-запросы и должен иметь собственные настройки DNS. В противном случае ваши запросы могут остаться вне туннеля и попасть под блокировки. Рекомендуется настроить блок dns в конфиге.
Что делать, если после изменения MTU конфигурация не применяется?
Перезапустите sing-box полностью и пересоздайте TUN-интерфейс. Проверьте, что вы сохранили конфиг в правильном формате и не забыли закрывающие скобки. Также сбросьте сетевой адаптер TUN в настройках ОС.
Нужен быстрый рабочий доступ?
Если сейчас важнее вернуть подключение, чем продолжать ручную диагностику, переходите к прямому сценарию оформления доступа.
Получить доступ