Обновить
21
Тимофей@timothyz

Пользователь

Отправить сообщение

Хотелось бы получить комментарии от Яндекс, почему их станция опрашивает ntp-сервера, а когда к ней от них приходит ответ, она плюёт в них ICMP Unreachable?

Лог под спойлером:

Скрытый текст
23:06:33.926112 IP (tos 0xc0, ttl 64, id 2976, offset 0, flags [none], proto ICMP (1), length 104)
    192.168.64.191 > 188.246.226.6: ICMP 192.168.64.191 udp port 47341 unreachable, length 84
        IP (tos 0x20, ttl 55, id 27708, offset 0, flags [DF], proto UDP (17), length 76)
    188.246.226.6.123 > 192.168.64.191.47341: [udp sum ok] NTPv4, Server, length 48
        Leap indicator:  (0), Stratum 2 (secondary reference), poll 0 (1s), precision -26
        Root Delay: 0.001358, Root dispersion: 0.000808, Reference-ID: 0xc2bea801
          Reference Timestamp:  3942143640.222680021 (2024-12-02T15:54:00Z)
          Originator Timestamp: 0.000000000
          Receive Timestamp:    3942144393.901440913 (2024-12-02T16:06:33Z)
          Transmit Timestamp:   3942144393.901446344 (2024-12-02T16:06:33Z)
            Originator - Receive Timestamp:  3942144393.901440913 (2024-12-02T16:06:33Z)
            Originator - Transmit Timestamp: 3942144393.901446344 (2024-12-02T16:06:33Z)
23:06:33.940059 IP (tos 0xc0, ttl 64, id 39983, offset 0, flags [none], proto ICMP (1), length 104)
    192.168.64.191 > 51.250.107.88: ICMP 192.168.64.191 udp port 58025 unreachable, length 84
        IP (tos 0x20, ttl 50, id 14286, offset 0, flags [DF], proto UDP (17), length 76)
    51.250.107.88.123 > 192.168.64.191.58025: [udp sum ok] NTPv4, Server, length 48
        Leap indicator:  (0), Stratum 2 (secondary reference), poll 3 (8s), precision -25
        Root Delay: 0.008804, Root dispersion: 0.001739, Reference-ID: 0x596dfb1a
          Reference Timestamp:  3942142980.958716723 (2024-12-02T15:43:00Z)
          Originator Timestamp: 0.000000000
          Receive Timestamp:    3942144393.908478485 (2024-12-02T16:06:33Z)
          Transmit Timestamp:   3942144393.908500012 (2024-12-02T16:06:33Z)
            Originator - Receive Timestamp:  3942144393.908478485 (2024-12-02T16:06:33Z)
            Originator - Transmit Timestamp: 3942144393.908500012 (2024-12-02T16:06:33Z)
23:06:33.963512 IP (tos 0xc0, ttl 64, id 53983, offset 0, flags [none], proto ICMP (1), length 104)
    192.168.64.191 > 193.35.49.242: ICMP 192.168.64.191 udp port 39065 unreachable, length 84
        IP (tos 0x20, ttl 54, id 34404, offset 0, flags [DF], proto UDP (17), length 76)
    193.35.49.242.123 > 192.168.64.191.39065: [udp sum ok] NTPv4, Server, length 48
        Leap indicator:  (0), Stratum 2 (secondary reference), poll 0 (1s), precision -20
        Root Delay: 0.070693, Root dispersion: 0.049606, Reference-ID: 0xc0248f82
          Reference Timestamp:  3942143946.000000000 (2024-12-02T15:59:06Z)
          Originator Timestamp: 0.000000000
          Receive Timestamp:    3942144393.914796999 (2024-12-02T16:06:33Z)
          Transmit Timestamp:   3942144393.914819999 (2024-12-02T16:06:33Z)
            Originator - Receive Timestamp:  3942144393.914796999 (2024-12-02T16:06:33Z)
            Originator - Transmit Timestamp: 3942144393.914819999 (2024-12-02T16:06:33Z)
