FastDDNS 클라이언트 API

IP 주소가 변경될 때마다 DDNS hostname을 자동으로 업데이트합니다.

개요

FastDDNS 클라이언트 API를 사용하면 router, IP 카메라, 스크립트 또는 전용 업데이트 소프트웨어와 같은 HTTP 지원 장치가 DNS hostname이 현재 IP 주소를 가리키도록 유지할 수 있습니다. API는 간단한 GET 요청 방식으로 작동합니다. 클라이언트가 자격 증명과 hostname을 보내면 서버가 결과를 나타내는 짧은 상태 코드를 반환합니다.

서버는 들어오는 연결에서 클라이언트의 공인 IP 주소를 자동으로 감지합니다. IP를 지정하기 위한 추가 매개변수는 필요하지 않습니다.

ℹ️ HTTPHTTPS를 지원합니다. 전송 중 자격 증명을 보호하려면 HTTPS 사용을 강력히 권장합니다.

인증

API는 두 가지 인증 방식을 지원합니다. 두 방식 모두 동일하게 사용할 수 있으므로 기기나 router에서 설정하기 편한 방식을 선택하면 됩니다.

🔑 호스트명별 자격 증명: FastDDNS에서 생성하는 각 hostname에는 전용 사용자 이름user_nameuser_pass비밀번호가 발급됩니다. 이 자격 증명은 오직 해당 호스트네임을 업데이트하면 FastDDNS 관리 대시보드에 로그인하는 데 사용할 수 없습니다. 이 설계는 기기의 자격 증명이 유출되더라도 피해 범위를 제한합니다.

방법 1 — HTTP 기본 인증 (URL 임베디드)

자격 증명은 표준 user:password@host 형식으로 URL에 삽입됩니다. 이는 router, 카메라, HTTP 클라이언트 라이브러리에서 널리 지원됩니다. 대시보드의 Updater 클라이언트 키를 비밀번호로 사용하세요.

https://{user_name}:{user_pass}@client.fastddns.net/?hostname={hostname}

필드 설명 어디서 찾을 수 있을까요
{user_name} 이 특정 hostname을 생성할 때 할당된 사용자 이름입니다. FastDDNS 대시보드 → 호스트명 → 세부 정보
{user_pass} 이 특정 hostname을 생성할 때 할당된 비밀번호입니다. FastDDNS 대시보드 → 호스트명 → 세부 정보
{hostname} 업데이트할 완전히 자격화된 호스트네임, 예를 들어 testhost.fastddns.org. FastDDNS 대시보드 → 호스트명 → 세부 정보

방법 2 — 쿼리 문자열 매개변수

자격 증명은 hostname. 이는 HTTP Basic Auth 헤더를 구성할 수 없지만 완전히 사용자 정의된 URL 문자열을 허용하는 장치와 firmware에 유용합니다.

https://client.fastddns.net/?hostname={hostname}&user_name={user_name}&user_pass={user_pass}
매개변수 유형 설명
{user_name}
 
string 이 hostname을 생성할 때 할당된 사용자 이름입니다.
{user_pass} string 이 호스트네임이 생성될 때 할당된 비밀번호입니다.
{hostname} string 업데이트할 완전히 자격이 된 호스트네임, 예를 들어 testhost.fastddns.org.

쿼리 문자열 인증 예시:

https://client.fastddns.net/?hostname=testhost.fastddns.org&user_name=YOUR_UPDATE_USERNAME&user_pass=YOUR_UPDATE_PASSWORD
⚠️ 쿼리 문자열 인증을 사용할 때는 항상 HTTPS를 사용하여 자격 증명이 평문으로 전송되지 않도록 하세요. HTTP 이 기능은 제공되지만 신뢰할 수 있는 로컬 네트워크나 테스트용으로만 사용해야 합니다.

업데이트 수행

계정에 등록된 hostname의 IP 주소를 업데이트하는 단일 GET 요청을 보내세요. 각 요청은 한 번에 한 호스트명씩 업데이트됩니다.

