Nexapp - Dynamic DNS

Dynamic DNS

Dynamic DNS (DDNS) automatically updates a DNS record with the firewall’s current public IP address. This is useful when your ISP changes your IP dynamically, because you can still reach the firewall using a stable hostname instead of tracking the IP.

Example use cases:

  • remote access to the Web UI / SSH
  • VPN endpoints (OpenVPN/WireGuard/IPsec) using a hostname
  • services published via reverse proxy or port forwards

Supported providers

NexappOS supports many providers out of the box, including:

  • Cloudflare
  • DigitalOcean
  • DNSpod
  • FreeDNS (afraid.org)
  • Gandi
  • GCP (Google Cloud Platform)
  • GoDaddy
  • LuaDNS
  • No-IP
  • NS1
  • One.com
  • PowerDNS (Pdns)
  • Route53 (AWS)
  • TransIP

If your provider is not listed, you can still configure it with a custom update URL.


Prerequisites

Before configuring DDNS, make sure you have:

  • a NexappOS firewall with working Internet access
  • an account on your DDNS provider
  • a registered domain/hostname on that provider
  • API credentials (token / key / password) that allow DNS updates

General configuration steps (CLI)

DDNS is configured using UCI from the terminal. The workflow is always the same:

  1. Update and list available providers
ddns service update
ddns service list-available
  1. Create a DDNS service entry Fill in the fields required by your provider:
  • service_name: provider identifier from the list
  • username: username or client ID (if required)
  • password: password or API key/token
  • domain / lookup_host: hostname to update
  • interface: interface used to detect public IP (usually wan)
  • enabled: enable the service

Example template:

uci set ddns.myddns=service
uci set ddns.myddns.service_name="ddnsprovider.com"
uci set ddns.myddns.domain="host.yourdomain.net"
uci set ddns.myddns.lookup_host="host.yourdomain.net"
uci set ddns.myddns.username="your_user_name"
uci set ddns.myddns.password="your_api_key"
uci set ddns.myddns.interface="wan"
uci set ddns.myddns.enabled="1"
uci commit ddns
  1. Restart the DDNS service
/etc/init.d/ddns restart

Notes & best practices

  • Ensure the chosen provider plan supports API access and dynamic updates.
  • Double-check credentials: most DDNS failures are caused by typos in tokens or usernames.
  • If you want logging in syslog, enable it in your service entry:
uci set ddns.myddns.use_syslog='1'
uci commit ddns
/etc/init.d/ddns restart
  • Some providers support wildcards or multi-record updates; check your provider docs for extra fields.

Example: FreeDNS (afraid.org)

Hostname: sanchio.crabdance.com Username: myuser Password: mypass

uci set ddns.afraid=service
uci set ddns.afraid.service_name='afraid.org-v2-basic'
uci set ddns.afraid.lookup_host='sanchio.crabdance.com'
uci set ddns.afraid.domain='sanchio.crabdance.com'
uci set ddns.afraid.username='myuser'
uci set ddns.afraid.password='mypass'
uci set ddns.afraid.interface='wan'
uci set ddns.afraid.ip_source='network'
uci set ddns.afraid.ip_network='wan'
uci set ddns.afraid.use_ipv6='0'
uci set ddns.afraid.enabled='1'
uci set ddns.afraid.use_syslog='1'
uci set ddns.afraid.check_unit='minutes'
uci set ddns.afraid.force_unit='minutes'
uci set ddns.afraid.retry_unit='seconds'
uci commit ddns
/etc/init.d/ddns restart

Custom provider example: dyndns.it

If a provider is not listed, you can define an explicit update URL.

Hostname: nstest1.freeddns.it Username: nstest1 Password: nstest

uci set ddns.dyndns_it=service
uci set ddns.dyndns_it.enabled='1'
uci set ddns.dyndns_it.lookup_host='nstest1.freeddns.it'
uci set ddns.dyndns_it.domain='nstest1.freeddns.it'
uci set ddns.dyndns_it.username='nstest1'
uci set ddns.dyndns_it.password='nstest'
uci set ddns.dyndns_it.interface='wan'
uci set ddns.dyndns_it.ip_source='network'
uci set ddns.dyndns_it.ip_network='wan'
uci set ddns.dyndns_it.force_interval='24'
uci set ddns.dyndns_it.force_unit='hours'
uci set ddns.dyndns_it.check_interval='10'
uci set ddns.dyndns_it.check_unit='minutes'
uci set ddns.dyndns_it.update_url='http://update.dyndns.it/nic/update?hostname=[DOMAIN]&user=[USERNAME]&password=[PASSWORD]'
uci commit ddns
/etc/init.d/ddns restart

Using CLI

If preferred, you can set up DDNS there instead of CLI.

Discard
Save
This page has been updated since your last edit. Your draft may contain outdated content. Load Latest Version

On this page

Review Changes ← Back to Content
Message Status Space Raised By Last update on