Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    DDNS через API Yandex

    Scheduled Pinned Locked Moved Russian
    17 Posts 5 Posters 4.4k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      aleks077
      last edited by

      Спасибо за ответ

      Пока не хоте бы рассматривать использование сторонних сервисов.
      Хочется подойти к задаче иначе.
      В принципе, строка, которую надо отправить на Яндекс DNS известна. Это, что-то типа:

      
      curl -H 'PddToken: 123456789ABCDEF0000000000000000000000000000000000000' -d 'domain=domain.com&record_id=1&subdomain=www&ttl=14400&content=127.0.0.1' 'https://pddimp.yandex.ru/api2/admin/dns/edit'
      
      

      Мне бы понять, по какому событию запускать эту строчку? Предположим, dpinger обнаруживает, что за одним из шлюзов нет интернета (не пингуется хост, который указан в качестве Monitoring IP для этого шлюза) - как отследить это событие и по его наступлению запустить скрипт с искомой строкой?
      Я пока вижу только парсить лог по определенной записи, но, честно говоря, для меня это будет сложновато.

      1 Reply Last reply Reply Quote 0
      • P
        pigbrother
        last edited by

        Мне бы понять, по какому событию запускать эту строчку?
        Я пока вижу только парсить лог по определенной записи
        Мануал говорит, что:
        Whenever an interface changes in some way, DHCP lease renew, PPPoE logout/login, etc, the IP will be updated.

        Что мешает попробовать без парсинга? Для начала не с Яндексом, а с любым иным бесплатным?

        1 Reply Last reply Reply Quote 0
        • A
          aleks077
          last edited by

          Попробовал на FreeDNS - что-то не так..
          У меня оба шлюза объеденены в группу

          В Dyn DNS ставлю:
          Interface to monitor - группу шлюзов
          не прописываю ничего, кроме URL Update - туда пишу Direct Link для апдейта записи с http://freedns.afraid.org/dynamic/

          запись на afraid обновляется до IP основного шлюза
          После того, как я делаю Mark this gateway down на основном шлюзе - запись на afraid остается с тем же IP (на данный момент выключенного канала)

          1 Reply Last reply Reply Quote 0
          • P
            pigbrother
            last edited by

            Мне вообще не понятен смысл нахождения группы шлюзов в настройках DDNS как и попыток привязать к нему этот сервис.
            Поправьте, но IMHO, 1-й WAN, 1-й IP, первое имя;  2-й WAN, 2-й IP, второе имя

            1 Reply Last reply Reply Quote 0
            • A
              aleks077
              last edited by

              Не могу так поправить - такая комбинация мне не нужна.
              Еще раз повторю, чего хочу получить:

              1. в штатном режиме
                1.1.1.1 - gw.domen.ru - ISP1
                2.2.2.2 - gw.domen.ru - ISP2

              далее при падении ISP1 надо получить
              2.2.2.2 - gw.domen.ru
              2.2.2.2 - gw.domen.ru

              или

              при падении ISP2
              1.1.1.1 - gw.domen.ru
              1.1.1.1 - gw.domen.ru

              Если подобрать "ключик" к API Яндекса, то решение довольно простое - по ID записи меняем ее на другой IP

              Как такое изобразить с помощью DDNS pfSense я пока не понимаю…

              1 Reply Last reply Reply Quote 0
              • viktor_gV
                viktor_g Netgate
                last edited by

                сделал feature request:
                https://redmine.pfsense.org/issues/11294

                A 1 Reply Last reply Reply Quote 1
                • A
                  AntonFN @viktor_g
                  last edited by

                  @viktor_g

                  Добрый день! я попробовал использовать yandex dns. это не сработало. Я использую действительный токен который работает с acme плагином pfsense.

                  логи после принудительного обновления.

                  image.png

                  ps
                  я видел что https://redmine.pfsense.org/issues/11294 закрыта изза того что некому протестировать. если от меня нужны какие-то тесты или дополнительные логи. я могу это сделать.

                  viktor_gV 2 Replies Last reply Reply Quote 0
                  • viktor_gV
                    viktor_g Netgate @AntonFN
                    last edited by

                    @antonfn Поставьте в настройках Dynamic галочку DNS Verbose и приаттачьте лог к новому багрепорту.

                    Как сделать багрепорт:
                    https://docs.netgate.com/pfsense/en/latest/development/bug-reports.html

                    разберёмся!

                    A 1 Reply Last reply Reply Quote 0
                    • viktor_gV
                      viktor_g Netgate @AntonFN
                      last edited by

                      @antonfn что у вы видите при выполнении curl -H 'PddToken: <мойтокен>' https://pddimp.yandex.ru/api2/admin/dns/list?domain=<мойдомен> ?

                      1 Reply Last reply Reply Quote 0
                      • A
                        AntonFN @viktor_g
                        last edited by AntonFN

                        @viktor_g

                        Если я обращаюсь к своему основному домену (например example.com) с запросом указанным выше, то получаю перечисление записей домена и параметры записей.

                        я бы хотел уточнить, на основном домене(example.com) у меня есть А запись.(ddns.example.com) которой я хотел бы управлять с помощью ddns.

                        я правильно заполняю поля Hostname ? (делаю на примере рабочей конфигурации godaddy)

                        d15dee68-cc95-4e8c-82c1-3f83acc65352-image.png

                        viktor_gV 1 Reply Last reply Reply Quote 0
                        • viktor_gV
                          viktor_g Netgate @AntonFN
                          last edited by

                          @antonfn верно,

                          можете посмотреть как работает DDNS:
                          https://github.com/pfsense/pfsense/blob/master/src/etc/inc/dyndns.class#L886

                          1. Сначала он получает список поддоменов с https://pddimp.yandex.ru/api2/admin/dns/list?domain=example.com
                          2. Если поддомен существует то сохраняет значение record_id
                          3. Если поддомен существует то изменяет его запись использую record_id через https://pddimp.yandex.ru/api2/admin/dns/edit
                          4. Если поддомен не существует то добавляет через https://pddimp.yandex.ru/api2/admin/dns/add

                          Но у вас судя по логам ошибка PddToken.
                          Запросы через curl выдают правильные данные?

                          A 1 Reply Last reply Reply Quote 0
                          • A
                            AntonFN @viktor_g
                            last edited by AntonFN

                            @viktor_g
                            запрос через curl выдает правильные данные. там присутствует ddns.example.com

                            нашел перечисление ошибок. https://yandex.com/dev/domain/doc/reference/domain-settings-setsign.html

                            как я понял. до токена дело не доходит. он не передается

                            viktor_gV 1 Reply Last reply Reply Quote 0
                            • viktor_gV
                              viktor_g Netgate @AntonFN
                              last edited by

                              @antonfn установите пакет System Patches:
                              https://docs.netgate.com/pfsense/en/latest/development/system-patches.html

                              и попробуйте этот патч: yandexpddfix.diff

                              A 1 Reply Last reply Reply Quote 0
                              • A
                                AntonFN @viktor_g
                                last edited by

                                @viktor_g

                                применил патч. кажется все работает как нужно. спасибо большое.

                                d4a681bb-08a8-4e6b-be12-34b41c251240-image.png

                                1 Reply Last reply Reply Quote 0
                                • viktor_gV
                                  viktor_g Netgate
                                  last edited by

                                  Багрепорт: https://redmine.pfsense.org/issues/12331

                                  Исправление будет включено в следующую стабильную версию и ближайшие 2.6-DEVELOPMENT снапшоты

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post
                                  Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.