YouTube + OpenWRT
Как автоматически маршрутизировать трафик YouTube через VPN в OpenWRT с использованием официальных IP-диапазонов Google.
Если вы используете OpenWRT с подключением к удалённому VPN-серверу и хотите, чтобы YouTube работал корректно без полного туннелирования всего трафика (full tunnel), вам понадобится направлять только нужные IP-адреса через VPN. Это особенно актуально при использовании split tunneling, когда часть трафика идёт напрямую, а часть - через VPN.
Один из способов - вручную добавлять маршруты к IP-подсетям YouTube. Однако YouTube (и другие сервисы Google) использует множество динамически меняющихся IP-адресов, поэтому поддерживать список вручную неудобно. К счастью, Google публикует актуальные IP-диапазоны в формате JSON. В этой статье мы автоматизируем добавление маршрутов к этим подсетям при поднятии VPN-интерфейса в OpenWRT.
Получаем актуальные IP-диапазоны Google
Google регулярно обновляет список IP-адресов, используемых его сервисами, включая YouTube. Эти данные доступны по адресу:
🔗 https://www.gstatic.com/ipranges/goog.json
Этот JSON-файл содержит как IPv4, так и IPv6 префиксы, предназначенные для доступа к сервисам Google, включая YouTube, Google Cloud, и другие. Более подробно о содержимом файла можно прочитать в официальной документации:
📚 Google Cloud - IP ranges documentation
Создаём скрипт управления маршрутами
Создайте скрипт /root/scripts/youtube.sh со следующим содержимым:
| |
Да, можно было бы использовать jq и не приседать с
grepиcut, но в условии ограниченных ресурсов роутера…
Настраиваем автоматическое применение маршрутов
Чтобы маршруты добавлялись автоматически при поднятии VPN-интерфейса, создайте файл hotplug-скрипта:
| |
Не забудьте сделать его исполняемым:
| |
Убедитесь, что имя интерфейса (
vpn) соответствует имени вашего реального интерфейса в OpenWRT (например,wg0,tun0и т.д.). Также имя устройства в скрипте (vpn-vpn) должно соответствовать имени сетевого интерфейса, через который идёт трафик (обычно совпадает с именем интерфейса).
Проверка работы
Переподключите интерфейс:
| |
После этого проверьте таблицу маршрутизации:
| |
Вы должны увидеть десятки (или даже сотни) строк вида:
| |
Дополнительно
Ручная очистка маршрутов
Если маршруты по какой-то причине остались после отключения VPN, их можно удалить вручную:
| |
Расширение списка подсетей
Файл goog.json не включает все IP-адреса YouTube. Некоторые CDN (например, через партнёров типа YouTube Delivery или сторонние хостинги) могут использовать другие диапазоны. Если вы замечаете, что видео не загружаются, можно вручную добавить недостающие подсети, например:
| |
Но учтите: такие подсети могут устаревать, поэтому лучше периодически сверяться с актуальными данными.
Для отладки трафика используйте
tcpdumpилиdnsmasqлоги, чтобы выявить недостающие адреса или подсети.
Заключение
Теперь ваш OpenWRT-роутер автоматически маршрутизирует трафик YouTube через VPN, используя актуальные IP-диапазоны от Google. Это решение масштабируемо, легко поддерживается и не требует изменения DNS или перехвата трафика на уровне приложений.
Если вы используете WireGuard, OpenVPN или любой другой тип VPN - подход остаётся тем же. Главное -правильно указать имя интерфейса и устройство.
📎 Источники: