Периодически недоступен DNS сервер 8.8.8.8 на VDS

16.02.26 на VPS в логах стали появляться ошибки, связанные c DNS. Как выяснилось по умолчанию был прописан 8.8.8.8. При проверке например nslookup nextcloud.com через раз появлялись ошибки:;; communications error to 8.8.8.8#53: timed out . А в другой половине случаев всё срабатывает.

А техподдержка ответила : “Вводятся какие то новые ограничения роскомнадзором, похоже что в отношении Google DNS. Поменяйте DNS, здесь есть список https://whoer.net/blog/ru/rekomenduemye-publichnye-dns-servera/ , но не рекомендую использовать Google DNS и Cloudflare.” Решил поменятm на DNS яндекса. Сегодня посмотрел - 4 восмёрки снова нормально работают. При этом пинги работали всегда.

Я правильно понимаю, РКН уже настолько оборзел, что может себе позволить что то там у себя настраивать “наживую”, при этом ломая работающие сервисы и совсем не парясь об этом и не за что не отвечая? Или это хостинг провайдер сам что то чудил и не признавался?

И ещё общий вопрос к тем кто в это хорошо шарит: Как-то технически возможно определить на каком этапе сбой/блокировка/ при доступе к ресурсу и кто в этом виноват. Я конечно немного умею пользоваться такими утилитами как tcpdump, ping, nmap, traceroute и т.п. но как этим грамотно пользоваться для решения этой задачи до конца не понимаю (если это вообще возможно). Просто в текущих условиях есть и РКН, и санкции, и естественные сбои, к тому же мой проводной интернет провайдер так же очень косячный. И хотелось бы понимать в каких случаях куда копать. Может есть какие-то статьи по этой теме?

Да. Тоже возможно. Отправкой запроса с увеличивающимся ttl:

Примерный код для Scapy, наглюченный в mistral:
from scapy.all import *
import socket

target_domain = "example.com"
dns_server = "8.8.8.8"
max_ttl = 30

for ttl in range(1, max_ttl + 1):
    dns_query = IP(dst=dns_server, ttl=ttl) / UDP(dport=53) / DNS(rd=1, qd=DNSQR(qname=target_domain))
    reply = sr1(dns_query, verbose=0, timeout=2)

    if reply is None:
        print(f"Потеря пакета на TTL={ttl}")
        # Пробуем узнать последний узел
        icmp_probe = IP(dst=dns_server, ttl=ttl) / ICMP()
        icmp_reply = sr1(icmp_probe, verbose=0, timeout=2)
        if icmp_reply and icmp_reply.haslayer(ICMP) and icmp_reply.getlayer(ICMP).type == 11:
            print(f"Последний узел: {icmp_reply.src}")
        break
    else:
        print(f"TTL={ttl}: Ответ от {reply.src}")

Можно поискать готовый работающий код в интернете.

наблюдение верное, но это все делается в китае. Там спуфинг днс нормальная практика по популярным резолверам, поэтому оконечным девайсам тяжело стартовать будет на “холодную”. У нас настраивают китайцы как я понимаю или по их стопам, но все тоже самое. Выживут немногие впн ))

Ожидаемо. Давно уже на зарубежные DNS покушались, и не раз чинуши в новостях бухтели об “опасности” и необходимости всем пользоваться “суверенной системой имен”, так что блокировка была вопросом времени.

На DoH/DoT ещё до войны лаять начали, а на нешифрованных протоколах некоторые российские Интернет-провайдеры давным-давно и без всяких РКН резвились, подменяя четыре восьмерки своими серверами - хз зачем им это, может просто данные об интересах пользователей собирать и продавать рекламщикам. В российских условиях я бы вообще нешифрованным DNS не пользовался, думаю сейчас самое логичное решение ставить кеширующий локальный DNS-сервер, а его через VPN запускать на какие-нибудь публичные зарубежные DNS-сервера.

PS: забавно, мой российский сервер не пускают по DoT на российский же Яндекс DNS, только plain text, честным гражданам должно быть нечего скрывать и нечего стесняться!

Могу подтвердить, что по UDP 8.8.8.8 провайдер перехватывает запросы. Как итог:

  • Подмена IP
  • Ложные NXDOMAIN
  • А иногда даже “8.8.8.8” недоступен. Пару дней назад часто было, сейчас реже.

Нужно переходить везде на DoH

Подтверждаю. На домашнем провайдере восьмёрки иногда таймаутят, и из-за чего падает весь инет. Это было прям ярко выражено в прошлые выходные. Сейчас вроде норм. Перешёл на DoH.

DoH и DoT защитят от фальсификации с dns, но не от блокирования. Но да, лучше хотя бы так…

Ну мне кажется, что они ломают в первую очередь именно обычный DNS на 53 порту. DoH пока не отваливался у меня.

Конечно. Обычный udp 53 порт давным давно прослушивается провайдерами. Ещё на заре блокировок они перехватывали dns запросы и перенаправляли пользователя на свою страницу заглушки, если ты например лез на какой-нибудь рутракер или рутор. Сейчас, самое первое что должен сделать интернет-пользователь в России, это позаботиться о защите своих DNS запросов.

Но если так, то при посещении запрещённых сайтов они могли бы выдавать заглушку, а не просто RST. Почему тогда так не делают? Я встречал заглушку только при посещении HTTP сайтов.

Чтобы такая заглушка работала необходимо чтобы абоненты интернетов поставили себе корневой сертификат минцифры (как, например, в яндекс браузере).

Тспу все равно видит все и запросы и sni, а у прова обычно днс быстрее всех и есть те, которые резолвят лучше того же 1.1.1.1, на котором то протон не работает, то еще что-то.

“подменяя четыре восьмерки своими серверами” - по сути это уже какая-то хакерская методика - подменять IP. Это вообще законно?

Заглушку ставили провайдеры для удобства пользователей, а РКН ничего не ставит или прямо лжёт в официальных ответах.

Зарубежные DNS скорее всего вообще запретят, обязав всех ходить через провайдеров к НСДИ.

Я менять по дороге содержимое страниц чужих сайтов, встраивая туда баннеры, всплывающие окна с рекламой и ещё хз что, законно? А уважаемые Интернет-провайдеры уважаемых толстых олигархов во всю этим занимались до эпохи https.

несколько лет назад увидел рекламу на своём http сайте когда зашёл через ростелеком

В корпоративных сетях это в порядке вещей. Сейчас просто всех абонентов “прячут от угрозы” за корпоративным фильтром в масштабе страны.

многие блокировки, даже по решению суда незаконны, а тут ты за подмену ип говоришь