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

DDNS через API Yandex

Scheduled Pinned Locked Moved Russian
17 Posts 5 Posters 3.9k 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 Apr 6, 2018, 3:29 PM

    Приветствую уважаемый форум!

    Есть PfSense 2.4.2-RELEASE-p1  с двумя каналами Интернет.
    За шлюзом в локальной сети есть сервис, на который проброшены порт с внешних белых IP обоих каналов.
    Есть записи в DNS-зоне домена, которая размещена на Яндексе, типа
    gw.domen.ru - 1.1.1.1 (ISP1)
    gw.domen.ru - 2.2.2.2 (ISP2)

    Хочется изменять эти записи в зоне через API Яндекса при срабатывании dpinger (падении канала), чтобы клиенты сервиса получали IP рабочего на данный момент канала.

    Заглянув в Dynamic DNS, понял, что если и можно, то только через Custom настройку.

    Никто не поделиться своим подобным опытом? Можно вообще использовать эту форму для API?

    Если нет, то в принципе, могу с помощью CURL отправлять нужную строчку в API Яндекса, но не могу найти/понять, по какому событию/логу это делать?
    Заранее благодарен за любую наводку
    Александр

    1 Reply Last reply Reply Quote 0
    • P
      pigbrother
      last edited by Apr 7, 2018, 9:55 AM

      IMHO, конечно, но Яндекс DNS - не самый простой\лучший выбор для DDNS, да и создавался он не для этого.
      Хотя народ и использует его так, как хотите вы:
      Собственно API:
      https://tech.yandex.ru/pdd/doc/reference/dns-edit-docpage/
      https://habrahabr.ru/sandbox/102896/
      https://toster.ru/q/20548

      Можете оставить свои записи DNS, если они привязаны к статическим IP, а для DDNS использовать специальные бесплатные сервисы:
      Старый, проверенный. Использую сам:
      http://freedns.afraid.org/

      https://www.duckdns.org/install.jsp
      есть инструкция для pfSense

      http://freemyip.com/help
      Недавно рекомендован werter,  есть инструкция для pfSense
      и т.д.

      1 Reply Last reply Reply Quote 0
      • A
        aleks077
        last edited by Apr 9, 2018, 10:50 AM

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

        Пока не хоте бы рассматривать использование сторонних сервисов.
        Хочется подойти к задаче иначе.
        В принципе, строка, которую надо отправить на Яндекс 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 Apr 9, 2018, 1:13 PM

          Мне бы понять, по какому событию запускать эту строчку?
          Я пока вижу только парсить лог по определенной записи
          Мануал говорит, что:
          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 Apr 9, 2018, 3:01 PM

            Попробовал на 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 Apr 9, 2018, 5:11 PM

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

              1 Reply Last reply Reply Quote 0
              • A
                aleks077
                last edited by Apr 10, 2018, 5:51 AM

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

                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
                • V
                  viktor_g Netgate
                  last edited by Jan 23, 2021, 5:09 AM

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

                  A 1 Reply Last reply Aug 28, 2021, 9:29 AM Reply Quote 1
                  • A
                    AntonFN @viktor_g
                    last edited by Aug 28, 2021, 9:29 AM

                    @viktor_g

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

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

                    image.png

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

                    V 2 Replies Last reply Aug 28, 2021, 8:10 PM Reply Quote 0
                    • V
                      viktor_g Netgate @AntonFN
                      last edited by Aug 28, 2021, 8:10 PM

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

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

                      разберёмся!

                      A 1 Reply Last reply Sep 2, 2021, 8:11 AM Reply Quote 0
                      • V
                        viktor_g Netgate @AntonFN
                        last edited by Sep 1, 2021, 10:33 PM

                        @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 Sep 2, 2021, 8:33 AM Sep 2, 2021, 8:11 AM

                          @viktor_g

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

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

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

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

                          V 1 Reply Last reply Sep 2, 2021, 9:07 AM Reply Quote 0
                          • V
                            viktor_g Netgate @AntonFN
                            last edited by Sep 2, 2021, 9:07 AM

                            @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 Sep 2, 2021, 9:10 AM Reply Quote 0
                            • A
                              AntonFN @viktor_g
                              last edited by AntonFN Sep 2, 2021, 9:13 AM Sep 2, 2021, 9:10 AM

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

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

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

                              V 1 Reply Last reply Sep 2, 2021, 10:48 AM Reply Quote 0
                              • V
                                viktor_g Netgate @AntonFN
                                last edited by Sep 2, 2021, 10:48 AM

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

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

                                A 1 Reply Last reply Sep 2, 2021, 11:54 AM Reply Quote 0
                                • A
                                  AntonFN @viktor_g
                                  last edited by Sep 2, 2021, 11:54 AM

                                  @viktor_g

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

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

                                  1 Reply Last reply Reply Quote 0
                                  • V
                                    viktor_g Netgate
                                    last edited by Sep 2, 2021, 3:51 PM

                                    Багрепорт: 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.
                                      This community forum collects and processes your personal information.
                                      consent.not_received