Настройка DNS в OpenWrt с Shadowsocks: как исправить неработающие сайты

    Проблема, когда сайты грузятся частично (например, YouTube показывает чёрные картинки и не воспроизводит видео), при корректно работающем прокси-сервере Shadowsocks, часто связана с неправильной настройкой DNS. В этой статье мы разберём типичные ошибки конфигурации и предоставим решение для OpenWrt.

    Почему сайты не открываются полностью?

    Shadowsocks шифрует и перенаправляет трафик, но если DNS-запросы не проходят через туннель, они остаются незащищёнными. В результате:

    • Сайты могут частично загружаться (HTML-код приходит, но картинки, видео и скрипты - нет);
    • Иногда домены разрешаются в IP-адреса, которые заблокированы провайдером;
    • Возникает эффект «чёрных экранов» на YouTube и других ресурсах.

    В вашей конфигурации используется ss_tunnel для перенаправления DNS через Shadowsocks (на 8.8.8.8:53), но dnsmasq на роутере не настроен на использование этого туннеля.

    Пошаговое решение: настройка DNS в OpenWrt

    Шаг 1. Проверка работы ss_tunnel

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

    netstat -tulpn | grep 8053

    Если порт 8053 (локальный порт туннеля) открыт и слушает, значит туннель работает.

    Шаг 2. Настройка dnsmasq на использование туннеля

    Отредактируйте файл /etc/config/dhcp и добавьте в секцию config dnsmasq строку:

    list server '127.0.0.1#8053'

    Это заставит dnsmasq отправлять все DNS-запросы на локальный туннель Shadowsocks, который перенаправляет их на 8.8.8.8 через зашифрованное соединение.

    После изменения перезапустите службу dnsmasq:

    /etc/init.d/dnsmasq restart

    Шаг 3. Отключение rebind_protection (если нужно)

    В некоторых случаях защита от ребдинд-атак (option rebind_protection '1') может блокировать ответы DNS от публичных серверов. Попробуйте временно отключить её:

    option rebind_protection '0'

    Если проблема исчезнет, оставьте эту опцию выключенной, либо настройте список разрешённых доменов.

    Шаг 4. Проверка DNS-резолвинга

    Выполните команду:

    nslookup youtube.com 127.0.0.1#8053

    Если ответ получен, DNS работает через туннель. Затем проверьте, как резолвится домен через dnsmasq:

    nslookup youtube.com 127.0.0.1#53

    Ответы должны совпадать.

    Дополнительные рекомендации

    • Используйте ChinaDNS или dns2socks - альтернативные пакеты для обхода DNS-блокировок, если туннель не помогает.
    • Проверьте правила фаервола - убедитесь, что трафик на порт 8053 не блокируется.
    • Обновите прошивку и пакеты - старые версии Shadowsocks могут содержать ошибки.

    После выполнения этих шагов YouTube и другие заблокированные ресурсы должны загружаться полностью. Если проблема осталась, проверьте логи dnsmasq и Shadowsocks на наличие ошибок.

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