| Crates.io | netlink-ddns |
| lib.rs | netlink-ddns |
| version | 0.1.8 |
| created_at | 2025-12-29 04:38:21.183239+00 |
| updated_at | 2025-12-30 05:15:14.888842+00 |
| description | A minimal DDNS server that publishes IP changes to DNS. |
| homepage | |
| repository | https://github.com/tarka/netlink-ddns |
| max_upload_size | |
| id | 2009950 |
| size | 110,635 |
A dynamic DNS (DDNS) updater for Linux that monitors network interface changes via netlink and automatically updates DNS records.
Netlink DDNS is a lightweight service that monitors your network interfaces via kernel netlink for IP address changes and automatically updates your DNS records to match your current IP address. Currently only Gandi is supported as a upstream provider, but more can be added.
Tarballs are available on the Github release page. These contain binaries, documentation, example configuration files, and an example systemd configuration.
cargo install netlink-ddns
# The binary will be in ~/.cargo/bin/
You'll need Rust installed to build the project:
# Clone the repository
git clone https://github.com/tarka/netlink-ddns.git
cd netlink-ddns
# Build & install the project
cargo build --release
# The binary will be in target/release/netlink-ddns
The service is configured using a Corn config file. By
default, it looks for the configuration at /etc/netlink-ddns/config.corn.
Example configuration:
let {
// Secrets can be stored in environment variables. The systemd service can set these
// from a secrets file.
$env_PORKBUN_KEY = "a_key"
$env_PORKBUN_SECRET = "a_secret"
} in {
log_level = "debug"
iface = "test0"
ddns = {
domain = "example.com"
host = "test"
provider = {
name = "porkbun"
key = $env_PORKBUN_KEY
secret = $env_PORKBUN_SECRET
}
}
}
The file systemd/netlink-ddns.service contains an example systemd
configuration. This is also available in the release tarballs.
This project is licensed under the GPL 3.0 - see the LICENSE file for details.