About MyDNS
A free community service since 2003
MyDNS started in 2003 as a simple idea: everyone with a home server deserves a stable, memorable hostname — without paying for it. 23 years later we're still here, still free, and still independent.
We've never run premium tiers, forced migrations, or sunset "free" plans to push people into paid ones. If you registered a hostname in 2003, it still works today — as long as you keep it updated.
Most residential internet connections are assigned a dynamic IP address. Every time your modem reconnects — after a power outage, a firmware update, or just a routine DHCP lease renewal — you might get a completely new address.
That's fine for browsing the web, but a nightmare if you want to:
- Access your home NAS or file server remotely
- Connect to a home automation system while you're away
- Host a personal website, game server, or development environment
- Reach IP cameras or security systems from your phone
- Run your own email server
- Use SSH to get back into your home network
Without dynamic DNS, you would need to check your IP manually every time it changes and update every device and bookmark that depends on it.
When you register, you get a hostname like yourname.mydns.se. You then set up a scheduled task — a cron job on Linux, a scheduled task on Windows, or a built-in feature on many routers — that calls a simple URL:
Each time that URL is called, we detect your public IP from the request and update the DNS record. The change propagates within minutes. Your hostname always points to you, no matter how often your ISP changes your address.
There's no client software to install. Any device that can make an HTTP request — whether it's a Linux box with curl, a Windows PC with PowerShell, or a router with a built-in DynDNS client — can keep your hostname up to date.
Dynamic DNS isn't a single standard — it's a family of simple HTTP-based update protocols that all follow the same basic idea:
- Detect — your client figures out its current public IP address.
- Authenticate — it sends an HTTP request to the DynDNS provider with credentials (hostname + password).
- Update — the provider verifies the credentials and updates the DNS A record to point to the new IP.
- Respond — the server replies with a status so the client knows whether the update succeeded.
The original DynDNS2 protocol
The most widely supported variant was created by Dyn (formerly DynDNS.org) and is often called the DynDNS2 or Dyn Update protocol. Virtually every router with a "Dynamic DNS" settings page speaks this protocol. It works like this:
The server responds with a short status string:
good 1.2.3.4— update successfulnochg 1.2.3.4— IP hasn't changed, no update neededbadauth— invalid username or passwordnotfqdn— the hostname isn't a valid fully qualified domain nameabuse— too many update requests in a short time
Because Dyn was the first major DynDNS provider, this protocol became a de facto standard. Routers from ASUS, Netgear, TP-Link, and others, as well as firmware like OpenWrt, DD-WRT, and pfSense, all support it natively. Many competing services (No-IP, Afraid.org, etc.) adopted the same API format for compatibility.
MyDNS update methods
MyDNS supports two ways to update your IP:
Method 1: Simple URL (u.php)
The easiest way — just call a URL with curl, wget, or any HTTP client:
Your IP is detected automatically from the connection. No special client needed.
Method 2: Standard DynDNS2 protocol (/nic/update)
For routers and DynDNS clients that speak the standard protocol, we offer a fully compatible endpoint:
This works with the built-in DynDNS client in most routers (ASUS, Netgear, TP-Link, OpenWrt, DD-WRT, pfSense, etc.) and desktop clients like ddclient and inadyn.
Router setup:
- Service: Custom
- Server: mydns.se
- Path: /nic/update
- Username: yourhost.mydns.se
- Password: your password
- Hostname: yourhost.mydns.se
ddclient example (/etc/ddclient.conf):
Response codes:
good 1.2.3.4— updated successfullynochg 1.2.3.4— IP unchanged, no update neededbadauth— invalid credentialsnotfqdn— invalid hostnamednserr— DNS update failed on our end
You can optionally pass myip=1.2.3.4 to specify the IP explicitly. If omitted, we detect it from the connection automatically (recommended).
IP detection: how the server knows your address
Some protocols require the client to send its IP explicitly (myip=1.2.3.4). The problem is that many clients get this wrong — they report a local LAN address (like 192.168.1.x) instead of the public IP.
MyDNS avoids this entirely. When your request reaches our server, we read the source IP from the TCP connection itself. This is the address that the rest of the internet sees when it talks to your network, so it's always correct — even if you're behind multiple layers of NAT.
Many ISPs block outgoing and incoming traffic on port 25 to fight spam. Unfortunately, that also prevents you from receiving email on your own mail server at home.
Our SMTP forwarding service works around this: we accept mail on port 25 for your mydns hostname and forward it to your server on any port you choose. Your MX record points to us, and we relay the connection straight to you. This works with custom domains too — just point your domain's MX record at your mydns hostname.
- DNS propagation: changes take up to 5 minutes
- Record type: A records (IPv4)
- Update method: simple HTTP GET request with hostname and password
- Minimum update frequency: at least once a month to keep your hostname active
- Password storage: bcrypt hashed — we never store plaintext passwords