1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/gngpp-vertx-ddns

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 15 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 10:43 7cf37e7

Введение

Основанный на событиях Vert.x сервис DNS-разрешения, который поддерживает динамическое обновление DNS (DDNS), автоматически получает общедоступный IPv4 или IPv6 адрес устройства или использует пользовательский IP-адрес и разрешает его в соответствующий сервис доменных имён.

  • vertx-ddns
    • Функции
    • [Перед использованием](#Перед использованием)
    • [Использование в системе](#Использование в системе)
    • [Использование в Docker](#Использование в Docker)
    • [Разработка и самостоятельная компиляция](#Разработка и самостоятельная компиляция)
    • Webhook
    • FAQ
    • [Реактивный макет](#Реактивный макет)
    • Лицензия

Функции

  • Поддержка операционных систем Mac, Windows, Linux и архитектур: linux/amd64, linux/arm64/v8, linux/arm/v7, linux/ppc64le, linux/s390x.
  • Поддержка сервисов доменных имён Alidns (Али Облако), Dnspod (Облако Tencent), Cloudflare и Huawei Cloud.
  • Поддерживает записи A и AAAA (в будущем будут поддерживаться все типы записей, поддерживаемые платформой).
  • Многодоменная поддержка (одновременное использование нескольких сервисов доменных имён).
  • Поддержка интерфейса/сетевой карты для получения IP.
  • Возможность запуска в качестве сервиса.
  • По умолчанию синхронизация происходит каждые 5 минут.
  • Поддержка нескольких доменов одновременно.
  • Поддержка многоуровневых доменов и подстановочных доменов (*.google.com).
  • Возможность настройки домена на пользовательский IP.
  • Функции запроса, автоматического создания, удаления и изменения записей DNS у поставщиков услуг.
  • Веб-интерфейс для настройки с возможностью установки имени пользователя и пароля, а также запрета доступа из Интернета.
  • Webhook с шаблонами переменных для персонализации сообщений.
  • Мониторинг в реальном времени с 24-часовым журналом запросов (мониторинг системных журналов).

Перед использованием

Программа предоставляет API-операции для управления записями DNS на платформах Alidns, Dnspod, Cloudflare и Huawei Cloud. Она позволяет удалённо создавать, изменять и удалять записи DNS, что избавляет от необходимости каждый раз заходить в панель управления каждого провайдера. Если вам нужна эта программа, возможно, вы используете домашний сервер или NAS и нуждаетесь в динамическом разрешении доменных имён, или не хотите каждый раз входить в панель управления DNS провайдера (например, если вы не обязательно хотите, чтобы домен указывал на ваш локальный IP), то эта программа может быть вам полезна.

  • Предварительные условия:
    • Убедитесь, что ключи API (токены, идентификаторы доступа и секретные ключи) для каждой платформы доступны.
    • Убедитесь, что настройки IPv4 и IPv6 для разрешения доменных имён включены.
  • Способы получения IP:
    • Существует три способа получения IP: через сетевую карту, сторонние API и пользовательские IP. По умолчанию используются IP, полученные через сетевую карту или сторонние API.
    • Пользовательские IP имеют более высокий приоритет по сравнению с IP, полученными через сетевую карту или сторонний API. Это означает, что если настроен пользовательский IP, домен будет разрешаться к этому IP.
    • При отсутствии пользовательского IP и изменении домена, домен будет разрешён к IP, полученному через сетевую карту или сторонним API.
  • Стратегии обновления и удаления записей доменных имён:
    • Для всех платформ поддерживается точный поиск (по полному доменному имени) и общий поиск (по частичному доменному имени).
    • Alidns поддерживает точный и общий поиск.
    • Dnspod поддерживает точный и общий поиск.
    • Cloudflare поддерживает только общий поиск.
    • Huawei Cloud поддерживает только общий поиск.
  • Стратегия удаления записей доменного имени:
    • Записи удаляются по ID.
  • Стратегия обновления записей доменного имени:
    • Изменяется на IP, полученный через сетевую карту или сторонний API, за исключением случаев, когда используется пользовательский IP. В этом случае запись будет обновлена только при изменении пользовательского IP или его удалении.
  • Стратегия добавления записей доменного имени:
    • Новые записи добавляются, если они ещё не существуют.

Использование в системе

  • Требования к среде (здесь показано только развёртывание на Linux):
    • Чтобы избежать неожиданных проблем во время использования, рекомендуется следующая конфигурация:
      • Debian 10
      • 512 МБ или больше памяти
Использование готовых установочных пакетов
> Нет необходимости устанавливать среду выполнения Java, но она не помешает, если уже установлена.
>
> <img alt="Последняя версия" src="https://img.shields.io/github/v/release/gngpp/vertx-ddns.svg?logo=github&style=flat-square">
```shell
# Скачать последнюю версию пакета, где {{version}} — номер версии, а {{runtime-version}} — версия среды выполнения. Дополнительные ссылки для скачивания см. на странице https://github.com/gngpp/vertx-ddns/releases
wget https://github.com/gngpp/vertx-ddns/releases/download/{{version}}/{{runtime-version}}.zip
# Например, выберите версию v1.0.4 и среду выполнения runtime-17-temurin-linux
wget https://github.com/gngpp/vertx-ddns/releases/download/v1.0.4/runtime-17-temurin-linux.zip

# Если нет прокси, можно использовать ускоряющее зеркало
wget https://github91chifun.workers.dev/https://github.com//gngpp/vertx-ddns/releases/download/{{version}}/{{runtime-version}}.zip

# Распаковать пакет установки
unzip ddns-runtime.zip

# Установить
cd ddns-runtime
chmod +x ./install.sh
sudo ./install.sh

# Удалить
cd ddns-runtime
chmod +x ./uninstall.sh
sudo ./uninstall.sh
```
Пример для платформы x86, установка среды выполнения Java (Ubuntu/Debian)
> Если среда выполнения Java уже установлена, этот шаг можно пропустить.
```shell
# Импорт ключа GPG AdoptOpenJDK
wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -

# Импорт репозитория DEB
sudo add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/

# Если терминал выдаёт ошибку «Command not found», выполните следующие команды:

* linux/amd64,
* linux/arm64/v8,
* linux/arm/v7,
* linux/ppc64le,
* linux/s390x.

**Дополнительная информация:** https://hub.docker.com/r/zf1976/vertx-ddns/tags.

Предлагаются четыре тега: latest, debian, ubuntu, alpine.

`ubuntu — OpenJ9-16`, `debian:buster-slim — OpenJ9-16`, `alpine — OpenJDK-17`. Это три базовых образа системы с соответствующими JRE Runtime для образов программ. Все они были упрощены с помощью jlink, что значительно уменьшило размер образов. Использование OpenJ9 позволяет эффективно уменьшить использование памяти во время выполнения ([официальный сайт](https://how-to.vertx.io/openj9-howto/)).

Четыре размера тегов образов: alpine < debian < ubuntu < latest. В реальности, версия 17 runtime лучше всего контролирует память и возвращает её операционной системе.

Поддерживается режим хоста, и не требуется выполнять сопоставление портов (одновременно поддерживаются IPv4 и IPv6).

Если каталог хоста не подключён, при удалении контейнера конфигурация также будет удалена.

Откройте в браузере http://ip:8081, войдите и измените конфигурацию (по умолчанию имя пользователя и пароль: vertx).

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

```shell
docker run -d -p 8081:8080 --name vertx-ddns --restart=always zf1976/vertx-ddns:latest

Конфигурация не будет потеряна после удаления контейнера, если подключить каталог хоста. Можно заменить /root/.vertx_ddns на пользовательские права root по умолчанию, а файл конфигурации сделать скрытым.

docker run -d -p 8081:8080 --name vertx-ddns --restart=always -v /your_path:/root/.vertx_ddns zf1976/vertx-ddns:latest

Чтобы подключить файл журнала к хосту, добавьте параметр -v /your_path:/vertx-ddns/logs.

Самостоятельная компиляция разработки

Убедитесь, что у вас есть среда разработки JDK16+. Проект использует Gradle 7.x, но вы можете использовать любую другую версию, если она установлена.

# Linux/Unix
./gradlew shadowJar

# Windows, используйте Terminal, замените '/' на '\' в cmd
./gradlew.bat shadowJar

Webhook

В настоящее время поддерживается временное взаимодействие с тремя службами вебхуков: Lark, DingTalk и Server Sauce.

Анализируются изменения состояния записей журнала (успех, сбой, ошибка), и вызывается предоставленный API вебхука.

Содержимое сообщения поддерживает переменные шаблона. Если содержимое сообщения пусто или система отправляет ошибку, то отправляется содержимое журнала анализа по умолчанию.

Переменная Описание
#provider DNS-провайдер
#sourceIp Исходный IP
#targetIp Изменённый IP
#time Время разрешения
#status Состояние разрешения: без изменений, сбой, успех, ошибка
#domain Доменное имя

Пример:

DNS Provider: #provider, Status: #status —> DNS Provider: ALIYUN, Status: 2021-08-28 15:14:01.

FAQ

По умолчанию логин: vertx. Windows и macOS не поддерживают режим хоста Docker. По умолчанию внешний доступ запрещён. Чтобы разрешить его, отредактируйте файл $HOME/.vertx_ddns/secure_config.json и установите значение поля notAllowWanAccess равным false, затем перезапустите службу.

Интерфейс

Лицензия

MIT License.

Поддержка JetBrains Open Source Certificate

Проект vertx-ddns всегда разрабатывался в интегрированной среде разработки IntelliJ IDEA Ultimate под эгидой компании JetBrains. Разработка основана на бесплатных лицензиях JetBrains Open Source(s), которые предоставляются бесплатно. Я выражаю свою благодарность.

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/gngpp-vertx-ddns.git
git@api.gitlife.ru:oschina-mirror/gngpp-vertx-ddns.git
oschina-mirror
gngpp-vertx-ddns
gngpp-vertx-ddns
main