A robust and extensible Dynamic DNS (DDNS) client written in Rust, designed to automatically update DNS records with your current public IP addresses.
- Supports both IPv4 and IPv6 address updates
- Integrates with Gandi LiveDNS API
- Configurable record management
- Comprehensive error handling and logging
- Extensible architecture for adding new DNS providers
- Fault-tolerant operation with retry mechanisms
- Rust toolchain (1.70.0 or later)
- Gandi API key
- Domain managed by Gandi LiveDNS
- Clone the repository:
git clone https://github.com/yourusername/rust-ddns-client.git
cd rust-ddns-client
- Build the project:
cargo build --release
Create a .gandi.toml
configuration file in the project root:
[GANDI]
key = "your_gandi_api_key"
[DNS]
domain = "yourdomain.com"
records = "record"
Run the DDNS client:
cargo run --release
The client will:
- Fetch your current public IPv4 and IPv6 addresses
- Compare them with existing DNS records
- Update the records if changes are detected
The client includes comprehensive error handling for:
- Network connectivity issues
- API authentication failures
- DNS record update problems
- Configuration errors
This project is licensed under the MIT License - see the LICENSE file for details.