Самые популярные блоги рунета Топ 10
«Топ-10» самых популярных блогеров рунета
2024/10/21 - Фейковый NTP-сервер
21 октября 2024, автор: https://lleo.me/dnevnik/, источник
UPD: Дружище Андрей Нигматуллин предложил нормальное решение через DynDNS и даже помог разобраться и настроить, спасибо ему!Итак, задача: у вас есть говнороутер и провайдер, который выдает ему внешний (это важно) IP, но постоянно его меняет. А вы хотите, чтобы этот IP всегда отзывался по адресу в вашем родном домене, скажем oops.lleo.me (все имена здесь и ниже условные). У вашего роутера есть раздел динамического обновления адреса DDNS, но там только 4 варианта. Но среди них есть afraid.org!Решение:Допустим, у вас домен lleo.me на CloudFlare.com (можно и без него, но с ним лучше) Выбираем поддоменное имя для своего lleo.me, например: govnorouter.lleo.me На CloudFlare.com в разделе DNS сайта lleo.me создаем новую запись типа NS: =============== cut ===============Type: NS Name: govnorouter Nameserver: ns1.afraid.org=============== /cut ===============Идем на https://afraid.org и создаем бесплатную запись «Sign up Free». Поле «userID» — пишите любое латинское слово, надеюсь там такого юзера нет. Подтвердите email, и вы залогинены. Теперь на afraid.org (дизайн там даже не 90-е, а 80-е, под браузер lynx) идем в «Domains», «Add domain» — и там прописываем свой govnorouter.lleo.me (Shared:Public я выбрал на всякий случай).Придумываем домен еще более нижнего уровня для своего govnorouter.lleo.me, например real.govnorouter.lleo.me На afraid.org в разделе «Subdomains» нажимаем «Add». Но, сцуко, не тот Add, который внизу, а тот Add, который в строке с доменом govnorouter.lleo.me И в открывшемся меню пишем: =============== cut ===============Type: A Subdomain: real Domain: govnorouter.lleo.me=============== /cut ===============После чего в разделе «Dynamic DNS» можно найти ключ. Например посмотреть «Direct URL» для своего real.govnorouter.lleo.me, там покажет ключ:httрs://freedns.afraid.org/dynamic/update.php?dFhXQzRtRWltMkpONzRQMOQ1BxOjIzMzU1NTg2Собственно, каждый, кто постучится по этой ссылке, пропишет вам свой IP.Теперь идем в админку своего говнороутера. Выбираем DDNS чотатакое.afraid.com и заполняем поля c с логином и паролем guest (не спрашивайте): =============== cut ===============Login: guest Password: guest domain_name: real.govnorouter.lleo.me Hash Value: dFhXQzRtRWltMkpONzRQMOQ1BxOjIzMzU1NTg2=============== /cut ===============Если в вашем роутере нет поля «Hash Value» — ищите доку на afraid.org, там что-то было про «через запятую» в каком-то другом поле.Короче, теперь роутер обновляет свой IP для домена четвертого уровня, согласно NS-записи для домена третьего уровня. На хера такое длинное? Придумываем на CloudFlare нормальное короткое имя, чтоб набирать удобно: oops.lleo.me и вписываем: =============== cut ===============Type: CNAME Name: oops Target: real.govnorouter.lleo.me Proxied: NO=============== /cut ===============Вот теперь норм. Мы получили собственное имя в своем собственном домене oops.lleo.me, которое всегда указывает на IP нужного нам далекого устройства. А даже если afraid.org когда-нибудь поломается (посылаю им лучи здоровья и процветания), имя-то ваше, оно никуда не пропадет, придумаем другой способ его обновлять.Было:Забавную проблему решаю в свободные от работы полчасика. Итак, есть в офисе интернет-роутер (от провайдера — ни сменить, ни перепрошить), ему выдается внешний IP, но динамический. И его надо знать. Обычно я динамические IP подвязываю к поддомену lleo.me, автоматически меняя скриптиком через API CloudFlare. Но для этого адрес надо сначала узнать! А для этого надо, чтобы из той сети кто-то постучался на любой из серверов, куда у меня есть доступ.1. Первое что приходит на ум — поставить в офис маленькую Raspberry, я лучше даже ESP12. Этим, чую, в итоге и кончится. Это очевидно. Но это не спортивно! Это потом. Так что пока никаких дополнительных устройств ставить не буду, попробую другие пути.2. В офисе есть свой девайс — погодная станция от Юры, которая раз в час посылает телеметрию на его сайт. Перепрограммировать ее на какие-то еще обращения к другим сайтам может только Юра. Но у меня зато есть доступ к его сайту, где приемник телеметрии я сам ему писал когда-то на PHP. Так что не вопрос вставить в тот приемный скрипт закладку, что для станции номер 123 фиксировать ее IP. Казалось бы, что может пойти не так? Выясняется, что хостер у Юры как-то так криво настроен, что передает в nginx все запросы от имени своего собственного IP и никаких хедеров и прочих следов о реальном IP тупо не дает. Обычно это пофиг, потому что нормальные люди свои проксируют через CloudFlare, а тот сам выставляет нужный хедер. Но Юра сайт через CloudFlare не прописал и переносить категорически не хочет — у меня, говорит, всё работает, как бы чего не сломалось.3. Окей, копаемся в самом роутере. Роутер примитивный. У него, конечно, есть свой раздел DDNS, и там есть на выбор 4 сервиса, но свой собственный url указать нельзя. А пользоваться чужими сервисами DDNS я раз и навсегда зарекся — меня когда-то кинул homeip, просто тупо отобрал домен, и мне пришлось переписывать все мои программы и сервисы, которые были на то имя жестко завязаны. Так что чужие DDNS я отныне никогда использовать не буду — ни деньги этим пидарасам платить не стану, ни бесплатно регистрироваться не буду, это принцип.4. Единственное, что есть в роутере — это сервис определения точного времени NTP. На хера он тупому роутеру нужен — загадка, но он есть, и там можно вводить свои имена доменов. Вау! Вот это задача по-настоящему интересная!Итак, вписываю в качестве NTP-сервера fake-ntp.lleo.me Там быстро набрасываю (с советами ChatGPT) софтинку на питоне, которая ловит обращения UDP (пробрасываю дома порт 123 на 8123), пишу логи, а для себя даже отправляю в Телеграм.[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]Прописываю как демон:[ ТЕКСТ ПОД КАТОМ: Доступен только в оригинальной заметке на сайте ]Проверяю с любого другого внешнего сервера:=============== cut ===============sudo ntpdate fake-ntp.lleo.me=============== /cut ===============Всё работает! Приходит запрос с порта 123, хотя ответ, понятно, мой сервер не передает.Но в итоге результат логов за трое суток: целые дни стучатся по сотне левых мудацких роботов с самых разных лохматых портов (33007, 38388, 51319)! А роутер со своего IP пока не зашел ни разу! Ни после резета, никак.Вот и думаю: то ли в нем выключен этот NTP вообще, то ли он его запускает раз в месяц или по какой-то неожиданной надобности, то ли зря я вписал свой адрес первой строчкой, а вторую, запасную, оставил, как была, — может, он вторую строчку запомнил как-то как основную и по первой уже не пытается постучать?