04:06:34.270928 IP (tos 0xc0, ttl 64, id 2133, offset 0, flags [none], proto ICMP (1), length 104)
    192.168.64.191 > 79.137.192.63: ICMP 192.168.64.191 udp port 54580 unreachable, length 84
        IP (tos 0x20, ttl 54, id 24305, offset 0, flags [DF], proto UDP (17), length 76)
    79.137.192.63.123 > 192.168.64.191.54580: [udp sum ok] NTPv4, Server, length 48
        Leap indicator:  (0), Stratum 2 (secondary reference), poll 3 (8s), precision -26
        Root Delay: 0.003509, Root dispersion: 0.000839, Reference-ID: 0x596dfb1a
          Reference Timestamp:  3942162088.402888024 (2024-12-02T21:01:28Z)
          Originator Timestamp: 0.000000000
          Receive Timestamp:    3942162394.244022989 (2024-12-02T21:06:34Z)
          Transmit Timestamp:   3942162394.244032805 (2024-12-02T21:06:34Z)
            Originator - Receive Timestamp:  3942162394.244022989 (2024-12-02T21:06:34Z)
            Originator - Transmit Timestamp: 3942162394.244032805 (2024-12-02T21:06:34Z)
04:06:34.274762 IP (tos 0xc0, ttl 64, id 49358, offset 0, flags [none], proto ICMP (1), length 104)
    192.168.64.191 > 45.92.177.52: ICMP 192.168.64.191 udp port 45240 unreachable, length 84
        IP (tos 0x20, ttl 55, id 17452, offset 0, flags [DF], proto UDP (17), length 76)
    45.92.177.52.123 > 192.168.64.191.45240: [udp sum ok] NTPv4, Server, length 48
        Leap indicator:  (0), Stratum 2 (secondary reference), poll 0 (1s), precision -26
        Root Delay: 0.001449, Root dispersion: 0.000366, Reference-ID: 0xc2bea801
          Reference Timestamp:  3942162116.701414259 (2024-12-02T21:01:56Z)
          Originator Timestamp: 0.000000000
          Receive Timestamp:    3942162394.238994932 (2024-12-02T21:06:34Z)
          Transmit Timestamp:   3942162394.239001284 (2024-12-02T21:06:34Z)
            Originator - Receive Timestamp:  3942162394.238994932 (2024-12-02T21:06:34Z)
            Originator - Transmit Timestamp: 3942162394.239001284 (2024-12-02T21:06:34Z)
04:06:34.276807 IP (tos 0xc0, ttl 64, id 17876, offset 0, flags [none], proto ICMP (1), length 104)
    192.168.64.191 > 91.206.16.3: ICMP 192.168.64.191 udp port 52495 unreachable, length 84
        IP (tos 0x20, ttl 53, id 58800, offset 0, flags [DF], proto UDP (17), length 76)
    91.206.16.3.123 > 192.168.64.191.52495: [udp sum ok] NTPv4, Server, length 48
        Leap indicator:  (0), Stratum 1 (primary reference), poll 0 (1s), precision -26
        Root Delay: 0.000030, Root dispersion: 0.000030, Reference-ID: GPS^@
          Reference Timestamp:  3942162393.346687264 (2024-12-02T21:06:33Z)
          Originator Timestamp: 0.000000000
          Receive Timestamp:    3942162394.232296948 (2024-12-02T21:06:34Z)
         Transmit Timestamp:   3942162394.232302361 (2024-12-02T21:06:34Z)
            Originator - Receive Timestamp:  3942162394.232296948 (2024-12-02T21:06:34Z)
            Originator - Transmit Timestamp: 3942162394.232302361 (2024-12-02T21:06:34Z)
09:06:34.973246 IP (tos 0xc0, ttl 64, id 45597, offset 0, flags [none], proto ICMP (1), length 104)
    192.168.64.191 > 62.173.141.123: ICMP 192.168.64.191 udp port 53383 unreachable, length 84
        IP (tos 0x20, ttl 56, id 26853, offset 0, flags [DF], proto UDP (17), length 76)
    62.173.141.123.123 > 192.168.64.191.53383: [udp sum ok] NTPv4, Server, length 48
        Leap indicator:  (0), Stratum 2 (secondary reference), poll 2 (4s), precision -25
        Root Delay: 0.014083, Root dispersion: 0.002807, Reference-ID: 0x4e9e102b
          Reference Timestamp:  3942179951.103150354 (2024-12-03T01:59:11Z)
          Originator Timestamp: 0.000000000
          Receive Timestamp:    3942180394.919304466 (2024-12-03T02:06:34Z)
          Transmit Timestamp:   3942180394.919325697 (2024-12-03T02:06:34Z)
            Originator - Receive Timestamp:  3942180394.919304466 (2024-12-03T02:06:34Z)
            Originator - Transmit Timestamp: 3942180394.919325697 (2024-12-03T02:06:34Z)
