DNSDrone keeps track of public IPv4 and IPv6 addresses and updates the configured DNS records when changes are detected.
Find a file
2025-03-11 20:57:16 +01:00
.gitignore Initial commit 2025-03-04 14:53:24 +01:00
dnsdrone.rsc Small fix on v6-handeling 2025-03-11 20:57:16 +01:00
dnsdrone.sh Add version check and auto-update 2025-03-05 11:15:22 +01:00
LICENSE fix: add license 2025-03-06 10:43:30 +01:00
README.md fix: add mikrotik details 2025-03-06 10:51:51 +01:00

DNSDrone

DNSDrone is a collection of scripts for automatically updating DNS records (A, AAAA, PTR, and TXT) in FreeIPA or standard DNS servers. It supports both Bash environments and Mikrotik routers.

Features

Common Features

  • Full DNS record management (A, AAAA, PTR, and TXT records)
  • IPv6 prefix tracking and updates
  • Support for zone apex (root domain) updates
  • FreeIPA API integration

Bash Script Features

  • Dual authentication support (FreeIPA user/password or TSIG keys)
  • Flexible configuration with environment variables and multiple .env file locations
  • Advanced operational modes (debug, dry-run, auto-update)
  • Multiple IP provider fallback for reliable address detection
  • Automatic updates with version checking

Mikrotik Script Features

  • Native RouterOS integration
  • DHCP client-based IP detection
  • DoH (DNS over HTTPS) support for TXT record queries
  • Cookie-based FreeIPA authentication

Prerequisites

For Bash Script

For Mikrotik Script

  • RouterOS with SSH capability
  • DHCP client configuration
  • Internet connectivity for API access

Configuration

Bash Script Configuration

The script looks for a .env file in the following locations (in order):

  1. Current working directory (.env)
  2. Script's real path directory (.env)
  3. Script's real path directory (.env.<script_name>)
  4. Script's symlink path directory (.env.<symlink_name>)
  5. /opt/skyfritt-tools-env/.env.<symlink_name>

Required Variables

Variable Description
SERVER DNS server hostname or IP address
ZONE_NAME DNS zone name (e.g., "example.com")
RECORD_NAME Hostname to update (without domain). Skip to update zone apex

[Rest of the existing configuration documentation remains the same...]

Mikrotik Script Configuration

Configure the script by modifying the CONFIG dictionary:

:local CONFIG {
    "wanInterface"="VLAN666_Altibox";
    "IpaServer"="ipa.demo1.freeipa.org";
    "dnsZone"="demo1.freeipa.org";
    "IpaUser"="admin";
    "IpaPassword"="Secret123";
    "apiVersion"="2.253";
    "recordTTL"="300";
    # [Additional configuration options...]
}

Usage

Bash Script

# Basic usage
./dnsdrone.sh

# Debug mode
./dnsdrone.sh -d

# Dry run
./dnsdrone.sh -n

# Check for updates
./dnsdrone.sh -c

# Auto-update
./dnsdrone.sh -a

Mikrotik Script

  1. Upload the script to your Mikrotik router
  2. Configure the CONFIG dictionary
  3. Run manually or schedule via RouterOS scheduler

License

Licensed under GNU Affero General Public License v3 (AGPL-3.0)