Dynamic DNS Quickstart
Audience
This guide is for new users that need to set up a hostname and manage its address via an update device such as a camera, router, or software updater. In this guide you will create API and DDNS keys, bootstrap a new zone and hostname, then update that name’s address via Dynamic DNS Integration API. You will use both the No-IP API and the Dynamic DNS Integration API.
Create a No-IP API key
First, sign into your No-IP account and navigate to the API Key management page. Here you will create your first No-IP API Key.
# Assign the API key you just generated. It should begin with 'sk_'export API_KEY="sk_..."
Note: The API Key will only be shown once. If you lose it, you will have to generate a new one. No-IP does not store the original key.
Create a Zone
First, we will create a new zone. We’ll use example.com
in this guide. Replace it with your own domain.
curl --user ":${API_KEY}" \ --json '{ "name": "example.com" }' \ "https://api.noip.com/v1/dns/zones"
Verify the Zone
List the zones in the account to see the new zone.
curl --user ":${API_KEY}" "https://api.noip.com/v1/dns/zones"
{ "page": { "offset": 0, "limit": 50, "total": 1 }, "data": [ { "name": "example.com", "zone_type": "primary", "nx_ttl": 1800, "is_shared": false, "is_owner": true, "publication_state": "publishrequested", "is_write_prohibited": false, "created_at": "2024-03-28T21:50:59Z", "updated_at": "2024-03-28T21:50:59Z" } ]}
Create a Hostname
Create a record for myhost.example.com
.
Note that in this example you will replace example.com
in the URL path.
curl --user ":$API_KEY" \ --json '{ "name": "myhost", "rrsets": [{ "dns_type": "A", "rdata": [{ "value": "0.0.0.0" }]}] }' \ "https://api.noip.com/v1/dns/records/example.com"
Verify the Record
View the RRSet you just created. An RRSet is the values that are served for a DNS record name and type.
Note that in this example you will replace example.com
in the URL path.
curl --user ":$API_KEY" \ "https://api.noip.com/v1/dns/records/example.com/myhost/rrsets"
{ "page": { "offset": 0, "limit": 50, "total": 1 }, "data": [ { "name": "myhost", "dns_type": "A", "ttl": 1800, "metadata": {}, "rdata": [ { "value": "0.0.0.0", "label": "gwoNEVtjNU3n" } ], "updated_at": "2024-03-28T22:07:53Z" } ]}
Create a DDNS Key
Create a DDNS key. A DDNS key has a username and password which is used to authenticate with the Dynamic DNS Integration API.
curl --user ":$API_KEY" \ --json '{ "description": "northeast-office" }' \ "https://api.noip.com/v1/account/ddns-keys"
{ "credentials": { "username": "5fqy9st", "password": "xxxxxxxxxxxx" }}
This response is the only time the password will be visible!
# assign the output of the previous command to a variable in this format for later use.export DDNS_KEY="5fqy9st:xxxxxxxxxxxx"
Verify Your DDNS Key
Note: When using DDNS Keys, you will set your
hostname
to “all.ddnskey.com”. You can read more details about DDNS Keys in the No-IP knowledgebase.
The credential can be verified directly with the Dynamic DNS Integration API.
curl --user "${DDNS_KEY}" \ --header "User-Agent: DDNSQuickstartGuide" \ "https://dynupdate.no-ip.com/nic/update?hostname=all.ddnskey.com"
Example response:
nochg 0.0.0.0
Add the Hostname to the DDNS Key
In the previous command, we verified the DDNS key credentials, but did not issue an IP update to the hostname we created earlier.
In order to issue an IP address update the hostname, add the hostname target(s) to the DDNS key.
Note that in this example you will replace the example username 5fqy9st
with your own DDNS key username.
curl --user ":$API_KEY" \ -X PUT \ --json '{ "targets": [{"name": "myhost", "zone_name": "example.com"}] }' \ "https://api.noip.com/v1/account/ddns-keys/5fqy9st"
Issue an Update
Option 1: Integrated Software
The DDNS key credentials can be used with any software or device that integrates with No-IP, such as No-IP’s update clients, cameras, routers, and more. Your chosen software will issue IP updates automatically!
Option 2: Directly with the Dynamic DNS Integration API
You can issue an update to a specific IP address using the ip
query parameter.
curl --user "${DDNS_KEY}" \ --header "User-Agent: DDNSQuickstartGuide" \ "https://dynupdate.no-ip.com/nic/update?hostname=all.ddnskey.com&myip=2.3.5.8"
Example response:
good 2.3.5.8