153k 스타 · 2.6k 포크 · 50만 개+ 등록 도메인의 비영리 무료 도메인 발급 플랫폼. .dpdns.org · .us.kg · .qzz.io · .xx.kg 4개 확장자를 누구나 1개씩 무료로 받을 수 있다. 가비아·후이즈·Namecheap에서 매년 1~2만 원씩 내던 도메인이 0원이 되는 마법. 운영자 1인(Edward Hsing)이 Hack Club Bank 후원으로 굴리는 nonprofit. AGPL-3.0 일부 오픈소스 — 프론트엔드와 WHOIS 서버 코드 공개, 백엔드는 보안 감사 진행 중.
FreeDomain은 신규 TLD(.com·.net 같은 최상위 도메인)를 발급하는 게 아니다. DigitalPlat Foundation이 ICANN/NIC에서 사전에 구매·등록한 second-level 도메인(dpdns.org·us.kg·qzz.io·xx.kg) 아래에 사용자가 원하는 이름을 서브도메인으로 나눠 갖는다.
예) inbeom.dpdns.org은 사실 dpdns.org(DigitalPlat 소유)의 한 서브도메인이지만, DNS 위임을 통해 사용자 본인이 NS·A·CNAME·TXT 레코드를 자유롭게 통제할 수 있어, 체감상으로는 "내 도메인"과 같다.
제일 가까운 비유는 "건물주가 사 둔 큰 빌딩을 작은 사무실로 쪼개서 공짜로 빌려주는 것". DigitalPlat이 산 빌딩이 dpdns.org, 사용자가 빌리는 호실이 inbeom.dpdns.org. 호실 안 인테리어(DNS 레코드)는 세입자 마음대로 할 수 있고, 빌딩 주인은 가끔 청소(어뷰즈 신고 처리)만 한다.
또 다른 비유는 "공중전화 부스의 자유 사용권". 부스(루트 TLD)는 KT(레지스트라)가 소유하지만, 누구나 들어가서 통화(서브도메인 운영)할 수 있다. FreeDomain은 그 "공중전화 부스"를 nonprofit이 무료로 깔아둔 격이다.
운영 주체는 Edward Hsing이라는 1인 개발자. DigitalPlat Foundation이라는 비영리 단체를 만들고, Hack Club Bank를 통해 후원금을 받아 도메인 갱신·서버 유지 비용을 충당한다. 2026년 5월 기준 50만 개+ 도메인이 등록돼 있어, 사실상 개인 1인이 굴리는 가장 큰 무료 도메인 레지스트라다.
.com·.org 등)을 새로 만드는 건 ICANN 승인이 필요하고 1억 달러 단위가 들지만, 누군가 산 second-level 도메인(예: us.kg)을 사서 그 아래 서브도메인을 무한히 만들 수 있다. example.us.kg은 기술적으로 서브도메인이지만, DNS 위임을 통해 등록자에게 NS 권한을 넘기면 별도 도메인처럼 동작한다. FreeDomain의 핵심 모델.2010년대 초중반까지 무료 도메인 = Freenom이었다. .tk·.ml·.ga·.cf·.gq 5개 TLD를 무료로 발급해 누적 4천만 개+ 도메인을 등록했다. 그러나 2022년 메타(Meta)가 "Freenom 도메인이 피싱 사기에 압도적으로 많이 쓰인다"며 미국 법원에 소송을 걸었고, 2023년 Freenom은 신규 등록을 영구 중단했다.
그 직후 GitHub Pages·Vercel·Netlify로 개인 프로젝트를 띄우는 인디 해커들이 무료 도메인 대안을 찾기 시작했고, EU.org · is-a.dev · js.org · FreeDomain 등이 그 빈 공간을 채웠다. 이 중 FreeDomain은 "GitHub PR로 신청"이 아니라 "웹 대시보드에서 즉시 발급"이라는 차별점으로 가장 빠르게 성장했다.
FreeDomain의 가장 큰 장점은 "DNS 제공자를 강제하지 않는다"는 점이다. 일부 무료 도메인 서비스는 자체 DNS만 쓸 수 있게 락인하지만, FreeDomain은 등록자가 NS(네임서버) 레코드를 직접 입력하게 한다.
# DigitalPlat 대시보드에서 NS 레코드 등록
inbeom.dpdns.org NS alice.ns.cloudflare.com
inbeom.dpdns.org NS bob.ns.cloudflare.com
# 이후 모든 DNS 권한은 Cloudflare로 이관
# A / AAAA / CNAME / TXT / MX 자유 추가
# Cloudflare 무료 SSL · CDN · WAF 그대로 사용 가능
즉, FreeDomain은 "도메인 발급"만 하고 DNS 운영은 Cloudflare·FreeDNS·Hostry·자체 BIND 서버 등 사용자가 자유롭게 고른다. 데이터 주권을 잃지 않는 무료 서비스가 인디 해커들에게 어필한 핵심 포인트.
대다수 무료 도메인 서비스가 WHOIS 정보를 공개하지 않거나, 호스팅 회사의 generic 정보로 채우는 데 비해, FreeDomain은 whois.digitalplat.org이라는 자체 WHOIS 서버를 운영한다.
# 표준 RFC 3912 WHOIS 프로토콜 (port 43, TCP)
$ whois -h whois.digitalplat.org example.dpdns.org
Domain Name: example.dpdns.org
Registrant: [REDACTED]
Registered: 2026-02-14
Nameservers: alice.ns.cloudflare.com, bob.ns.cloudflare.com
Status: active
구현은 opensource/whois_server/whois.py 71줄짜리 Python 표준 라이브러리 코드로 공개. port 43에서 TCP socket을 직접 듣고, 1024바이트씩 받아 WHOIS 응답을 반환한다. 외부 의존성 0, RFC 1036 클라이언트 호환.
FreeDomain은 AGPL-3.0으로 라이선스되어 있다. 다만 백엔드 전체가 공개된 건 아니고, 프론트엔드 HTML + WHOIS 서버 + 이메일 템플릿만 opensource/ 폴더에 들어 있다. 운영자 말로는 "보안 감사가 끝나지 않은 코드를 공개하면 악용될 위험이 크다"고 한다.
운영비는 Hack Club Bank 후원금으로 충당된다. Hack Club은 미국의 비영리 청소년 해커 단체로, hcb.hackclub.com에서 누구나 후원할 수 있다. 2026년 기준 50만 개 도메인을 1인이 굴리며 nonprofit 회계 100% 공개라는 점이 OSS 커뮤니티의 신뢰를 얻은 결정적 이유.
전체 백엔드 코드는 공개되지 않았지만, 프론트엔드 HTML의 {% include "ga.html" %} · {% include "partials/modern_styles.html" %} 같은 Jinja2 템플릿 문법과 /panel/overview · /whois/ui 같은 URL 라우팅 패턴으로 보아 Python Flask(또는 호환 프레임워크)로 추정된다.
| 레이어 | 구성요소 | 역할 |
|---|---|---|
| 웹 프레임워크 | Python Flask (추정) + Jinja2 | /panel/*·/auth/*·/whois/* 라우트, 템플릿 렌더링 |
| DB | 비공개 (PostgreSQL/MySQL 추정) | 사용자·도메인·NS·슬롯·결제·이메일 인증 등 |
| WHOIS 서버 | Python socket 표준 라이브러리 | port 43 TCP, RFC 3912 응답 |
| 인증 | 이메일 + 비밀번호, 비밀번호 재설정 토큰 | login.html·register.html·reset_password.html 존재 |
| 이메일 | SMTP 발송 + 자체 템플릿 (opensource/email_template/) | 가입 인증·비밀번호 재설정·도메인 만료 알림 |
| 결제 | 비공개 (Stripe-like 추정) + Hack Club Bank 기부 | pay_success.html 존재 — 유료 슬롯 확장용 |
공개된 opensource/frontend/ 폴더에 16개 HTML 파일이 들어 있다. 모두 서버사이드 렌더링 + iframe 기반 미니 SPA 구조.
| 분류 | 기술 | 비고 |
|---|---|---|
| CSS 프레임워크 | Tailwind CSS (CDN) | https://cdn.tailwindcss.com JIT 컴파일러 직접 로드 — 빌드 없음 |
| 아이콘 | Font Awesome 5.15.1 (CDN) | fa-tachometer-alt·fa-globe 등 사용 |
| 폰트 | Google Fonts Inter (400/500/600/700) | 본문·UI 전용 sans-serif |
| JS | Vanilla JS (프레임워크 0) | iframe src 교체·History API·로딩바 토글 |
| SPA 패턴 | panel.html에서 iframe + history.pushState | 사이드바 메뉴 클릭 → iframe URL 교체 + URL ?page= 동기화 |
| 라이브 채팅 | Tawk.to 위젯 | embed.tawk.to/685fdc4c.../1iur792r9 |
| 분석 | Google Analytics (ga.html include) | partials/ 아래에 별도 include |
| 쿠키 동의 | Cookie Consent Manager | data-cc="show-preferencesModal" 트리거 |
2026년 기준으로 보면 "React/Next.js 없이 Flask + Jinja + Tailwind CDN + Vanilla JS" 조합은 약간 클래식한 선택이지만, "1인 운영자가 유지보수 가능한 가장 단순한 풀스택"이라는 점에서 합리적이다. 빌드 파이프라인 0, Node 의존성 0, 그냥 Python 서버 띄우면 끝.
| 레이어 | 구성 | 비고 |
|---|---|---|
| 도메인 소유 | NIC.KG (.us.kg, .xx.kg), ICANN gTLD 레지스트라 (.dpdns.org, .qzz.io) | DigitalPlat이 정식 등록자 |
| 대시보드 | dash.domain.digitalplat.org | 발급·관리 UI |
| 메인 사이트 | domain.digitalplat.org | 홈페이지, FAQ, 약관 |
| WHOIS 서버 | whois.digitalplat.org:43 | 자체 운영 Python 스크립트 |
| DNS 위임 모델 | 사용자가 NS 레코드 직접 등록 → Cloudflare/FreeDNS/Hostry 등 자유 선택 | DNS 운영은 위임, 도메인 소유권은 DigitalPlat 보유 |
| 커뮤니티 | Discord 서버 (discord.gg/ma4RZzMmVW) | 지원·공지·어뷰즈 신고 ※ Telegram은 계정 탈취로 공식 채널 폐기 |
| 후원 | Hack Club Bank (hcb.hackclub.com/donations/start/digitalplat) | 회계 100% 공개 |
whois.py 71줄)즉, 레포의 "코드"는 공개된 부분만이고, 실제 백엔드(도메인 등록 로직·DB·결제·이메일 발송)는 별도 비공개 저장소에 있다. "오픈소스를 표방하면서 핵심 비즈니스 로직은 비공개"인 부분 오픈소스(source-available) 모델.
dash.domain.digitalplat.org에 가입. 이메일 인증 토큰 발송.alice.ns.cloudflare.com 등)를 DigitalPlat 대시보드에 입력.dpdns.org의 SOA)에 사용자의 NS 레코드를 추가. 24시간 이내 전 세계 캐싱 갱신.inbeom.dpdns.org을 브라우저에 치면 → 로컬 DNS → .org TLD 서버 → dpdns.org 권한 서버 (DigitalPlat) → NS 위임 응답 → Cloudflare → A 레코드 (사용자 서버 IP) → 사용자 서버 응답.inbeom.dpdns.org NS alice.ns.cloudflare.com 같은 레코드만 가지고 있고, 실제 A·CNAME은 알지 못한다. 그래서 사용자가 Cloudflare에서 DNS를 바꾸면 DigitalPlat을 거치지 않고 즉시 반영된다. 무료 도메인 서비스의 자유도가 여기서 나온다.import socket, logging
def whois(query):
try:
response = get_whois(query).format(query)
return response
except Exception as e:
logging.error(f"Error processing WHOIS query: {e}")
return "Internal server error"
def main():
host = '0.0.0.0'
port = 43 # 1. RFC 3912 표준 포트
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((host, port))
server_socket.listen(5)
logging.info(f"WHOIS Server Started, port: {port}")
while True:
try:
client_socket, addr = server_socket.accept() # 2. TCP 연결 수락
with client_socket:
client_socket.settimeout(10.0) # 3. 10초 타임아웃
data = client_socket.recv(1024).strip() # 4. 1024바이트 도메인 질의
decoded_data = data.decode('utf-8')
response = whois(decoded_data) # 5. 응답 생성 (get_whois 미공개)
client_socket.sendall(response.encode('utf-8')) # 6. 텍스트 평문 응답
except Exception as e:
logging.error(f"Error: {e}")
if __name__ == "__main__":
while True:
try: main()
except Exception as e:
logging.critical(f"Critical: {e}")
import time; time.sleep(1) # 7. 무한 재시작 보장
외부 의존성 0(표준 라이브러리만), 71줄, 어떤 Python 3.x 환경에서도 즉시 실행. 부모 프로세스가 죽어도 while True: try: main() ...으로 자동 재시작. "인프라용 작은 데몬은 이렇게 만들면 된다"는 교과서적 예시.
이 코드는 싱글 스레드다. 한 클라이언트가 처리되는 동안 다른 클라이언트는 대기. 트래픽이 많아지면 threading.Thread·asyncio·또는 systemd socket activation + xinetd 패턴이 필요. 또 get_whois 본체가 비공개라 실제 DB 조회 로직은 알 수 없음. WHOIS는 평문이라 데이터 노출 위험도 있다(GDPR 대응으로 등록자 정보 마스킹 필수).
panel.html은 좌측 사이드바 + 우측 메인 컨텐츠 레이아웃인데, 메인 컨텐츠가 <iframe>이다. SPA처럼 보이지만 React/Vue는 전혀 안 쓴다.
// 메뉴 클릭 시
function loadPage(link, url) {
// 1. 활성 메뉴 표시
document.querySelectorAll('.sidebar a').forEach(n => n.classList.remove('active'));
link.classList.add('active');
// 2. iframe src 교체
document.getElementById('content-frame').src = url;
// 3. 브라우저 주소창 동기화 (뒤로가기 작동)
history.pushState({url}, '', '?page=' + encodeURIComponent(url));
}
// iframe 내부에서 라우팅이 일어났을 때도 부모 URL 동기화
setInterval(pollIframeURL, 5000); // 5초마다 iframe pathname 확인
제일 비슷한 비유는 "옛날 네이버 카페·다음 카페 좌측 메뉴". 좌측 메뉴 클릭하면 우측 글 영역만 갱신되던 그 패턴. React Router·Next.js Link 컴포넌트는 가상 DOM을 갈아끼우지만, iframe SPA는 그냥 페이지를 통째로 새로 로드한다. 단점은 무겁고 SEO에 나쁨, 장점은 백엔드가 페이지 하나하나 독립적으로 렌더링하므로 라우팅 라이브러리·번들러·하이드레이션 같은 거 전혀 없어도 됨.
FreeDomain은 어뷰즈 방지를 위해 기본 1슬롯(= 1 도메인)으로 제한한다. 추가 슬롯은 /panel/redeem_slot에서 redeem key로 받거나, pay_success.html이 있는 걸 보아 유료 결제로 확장도 가능한 듯하다.
이 슬롯 제한이 Freenom 몰락의 교훈을 반영한다. Freenom은 1계정으로 수십 개 도메인을 발급 가능했고, 그게 피싱 사이트 대량 생산에 악용됐다. FreeDomain은 "공짜지만 한 개만"로 진입 장벽을 낮추면서 동시에 어뷰즈 비용을 올린다.
가장 큰 프론트엔드 파일이자 가장 흥미로운 패턴. 좌측 사이드바 + 우측 iframe + Tawk.to 채팅 위젯 + Cookie Consent + 로딩바 + 모바일 햄버거 메뉴까지 전부 한 파일에 들어 있다. "하나의 HTML이 전체 SPA를 담당"하는 클래식 패턴.
12KB나 되는 이유는 캡차·CSRF 토큰·약관 동의 모달·이메일 검증 정규식·비밀번호 강도 미터까지 한 페이지에 다 담아서. 서버 검증 + 클라이언트 검증 이중화의 전형적 예시.
등록된 도메인의 NS 레코드 편집·소유권 이전·삭제 기능이 들어가는 페이지. 모든 위험한 작업이 한 화면에서 일어나므로 UX·검증 로직이 모두 무겁다.
외부 라이브러리 0개. socket·logging만 사용. 인프라 데몬을 어떻게 단순하게 만드는지 보여주는 교과서적 코드. 실무에서 "이렇게 짧아도 되나" 싶을 때 참고할 만함.
FreeDomain의 핵심 사용 시나리오. Cloudflare 계정 만들기 → 사이트 추가 → NS 받기 → DigitalPlat 대시보드에 입력 → 활성화까지의 5단계가 스크린샷과 함께 적혀 있다. "DNS 위임"이 어떤 모양으로 사용자에게 노출되는지 가장 잘 보여주는 문서.
FreeDomain은 DNS의 "위임 모델"을 가장 직관적으로 보여주는 살아있는 교재다. 루트 → TLD → 권한 DNS → 위임된 NS → 최종 응답의 흐름을 실제 도메인 하나로 따라가 볼 수 있다.
dig +trace inbeom.dpdns.org으로 위임 단계를 시각화해 보자nslookup -type=NS dpdns.org으로 권한 NS 확인dig @8.8.8.8 inbeom.dpdns.org A으로 Cloudflare가 응답하는 걸 확인실습 아이디어: 자신의 FreeDomain을 발급받고, NS를 Cloudflare 대신 자체 BIND9 서버로 돌려보면서 권위 응답을 직접 만들어 본다.
WHOIS는 1982년에 만들어진 가장 오래된 인터넷 프로토콜 중 하나다. port 43, TCP, 평문 텍스트라는 단순한 구조. opensource/whois_server/whois.py가 이 프로토콜을 그대로 구현했다.
asyncio.start_server로 다시 짜서 동시성 추가React/Next.js 안 쓰고도 SPA 같은 UX를 만드는 방법. panel.html의 약 200줄 JS가 이걸 전부 구현한다.
postMessage 필요), SEO 나쁨, 같은 nav가 매 페이지에 중복 로드되지 않게 처리 필요.FreeDomain은 https://cdn.tailwindcss.com을 모든 페이지에 직접 로드한다. Tailwind 공식은 "프로덕션에서는 CDN 비추천"이라고 명시하지만, 1인 nonprofit 입장에서는 빌드 파이프라인을 운영할 인력이 없으므로 합리적 선택.
npx tailwindcss -i ./input.css -o ./output.css --watch로 CSS 한 파일만 빌드panel.html을 받아서 CDN을 빌드 결과 CSS로 교체 후 Lighthouse 점수 비교AGPL은 네트워크를 통해 서비스되는 소프트웨어도 소스 공개를 강제하는 라이선스. 일반 GPL의 "배포" 트리거를 "네트워크 호출"까지 확장한 변형. FreeDomain이 이걸 쓰는 이유는 누군가가 코드를 베껴서 영리 서비스로 만드는 걸 막기 위함.
opensource/readme.md가 왜 "백엔드는 보안 감사 미완료라 비공개"라고 했는지 분석1인이 50만 도메인을 굴리는 비결: 최대한 외주, 최대한 단순화, 비용 최소화.
forms.gle/...)전체 백엔드가 비공개라 정확히 재현할 수는 없지만, 공개된 코드와 기능 명세를 기반으로 추정하면:
| 구성요소 | 최소 사양 | 비고 |
|---|---|---|
| 웹 서버 (Flask) | 1 vCPU, 1GB RAM | 40만 사용자 기준 캐싱 필수 |
| DB (PostgreSQL) | 2 vCPU, 4GB RAM, 50GB SSD | 도메인·NS·사용자·결제 테이블 |
| WHOIS 서버 | 1 vCPU, 256MB RAM | Python 단일 프로세스 |
| 권한 DNS | 1 vCPU, 512MB RAM, BIND9 또는 PowerDNS | 전 세계 anycast 권장 |
| 이메일 | SendGrid/Postmark 외부 SaaS | 자체 운영 비추천 (스팸 평판) |
| 도메인 갱신비 | $50~200/년 × 4개 TLD | .dpdns.org, .qzz.io는 일반 도메인, .us.kg는 별도 NIC.KG 정책 |
0원. 그것이 전부의 매력. 도메인 + Cloudflare 무료 플랜 + GitHub Pages = 완전 무료 개인 사이트.
목표: 무료 도메인 하나로 GitHub Pages 사이트에 커스텀 도메인 붙이기.
단계: ① dash.domain.digitalplat.org 가입 → ② yourname.dpdns.org 신청 → ③ Cloudflare 사이트 추가 → ④ NS 레코드 DigitalPlat에 입력 → ⑤ GitHub Pages에 정적 사이트 push → ⑥ Cloudflare DNS에 CNAME 추가 (@ → yourname.github.io) → ⑦ Pages 설정에서 커스텀 도메인 등록.
배우는 것: 도메인 → DNS → 호스팅의 전체 사슬을 한 번에 체험.
whois.py를 진짜로 동작하게 만들기목표: 공개된 71줄 코드의 빈 get_whois()를 직접 구현해 본인 도메인 DB를 응답하는 WHOIS 서버 만들기.
단계: ① SQLite로 domains(name, registrant, ns1, ns2, created_at) 테이블 생성 → ② get_whois(query)가 SQL 조회 후 RFC 3912 포맷으로 응답하도록 구현 → ③ Docker로 컨테이너화 → ④ whois -h localhost example.local로 테스트.
배우는 것: 가장 단순한 인터넷 프로토콜 직접 구현, TCP socket 프로그래밍.
목표: panel.html의 사이드바 + iframe 구조를 Next.js 14 App Router의 layout + Server Components로 다시 짜기.
단계: ① Next.js 프로젝트 생성 → ② app/panel/layout.tsx에 사이드바 → ③ app/panel/overview/page.tsx·app/panel/domains/page.tsx 등 페이지 → ④ 동일한 Tailwind 스타일 적용 → ⑤ Lighthouse 점수 비교(iframe vs App Router).
배우는 것: 클래식 SSR vs 모던 RSC의 차이 체감, 라우팅 추상화의 가치.
목표: 본인이 보유한 도메인 1개를 활용해 미니 무료 서브도메인 서비스 만들기.
단계: ① 도메인 1개 구매(example.com 등) → ② Cloudflare DNS API 키 발급 → ③ Flask로 회원가입 + "subname 입력" UI → ④ Cloudflare API로 subname.example.com NS 레코드 추가 → ⑤ 사용자가 자신의 Cloudflare NS를 입력하면 위임 완료 → ⑥ WHOIS 서버 붙이기.
배우는 것: 외부 DNS API 자동화, 사용자 위임 모델 직접 구현. FreeDomain 백엔드를 사실상 복제해 보는 것.
목표: Cloudflare에 의존하지 않고 본인이 보유한 도메인의 권한 DNS 서버를 직접 운영.
단계: ① VPS 2대(anycast 흉내) → ② BIND9 또는 PowerDNS 설치 → ③ example.com의 NS를 본인 서버 2개로 변경 → ④ DNSSEC 키 생성 + 서명 → ⑤ dig DNSKEY example.com +dnssec으로 검증 → ⑥ Prometheus + Grafana로 쿼리 모니터링.
배우는 것: 인터넷 인프라의 가장 깊은 층, DNSSEC 신뢰 사슬, anycast/glue record 같은 고급 개념.
dig · nslookup · host 명령어로 다양한 도메인을 tracestatoverview 명령으로 캐시 적중률 관찰socket 모듈로 echo 서버 → HTTP/0.9 서버 → WHOIS 서버 순으로 점진 학습asyncio로 동시성 도입, 1만 connection 부하 테스트(wrk·ab)cloudflare SDK로 zone 생성·DNS 레코드 CRUD.com·.org·.kr·.kg 등. ICANN이 발급 권한을 관리. 신규 TLD를 만들려면 ICANN에 1억 원+ 비용과 운영 능력 입증이 필요.example.com에서 example이 SLD. 일반적으로 우리가 "도메인을 산다"고 할 때 사는 게 이 SLD. FreeDomain은 자기가 산 SLD(dpdns.org)의 서브도메인을 나눠 준다..org TLD가 dpdns.org 영역을 DigitalPlat NS에 위임, DigitalPlat NS가 inbeom.dpdns.org를 Cloudflare NS에 다시 위임. 이런 트리 구조가 DNS의 핵심.script 한 줄로 즉시 사용, 런타임 JIT 컴파일. 프로토타이핑·소규모용. Build: tailwindcss -i in.css -o out.css로 사용된 클래스만 추출한 최소 CSS 생성. 프로덕션 권장. FreeDomain은 1인 운영 단순화를 위해 CDN을 채택.example.com의 NS가 ns1.example.com) 발생하는 순환 의존. 상위 영역이 IP를 함께 알려줘서 해결. FreeDomain은 사용자가 직접 NS를 운영할 때 이걸 신경 써야 함.whois -h whois.digitalplat.org [도메인]