DNSDrone keeps track of public IPv4 and IPv6 addresses and updates the configured DNS records when changes are detected.
.gitignore | ||
dnsdrone.rsc | ||
dnsdrone.sh | ||
LICENSE | ||
README.md |
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
- curl
- jq
- dig
- nsupdate
- ipcalc or ipcalc-ng ("ng" for Debian-based distros)
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):
- Current working directory (
.env
) - Script's real path directory (
.env
) - Script's real path directory (
.env.<script_name>
) - Script's symlink path directory (
.env.<symlink_name>
) /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
- Upload the script to your Mikrotik router
- Configure the CONFIG dictionary
- Run manually or schedule via RouterOS scheduler
License
Licensed under GNU Affero General Public License v3 (AGPL-3.0)