종착점

GET https://client.fastddns.net/
일반 HTTP로도 접근 가능하며, httpshttp로 대체하세요.

URL 형식 — 방법 1: HTTP 기본 인증

https://{user_name}:{user_pass}@client.fastddns.net/?hostname={hostname}

URL 형식 — 방법 2: 쿼리 문자열

https://client.fastddns.net/?hostname={hostname}&user_name={user_name}&user_pass={user_pass}

쿼리 매개변수

매개변수 유형 설명
hostname 필수 string 업데이트할 완전 자격식 호스트네임(FQDN), 예: myhome.fastddns.net 또는 testhost.fastddns.org. 요청당 한 개의 호스트네임만 지원됩니다.
user_name 방법 2 string 이 hostname의 사용자 이름입니다. 쿼리 문자열 인증(방법 2)을 사용할 때 필수입니다. HTTP Basic Auth(방법 1)를 사용할 때는 필요하지 않습니다.
user_pass 방법 2 string 이 hostname의 비밀번호입니다. 쿼리 문자열 인증(방법 2)을 사용할 때 필수입니다. HTTP Basic Auth(방법 1)를 사용할 때는 필요하지 않습니다.
IP 자동 탐지: 서버는 들어오는 TCP 연결의 소스 IP를 사용해 공인 IP 주소를 확인합니다. myipIP 매개변수를 제공할 필요는 없습니다.

요청 예시

방법 1 — HTTPS를 통한 HTTP 기본 인증:

https://YOUR_UPDATE_USERNAME:YOUR_UPDATE_PASSWORD@client.fastddns.net/?hostname=testhost.fastddns.org

방법 2 — HTTPS를 통한 쿼리 문자열:

https://client.fastddns.net/?hostname=testhost.fastddns.org&user_name=YOUR_UPDATE_USERNAME&user_pass=YOUR_UPDATE_PASSWORD

일반 HTTP 사용(테스트 또는 신뢰할 수 있는 네트워크에서만):

http://YOUR_UPDATE_USERNAME:YOUR_UPDATE_PASSWORD@client.fastddns.net/?hostname=testhost.fastddns.org

반환 코드

모든 업데이트 응답은 HTTP 상태 200 알겠습니다와 평문 본문을 반환합니다. 클라이언트는 이 텍스트 본문을 분석하여 업데이트의 실제 결과를 확인해야 합니다.

good {ip}

업데이트 성공

hostname 레코드가 감지된 IP 주소로 업데이트되었습니다. 응답에 실제 IP가 포함됩니다. 예: good 203.0.113.45. IP가 변경되었을 때 나타나는 예상 응답입니다.

nochg {ip}

변경 필요 없음

hostname이 이미 감지된 IP 주소를 가리키므로 업데이트가 필요하지 않았습니다. 현재 IP가 포함됩니다. 예: nochg 203.0.113.45. 정상적인 비오류 응답입니다.

badauth

인증 실패

사용자 이름 또는 updater 클라이언트 키가 잘못되었거나 취소되었습니다. FastDDNS 대시보드에서 자격 증명을 확인하세요. 자동으로 재시도하지 말고 먼저 자격 증명을 수정하세요.

nohost

호스트네임을 찾지 못했습니다

지정한 hostname이 계정에 존재하지 않거나 동적 업데이트 대상이 아닙니다. hostname 철자를 확인하고 계정에 등록되어 있는지 확인하세요.

911

서버 오류

FastDDNS 서버 측에서 내부 오류가 발생했습니다. 최소 5분 이상 기다린 후 재시도하세요. 문제가 계속되면 FastDDNS 상태 페이지를 확인하거나 지원팀에 문의하세요.

응답 요약

