Skip to main content

7.6 Dynamic DNS

Blockchain clients typically do not remain a persistent connection and rely on static or temporary IP addresses that can change over time and cause connection issues to other peers in the network. Instead of using IP addresses, Dynamic DNS can be used to link your changing IP to a fixed hostname.

tip

Further details about DDNS, setups, and providers can be found on the Dynamic DNS page in the 🧠 Theory section.

warning

The Nimbus-Eth2 client does not support DDNS, as it's able to automatically detect public IP changes to update it's address accordingly. Instead of a dynamic DNS, please refer to the Public IP Setup to configure automatic IP updates.

1. Registration

NO-IP is one of the free and recommended DDNS providers. The service comes with plug-and-play installation and scripts, ideal for regular node setups. Within the free service, you will receive emails to extend the hostname once a month that needs to be confirmed to keep the hostname active. For little money, the domain ownership will be extended without further maintenance.

1.1 Register on the Page: Use email and password to create a new account on the NO-IP Webpage.

1.2 Choose a Hostname: Choose a hostname of your choice from the ddns.net category.

1.3 Verify your Email: Complete the registration by confirming your email and optional payment.

1.4 Improve Security: Set 2FA, a username, and add a security question to protect against malicious actors.

info

Once the account is set up, the following steps are performed on your 📟 node server.

2. Installation

To connect your node with the NO-IP service, you have to install their package.

2.1 Download the NOIP Software: Get the latest stable build of DUC for Linux and install it within the source directory.

# Move to Home Directory
cd

# Download Software
sudo wget --content-disposition https://www.noip.com/download/linux/latest

The output should be similar to this:

[DATE] [TIME] (11.8 MB/s) - ‘noip-duc_3.3.0.tar.gz’ saved [4896895/4896895]
tip

Always sick to stable releases. As of June 2025, Version 3.3.0 is the latest stable release.

2.2 Extract the Tape Archive: Unpack the archive file using the downloaded build tool and move into it's binary.

sudo tar xf noip-duc_3.3.0.tar.gz
cd noip-duc_3.3.0/binaries
info

The tar command will extract x the tape archive into its previous packaged files f.

warning

The folder name will vary depending on the installed version.

2.3 Install the Binary: Install the executable binary file of your architecture using the system's package manager.

# Enhence Permissions for Local Installation
sudo chown _apt /var/lib/update-notifier/package-data-downloads/partial/

# Install Binary
sudo apt install ./noip-duc_3.3.0_amd64.deb

# Return to Home Directory
cd
info

You will have to enhence the permissions for the package manager's default _apt user to be able to write into the partial download directory, used for installing local packages that have been pre-downloaded to the system.

2.4 Verify Installation: Check the installation folder and service files of the installed package.

dpkg -L noip-duc

The output should look similar to:

/usr
/usr/share
/usr/share/doc
/usr/share/doc/noip-duc
/usr/share/doc/noip-duc/README.md
/lib
/lib/systemd
/lib/systemd/system
/lib/systemd/system/noip-duc.service
/usr/share/doc/noip-duc/copyright
/usr/bin
/usr/bin/noip-duc

2.5 Check Executable: Try to call the service directly from the terminal to ensure it can be called by the system.

noip-duc

The output should look similar to:

USAGE:
noip-duc [OPTIONS] --username <USERNAME> --password <PASSWORD>

For more information try --help

2.6 Delete Installation Files: After the installed package and executable have been verified, delete the installation files.

sudo rm -rf noip-duc_3.3.0 noip-duc_3.3.0.tar.gz
warning

The folder name will vary depending on the installed version.

3. User Configuration

Since the service will be automatically starting and running, we need to set login credentials and preferences.

3.1 Create User Config File: Create the file with all your DDNS credentials and preferences using your preferred text editor.

sudo vim /etc/default/noip-duc

3.2 Write User Configurations: Input all your preferences and DDNS update interval, then save and exit the file.

NOIP_USERNAME=<your-noip-username>
NOIP_PASSWORD=<your-noip-password>
NOIP_HOSTNAMES=<your-ddns-hostname>
NOIP_CHECK_INTERVAL=5m
info

The following properties need to be exchanged:

  • <your-noip-username> with your NOIP email
  • <your-noip-password> with your NOIP password
  • <your-ddns-hostname> with your DDNS hostname ending on .ddns.net

3.3 Update Permissions: For better security, locking down the permissions so only the root user can access credentials.

sudo chmod 600 /etc/default/noip-duc
sudo chown root:root /etc/default/noip-duc

4. Service Configuration

The setup already installed a default NOIP service file that can be used to allow automatic startups during boot and restarts on failures. We can further modify the default service file to also check for logging, an online network connection.

4.1 Open Service Config File: Further customize the service file using your preferred text editor.

sudo vim /lib/systemd/system/noip-duc.service

4.2 Update Service Configurations: Add further preferences for network autages and restarts, then save and exit the file.

[Unit]
Description=No-IP Dynamic Update Client
After=network.target auditd.service syslog.target network-online.target
Wants=network-online.target

[Service]
EnvironmentFile=/etc/default/noip-duc
ExecStart=/usr/bin/noip-duc
Restart=on-failure
Type=simple
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target
Full Property Explanation
PropertyDescription
DescriptionA human-readable description of the service shown in systemctl status.
After- network.target: Ensures networking setup enabled before service is started.
- auditd.service: Ensures audit daemon is initialized before service is started.
- syslog.target: Ensures system logging is ready before service is started.
- network-online.target: Waits for network to be fully online before service is started.
WantsTries to fullfil network-online.target but might start even if there is a temporary downtime.
EnvironmentFilePath to the /lib/systemd/system/noip-duc.service configuration file.
ExecStartLink to binary at /usr/bin/noip-duc, started with the terminal command of the service.
RestartRestarts the service on-failure for a variety of reasons.
TypeIndicates running at a simple service in the foreground without forking into a daemon process.
StandardOutputSends regular service logs to the journal or syslog system.
StandardErrorSends error service logs to the journal or syslog system.
WantedByStarts the service automatically during the system's normal multi-user boot.
warning