09:06:35.005469 IP (tos 0xc0, ttl 64, id 58174, offset 0, flags [none], proto ICMP (1), length 104)
    192.168.64.191 > 188.225.9.167: ICMP 192.168.64.191 udp port 42463 unreachable, length 84
        IP (tos 0x20, ttl 55, id 10623, offset 0, flags [DF], proto UDP (17), length 76)
    188.225.9.167.123 > 192.168.64.191.42463: [udp sum ok] NTPv4, Server, length 48
        Leap indicator:  (0), Stratum 2 (secondary reference), poll 0 (1s), precision -25
        Root Delay: 0.010833, Root dispersion: 0.000259, Reference-ID: 0x596dfb15
          Reference Timestamp:  3942180217.190864693 (2024-12-03T02:03:37Z)
          Originator Timestamp: 0.000000000
          Receive Timestamp:    3942180394.922968779 (2024-12-03T02:06:34Z)
          Transmit Timestamp:   3942180394.922994778 (2024-12-03T02:06:34Z)
            Originator - Receive Timestamp:  3942180394.922968779 (2024-12-03T02:06:34Z)
            Originator - Transmit Timestamp: 3942180394.922994778 (2024-12-03T02:06:34Z)
09:06:35.011502 IP (tos 0xc0, ttl 64, id 26096, offset 0, flags [none], proto ICMP (1), length 104)
    192.168.64.191 > 151.0.2.54: ICMP 192.168.64.191 udp port 33538 unreachable, length 84
        IP (tos 0x20, ttl 55, id 13070, offset 0, flags [DF], proto UDP (17), length 76)
    151.0.2.54.123 > 192.168.64.191.33538: [udp sum ok] NTPv4, Server, length 48
        Leap indicator:  (0), Stratum 2 (secondary reference), poll 0 (1s), precision -25
        Root Delay: 0.025955, Root dispersion: 0.001037, Reference-ID: 0x596dfb1a
          Reference Timestamp:  3942179791.738304313 (2024-12-03T01:56:31Z)
          Originator Timestamp: 0.000000000
          Receive Timestamp:    3942180394.928560089 (2024-12-03T02:06:34Z)
          Transmit Timestamp:   3942180394.928595615 (2024-12-03T02:06:34Z)
            Originator - Receive Timestamp:  394

Тут есть ещё нюанс. В попытках борьбы с этим DDoS часть альтернативно одарённых администраторов вместо того чтобы резать исходящие запросы, начала резать входящие ответы от ntp-серверов. В результате чего, вполне нормальные ntp-клиенты мечутся по всему пулу, пытаясь узнать точное время. Ntp-серверы время им отдают, но до клиентов это время не доходит, например, около 48% ответов моего сервера реджектятся с icmp unreachable. Сколько просто дропается, мне неизвестно.

Было бы справедливо, если бы после этого Yandex взял на себя разборки с такими провайдерами. Думаю, Yandex'у будет проще преодолевать первые линии поддержки провайдеров, чем конечным пользователям. А технический инструмент для выявления таких ситуаций Yandex практически есть - это их собственный ботнет.

отчего так много icmp port unreachable? Я писал в теме на ntppool что 25% трафика приходящего на мой сервер это icmp

Сейчас наблюдаю у себя, что 47% ответов моего ntp-сервера приводят к icmp port unreachable. На спуфинг не особо похоже, вряд ли спуферы стали бы с такой дотошностью имитировать поведение клиента. Так что, скорее "ковровые блокировки ntp-протокола". Когда станции DDoSили, могли на скорую руку, например, наконфигурировать statefull NAT таким образом, что сейчас он просто не знает куда кидать ответ и кидает его кому попало, а тот честно говорит - это не мое (icmp port unreachable)

Ну, так советы типа nf_conntrack_udp_timeout_stream=0 встречаются в этих ваших интернетах с 2016 года. Особенно, в контексте "пытаюсь завернуть исходящий udp трафик на самого себя".

Ну, да, очень оперативно. Больше месяца ru.pool.ntp.org лежал под DDoS.

