Самодельный CDN с GeoDNS для трафика из РФ и других стран?
Все больше зарубежных IP-адресов (Cloudflare, Vultr, OVH и т.п.) попадают в чёрные списки РКН. В связи с этим появилась идея реализовать что-то вроде самодельного CDN / geo-proxy.
Сайт, разумеется, ничего не нарушает, но есть значительный трафик из РФ, который не хочется терять, в случае ограничения доступа к IP-адресу хостинг провайдера.
Как я думаю это сделать:
1) Завожу VPS в РФ (например, Timeweb) и VPS за рубежом (например, Hetzner).
2) Для домена использую GeoDNS:
- трафик из РФ направляю на сервер в РФ (Timeweb),
- трафик из других стран — напрямую на Hetzner (в идеале дополнительно прикрутить Cloudflare).
3) Основные backend-сервисы размещены на Hetzner (дешевле).<
3) На сервере в РФ поднимаю nginx в роли reverse proxy, который проксирует запросы к backend’у на Hetzner.
Интересует, насколько такая схема жизнеспособна на практике?
А ты уже знаешь как самим поднять GeoDNS? Лучше сделать на порядок проще, в этой схема разрулить трафик руками, поднять для ru отдельный домен и поддомен, который будет выполнять роль реверс прокси. Даже можно сначала ему слать весь трафик, ru оставлять на нем, а остальных переводить в условный Hetzner
Everything_is_bad,
А как быть с SEO-оптимизацией? Разные домены или поддомены поисковики будут считать разными сайтами. Полноценную региональную версию делать не хочется.
Слать трафик сначала на ru версию не хочется, у меня это только 30% пользователей, для остальных будет медленней работать, но как вариант можно
Проблемы будут, новый домен будет с нулевым трастом и уйдут месяцы на вывод его в топ, что стоит приличных денег. Дальнейшее продвижение будет расходовать минимум 150% прежнего бюджета, т.к. двигать будут сразу 2 сайта.
Everything_is_bad, свой geodns это просто - два bind на двух своих же VPS. Внутри конфига зоны 2 view - одна для всех, вторая - для списка подсетей РФ.
Стоит только не забывать, что нужно фильтровать и ipv4 и ipv6 для лучшего охвата.
Не всегда DNS запрос и трафик приходят из одной страны. Практически все запросы с андроидов идут через гугловый DNS, такие запросы прилетают из облака Google.
GavriKos, Заблокировать технически ничего не мешает, однако про конкретно этот сервер могут не знать и его не искать, т.к. он никому кроме собственника не нужен
Сергей, так никто искать не будет )) Заблочат просто точно так же хетзнер и все. Для всех, включая хостинги внутри страны.
Т.е. непонятно чем данное решение поможет при внесении хетзнера в блеклист (то с чего начался пост). Да, понятно что хостерам могут не заблочить (есть такой шанс), но это лишь шанс )
GavriKos, Если у меня сервер с выделенным чистым IP, РКН тоже может его заблокировать? Как? Только если весь диапазон IP адресов хостера заблокируют?
Мой проекты точно специально блокировать не будут, задача в том что бы снизить расходы на размещение, использовать cdn для остальных стран, при этом быть доступным в РФ.
Меня больше беспокоит выбор сервиса для DNS, их не так много с поддержкой geodns. Не могут ли заблокировать доступ например на Google Cloud DNS или Amazon Route 53?
Все больше зарубежных IP-адресов (Cloudflare, Vultr, OVH и т.п.) попадают в чёрные списки РКН
Ну вот тут же как то они блокируют? Чем эта блокировка из поста отличается от блокировки хетзнера? Мне кажется - ничем. Блокирнут просто потому что он принадлежит хетзнеру и все.
Из дома - заходит, но через несколько секунд отрубается (ls/pwd/uptime успел сделать и все).
Забавно, что команда: ssh servername "while true; do date;sleep 1;done"
работает замечательно и долго. При почти одностороннем трафике с сервера - все может жить вечно. А вот интерактивный, когда я печатаю команды - не работает.
Если залогиниться по SSH и первым делом сделать эту while true.... (скопировать, напечатать не получается) и дать ей долго поработать (не знаю, сколько у меня было, я просто поставил и забыл, может час. Но точно минуты мало) - тогда потом можно оборовать этот цикл и сессия уже работать будет нормально.
При этом проверил три сервака в РФ на разных площадках, с любого из них SSH доступ к серверу сейчас вполне нормально работает, без проблем совершенно.
С одной стороны, согласен, что у нас ни на что нельзя положиться, все что работает сейчас, может поломаться через какое-то время.
Но с другой - все в нашей жизни временное. Любой другой вариант тоже ведь может поломаться. Может быть лучше что-то сделать, получить опыт, научиться, и потом если потребуется - сделать снова чуть иначе в новых реалиях.
Я замутил такую штуку у себя на https://zxonline.net
Как ты и написал - зарубежным клиентам отзывается по айпишке из Германии (где хостится сайт), клиентам из РФ отзывается по российскому IP.
Схема рабочая, НО.
Сейчас bind9 находится на основном сервере, поэтому DNS резолвит NS в Германию и вот тут РКН его блочит.
По идее надо NS перенести в РФ. Так должно 100% заработать. Если только кааой-нибудь заграничный аналог РКН не будет блочить российские NS.
Бодался с такой же проблемой, тоже через GeoDns. Схема на данный день и момент ещё работает. Скорее всего и будет работать если зарубежным шлюзом будет не hetzner/ovh/amazon а что-то более местячковое.
Второй вариант: вы можете просто юзануть CDN (не cloud) и будет тоже самое за чуть большие деньги, но вам сразу покроют и снг. Я выбрал второе, устал, так сказать.
1. Работает, нужно учесть только время обновления dns записей.
2. Ркн присылает письма хетцнеру о бане домена. Можно забить на них.
3. Таймвеб создает тикет если забаненный домен резолвится на них, меньше 12 часов удалить запись. Иначе бан виртуалки.
Ну и устанешь домены покупать.