Ensure there are no missing or unintended spaces, characters or linebreaks before saving the service configuration.

5. DDNS Startup

After both, the user and service configuration are set in place, we can start the DDNS tool.

5.1 Reaload Service Configs: Reload the previously modified system manager configuration for all services.

sudo systemctl daemon-reload

5.2 Enable Autostarts: Use the system control to create a symbolic link to enable startups during boot.

sudo systemctl enable noip-duc

The output should be similar to:

Created symlink /etc/systemd/system/noip.service → /lib/systemd/system/noip-duc.service.
Created symlink /etc/systemd/system/multi-user.target.wants/noip-duc.service → /lib/systemd/system/noip-duc.service.

5.3 Start the Service: Use the system control to start the DDNS service with the configured user credentials and preferences.

sudo systemctl start noip-duc

5.4 Verify Status: Use the system control to fetch the current status and check if it's running correctly.

sudo systemctl status noip-duc
info

The status will display whether it is active, enabled, or disabled and show any recent log entries.

The output should look similar to this:

● noip-duc.service - No-IP Dynamic Update Client
Loaded: loaded (/lib/systemd/system/noip-duc.service; enabled; vendor preset: enabled)
Active: active (running) since [DATE] UTC; [TIME] ago
Main PID: 288425 (noip-duc)
Tasks: 1 (limit: 38033)
Memory: 388.0K
CPU: 7ms
CGroup: /system.slice/noip-duc.service
└─288425 /usr/bin/noip-duc

[DATE] [TIME] [USER] systemd[1]: Started No-IP Dynamic Update Client.
[DATE] [TIME] [USER] noip-duc[288425]: [DATE-TIME INFO noip_duc::public_ip] Attempting to get IP with method Dns(No-IP Anycast DNS Tools)
[DATE] [TIME] [USER] noip-duc[288425]: [DATE-TIME INFO noip_duc::observer] got new ip; current=[YOUR_PUBLIC_IP], previous=0.0.0.0
[DATE] [TIME] [USER] noip-duc[288425]: [DATE-TIME INFO noip_duc::observer] update successful; current=[YOUR_PUBLIC_IP], previous=0.0.0.0
[DATE] [TIME] [USER] noip-duc[288425]: [DATE-TIME INFO noip_duc::observer] checking ip again in 5m
...

Remember your DDNS hostname or copy it to a notepad, as it will be necessary for the client updates.

6. Stop Node Operation

Depending on your setup method, there are different ways to stop your node before linking your DDNS hostname.

cd <lukso-working-directory>
lukso stop
info

Exchange <lukso-working-directory> with the path of the node folder.

Force Client Shutdown
sudo pkill geth

7. Client DNS Update

Depending on your consensus client, the DDNS hostname can be set with different properties.

Open the configuration file using your preferred text editor.

cd <lukso-working-directory>/configs/<network>/prysm/
vim prysm.yaml
info

The following properties need to be exchanged:

  • <lukso-working-directory> with the path to the node folder.
  • <network> with the name of your node's network.

Set the DDNS hostname within the settings, then save and exit the file.

In case the p2p-host-ip property is set, disable it by putting a hash # in front:

# Previous Value Examples
p2p-host-ip: '0.0.0.0'
p2p-host-ip: '<your-ip-address>'

# Updated Value
#p2p-host-ip: '0.0.0.0'
#p2p-host-ip: '<your-ip-address>'

Then add the p2p-host-dns property into a new line of the file:

# Added Property
p2p-host-dns: '<your-ddns-hostname>'
info

Exchange <your-ddns-hostname> with the actual address of the DDNS hostname ending on .ddns.net.

warning

Ensure there are no missing spaces, characters or unintended linebreaks before saving the configuration file.

8. Restart the Node

Depending on your setup method, there are different ways to start your node after the DDNS hostname was added.

cd <lukso-working-directory>
lukso start --checkpoint-sync
info

Exchange <lukso-working-directory> with the path of the node folder.

After the clients were started, verify that their services are still up.

sudo lukso status
tip

You should now have a stable and permanent blockchain connection. Wait some hours before rechecking your peer count.

Maintenance

Proper maintenance ensures that all the components are working as intended and can be updated on the fly.

Logging: Check the latest status of the system service.

sudo journalctl -f -u noip-duc
tip

Further details about checking client logs files can be found on the Problem Scanning page.

Starting: If you made any changes or updates to configuration, reload the system daemon and start the node.

sudo systemctl daemon-reload
sudo systemctl restart noip-duc

Stopping: You can stop all the node clients and parent processes using the system control.

sudo systemctl stop noip-duc
tip

Further information about system control or logging can be found on the Utility Tools page in the 🧠 Theory section.

Revert Setup

If something went wrong, you can remove the service and related files all together.

1. Disable Node Service: Remove the service link from the system's boot.

sudo systemctl disable noip-duc

2. Remove Service File: Delete the service configuration file from the system folder.

sudo rm /lib/systemd/system/noip-duc.service

3. Reload System Service: Reload the system daemon to apply latest service updates.

sudo systemctl daemon-reload

4. Remove Software Package: Delete the binary and optional configuration files using the package management tool.

# Remove Software
sudo apt remove noip-duc

# Remove Software and Configuration
sudo apt purge noip-duc

5. Update Client Configuration: Stop the node, update your DDNS or IP address, and restart the clients.