Подтверждаю странное обилие icmp port unreachable, но сомневаюсь в DDoS, скорее уж, очередное рукожопие.

Отловил с десяток icmp port unreachable и посмотрел, что происходит. На первый взгляд, вполне нормальные ntp-клиенты с вполне нормальными интервалами между запросами, которые почем-то не принимают ответ.

Выглядит так, будто они забыли, что слали запрос и его надо бы принять.

Не удивлюсь, если начитались соседней ветки и не вникая в суть, навтыкали где попало notrack или же conntrack_udp_timeout в 0 поставили.

Другой вариант, что за NAT кто-то одновременно долбится куда-то, переполняя statefull nat, так что потом пакет с ответом либо неизвестно кому слать, либо шлёт не тому, кто спрашивал.

Это нормально. man ntpdate, man adjtime до просветления.
Вкратце, ntpdate увидел небольшое расхождение и пытается "плавно" свести его на нет. Этот процесс вы и наблюдаете

Не нужен, достаточно разумного протокола (немного модифицированного SNTP), по которому эти две станции обменяются сообщениями о событии и вычислят текущее расхождение часов между ними.

Подобные обращения мы получали и раньше, но причиной всегда были сетевые ограничения на стороне пользователя (например, работодатель мог ограничивать запросы со стороны колонки в корпоративной сети)

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

Прочтения https://www.ntppool.org/ru/vendors.html хватило бы для того, чтобы быть умным до, а не после. Этому же помогло бы изучение алгоритмов ntpd и chrony с попыткой, почему сделано так, а не иначе. Тем более, что относительно недавний баг в systemd-timesyncd как бы намекает, что можно легко облажаться.

Для этого достаточно синхронизации между собой, нет необходимости долбить внешние сервера.

Самые хреновые кварцевые резонаторы, которые индустрия считает за кварц, а не за брак, плавают по частоте на 200 ppm в диапазоне температур -40+85 °C. Сомневаюсь, что станция испытывает столь резкие перепады температур, чтобы так часто синхронизоваться.

Кроме того, чем больше интервал между измерениями, тем точнее можно рассчитать ошибку частоты.

А не подскажите, что конкретно сломается и какая точность времени требуется, чтобы не сломалось?

Как-то, когда у Андроида NITZ был более приорететным источником времени, чем NTP, мобильный оператор выдал мне время с отставанием на 15 минут. Было очень обидно.

Да, ещё она зачем-то регулярно шлёт запрос SOA для pool.ntp.org

Изучали сегодня с товарищем относительно свежую Yandex-станцию с относительно свежей прошивкой. Лезет нагло к pool.ntp.org. Работет в burst режиме. Эксперимента ради порезали ей исходящий ntp-трафик - ответила всплеском ntp-трафика, который потом сошёл на нет (видимо, перебирала всё, что могла найти в пуле). Экспериментов с частичной потерей пакетов не делали, но, возможно, частичная потеря пакетов будет её всегда держать в таком режиме

Так сейчас в пуле всего четыре активных сервера: https://www.ntppool.org/zone/ru

Сильно сомневаюсь, что на каком-нибудь 213.183.109.3, который плюется от 1000 до 3000 запросов в секунду, есть что-то с аналогичной Spamhaus ценностью, чтобы организовывать такую атаку. Скорее всего, там что-то взбесилось, но пристрелить это не удаётся, так-как провайдер игнорирует репорты.

Вполне вероятно. Получается, что каждая Yandex-станция ведёт себя как 1000 типичных, нормально сконфигурированных клиентов.

Меньше чем за минуту ещё не все абюзеры успевают прийти, а потом ещё их запросам надо протолкаться в перегруженном канале. В общем, в текущей ситуации выявление аномалий весьма сложная задача.

Для хронологии, меня это затронуло 26 октября.

Выглядело это так: аномально высокая частота запросов с 3-5 IP, достаточная, чтобы исчерпать лимит соединений механизма conntrack типично настроенного фаервола на Linux и т.п. statefull фаерволах, сагрить фаервол провайдера и т.д.

После чего система мониторинга пула исключает такой сервер из работы и перенаправляет весь его трафик на новых жертв. Ситуация повторяется.

Информация

В рейтинге
7 489-й
Откуда
Новосибирск, Новосибирская обл., Россия
Дата рождения
Зарегистрирован
Активность