응답 본문 HTTP 상태 의미 필요한 조치
good {ip} 200 IP가 성공적으로 업데이트됨 없음 — 업데이트 완료
nochg {ip} 200 IP가 변경되지 않아 업데이트하지 않음 없음 — 이미 최신 상태입니다
badauth 200 잘못된 자격 증명 사용자 이름 / 클라이언트 키를 확인하세요
nohost 200 호스트네임 등록되지 않음 대시보드에서 호스트 이름 확인
911 200 서버 측 오류 5분 이상 후 다시 시도하세요
⚠️ 자동화에서 중요한 점: 항상 다음을 파싱하세요 응답 본문 텍스트, 단순히 HTTP 상태 코드만 확인하지 마세요. API는 항상 200를 반환합니다 — 텍스트 본문을 통해 업데이트가 실제로 성공했는지 확인할 수 있습니다.

클라이언트 IP 가져오기

FastDDNS는 서버에서 확인되는 공인 IP 주소를 반환하는 간단한 유틸리티 엔드포인트를 제공합니다. 이 엔드포인트는 디버깅, 기기가 어떤 IP에서 연결되는지 확인하거나 업데이트 엔드포인트를 호출하기 전에 커스텀 스크립트에서 사용하는 데 유용합니다.

엔드포인트

GET https://client.fastddns.net/dyndns/getip
인증이 필요하지 않습니다. 일반 HTTP로도 이용할 수 있습니다.

응답

HTTP 200 알겠습니다을 반환하며, 감지된 공인 IP 주소가 응답 본문에 일반 텍스트로 표시됩니다.

# Example response body
203.0.113.45RESPONSE

요청 예시

https://client.fastddns.net/dyndns/getip
http://client.fastddns.net/dyndns/getip

curl다음과 같이 사용:

curl https://client.fastddns.net/dyndns/getipSHELL

코드 예시

셸 / cURL

# Recommended: let curl build the Authorization header (-u), so the
# credentials never appear in the URL.
HOSTNAME="myhome.fastddns.org"
USER_NAME="YOUR_UPDATE_USERNAME"
USER_PASS="YOUR_UPDATE_PASSWORD"
curl -s -u "${USER_NAME}:${USER_PASS}" "https://client.fastddns.net/?hostname=${HOSTNAME}"
# Legacy form, for devices that can only be given one URL field:
curl -s "https://client.fastddns.net/?hostname=${HOSTNAME}&user_name=${USER_NAME}&user_pass=${USER_PASS}"
# Check what IP the server sees from your device
curl -s "https://client.fastddns.net/dyndns/getip"SHELL

파이썬

import requests
HOSTNAME  = "testhost.fastddns.org"
USER_NAME = "YOUR_UPDATE_USERNAME"
USER_PASS = "YOUR_UPDATE_PASSWORD"
# Method 1: HTTP Basic Auth
resp = requests.get(
    "https://client.fastddns.net/",
    auth=(USER_NAME, USER_PASS),
    params={"hostname": HOSTNAME}
)
# Method 2: Query string
# resp = requests.get("https://client.fastddns.net/", params={
#     "hostname": HOSTNAME, "user_name": USER_NAME, "user_pass": USER_PASS
# })
body = resp.text.strip()
if body.startswith("good"):
    print(f"Updated successfully: {body}")
elif body.startswith("nochg"):
    print(f"No change needed: {body}")
elif body == "badauth":
    print("Authentication failed. Check credentials.")
elif body == "nohost":
    print("Hostname not found.")
elif body == "911":
    print("Server error. Try again later.")PYTHON

PHP

