Настройка 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 на наличие ошибок.