# 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](https://gitlab.com/ipcalc/ipcalc) ("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): 1. Current working directory (`.env`) 2. Script's real path directory (`.env`) 3. Script's real path directory (`.env.`) 4. Script's symlink path directory (`.env.`) 5. `/opt/skyfritt-tools-env/.env.` #### 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: ```rsc :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 ```bash # 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)