<?php
$hostname  = 'testhost.fastddns.org';
$user_name = 'YOUR_UPDATE_USERNAME';
$user_pass = 'YOUR_UPDATE_PASSWORD';
// Recommended: Basic Auth in a request header, so the password is not
// part of the URL and cannot leak through logs or error messages.
$url = "https://client.fastddns.net/?hostname=" . urlencode($hostname);
$auth = 'Basic ' . base64_encode($user_name . ':' . $user_pass);
// Method 2: Query string credentials
// $url = "https://client.fastddns.net/?hostname=" . urlencode($hostname)
//      . "&user_name=" . urlencode($user_name)
//      . "&user_pass=" . urlencode($user_pass);
$ctx = stream_context_create(['http' => [
    'timeout' => 10,
    'header'  => "Authorization: {$auth}\r\n",
]]);
$body = trim(file_get_contents($url, false, $ctx));
switch (true) {
    case str_starts_with($body, 'good'):
        echo "Updated: {$body}\n"; break;
    case str_starts_with($body, 'nochg'):
        echo "No change: {$body}\n"; break;
    case $body === 'badauth':
        echo "Auth failed. Check hostname credentials.\n"; break;
    case $body === 'nohost':
        echo "Hostname not found.\n"; break;
    case $body === '911':
        echo "Server error, retry later.\n"; break;
}PHP

Bash (크론 / 라우터 스크립트)

#!/bin/bash
HOSTNAME="testhost.fastddns.org"
USER_NAME="YOUR_UPDATE_USERNAME"
USER_PASS="YOUR_UPDATE_PASSWORD"
# Method 1: HTTP Basic Auth
RESULT=$(curl -s -u "${USER_NAME}:${USER_PASS}" "https://client.fastddns.net/?hostname=${HOSTNAME}")
# Method 2: Query string (uncomment to use instead)
# RESULT=$(curl -s "https://client.fastddns.net/?hostname=${HOSTNAME}&user_name=${USER_NAME}&user_pass=${USER_PASS}")
case "$RESULT" in
  good*)   echo "[OK] $RESULT" ;;
  nochg*)  echo "[OK] $RESULT" ;;
  badauth) echo "[ERR] Bad credentials — check hostname user/pass"; exit 1 ;;
  nohost)  echo "[ERR] Hostname not found"; exit 1 ;;
  911)     echo "[ERR] Server error, retry later"; exit 1 ;;
  *)       echo "[WARN] Unknown response: $RESULT" ;;
esacBASH

문제 해결

받아요 badauth

제공된 user_name 또는 user_pass로 제공한 정보가 해당 hostname에 할당된 자격 증명과 일치하지 않습니다. 각 hostname에는 독립적인 자격 증명이 있습니다. 대시보드의 호스트명→ 세부 정보에서 확인하세요. 이 자격 증명은 해당 hostname 전용이며 FastDDNS 관리 포털에 로그인하는 데 사용할 수 없습니다. 최근에 자격 증명을 재설정했다면 해당 hostname을 사용하는 모든 기기의 설정을 업데이트하세요.

나는 nohost

hostname 매개변수의 hostname이 존재하지 않거나 제공된 자격 증명으로 식별되는 계정에 속하지 않습니다. hostname의 오타를 확인하고 대시보드에 등록되어 있는지 확인하세요. 또한 user_nameuser_pass가 일치하는지 확인하세요. 그 특정 호스트네임 .

서버가 잘못된 IP를 감지합니다

서버는 TCP 연결의 소스 IP를 사용합니다. 기기가 NAT router 뒤에 있으면 router의 공인 IP가 감지됩니다. 이는 일반적으로 원하는 동작입니다. VPN이나 proxy를 사용 중이면 서버는 VPN 또는 proxy의 출구 IP를 확인합니다. getip endpoint를 사용하여 서버가 기기에서 확인하는 IP를 검증하세요.

받아요 911

이는 일시적인 서버 측 문제를 나타냅니다. 재시도하기 전에 최소 5분 동안 기다리세요. 요청을 빠르게 반복하지 마세요. 속도 제한이 적용될 수 있습니다. FastDDNS 상태 페이지에서 활성화된 장애가 있는지 확인하세요.

업데이트 엔드포인트를 얼마나 자주 폴링해야 하나요?

IP 변경 여부는 5분마다 확인하는 것이 좋습니다. IP가 변경되지 않으면 서버는 nochgnochg 응답을 반환합니다. 이는 서버에 변경 작업이 없는 가벼운 요청입니다. 1분에 한 번보다 자주 폴링하는 것은 권장하지 않으며 속도 제한이 적용될 수 있습니다.