← 목록
기타 2026-04-25 4KB 읽기 4분

크라우니 DNS 자체 호스팅 전략

배경

  • crowny.org 서브도메인 54개 + crownybus.com + crowny.kr
  • 현재 hosting.kr의 DNS 사용 중
  • Cloudflare 사용하지 않기로 결정
  • 자체 DNS 서버(한선씨) 구축 완료

핵심 결론

도메인 등록 vs DNS 서비스

구분역할자체 운영
도메인 등록crowny.org 소유권불가 (ICANN 규정, 등록기관 필수)
DNS 서비스xxx.crowny.org → IP 응답가능 (DNS서버v3.한선 완성)
웹 호스팅서버 운영이미 자체 (crowny-gateway)
  • hosting.kr은 등록비(연 1.5만원)만 납부하는 관계로 축소
  • DNS와 호스팅은 전부 자체 운영

고정IP 확보 전

  • hosting.kr DNS 그대로 유지
  • 크라우니 DNS는 내부 테스트용 (포트 5353)
  • 더블 운영 불필요

고정IP 1개 확보 시

  • ISP에 고정IP 신청 (월 5,000~11,000원)
  • ns1과 ns2가 같은 IP 가리켜도 동작함 (RFC 권장이지 필수 아님)
  • 공유기 포트포워딩 53 → mac-studio
  • hosting.kr에서 NS 레코드만 변경 → 끝

고정IP 2개 확보 시 (최종)

  • ns1 = IP-A (mac-studio)
  • ns2 = IP-B (macbook-intel 또는 다른 위치)
  • 완전 자립

기술 구현

DNS서버v3.한선

  • 위치: /Users/ef/CrownyOS/crownyc/DNS서버v3.한선
  • 한선씨 + crownyc VM (버퍼 기반)
  • 버퍼바이트() opcode 850 추가 (raw byte write, UTF-8 무관)
  • 바닥() 함수 (균형3진 자연반올림 보정)

지원 레코드

레코드내용
A54개 도메인 → gateway IP
NSns1.crowny.org, ns2.crowny.org
SOAserial=2026042501, refresh=3600, retry=600, expire=86400
NXDOMAIN미등록 도메인
AAAA빈 응답 (IPv6 미지원)
와일드카드*.crowny.org → 주 IP

테스트 결과 (9/9 통과)

  • A crowny.org → 192.168.219.153 TTL=300
  • A bank.crowny.org → 192.168.219.153
  • NS crowny.org → ns1.crowny.org, ns2.crowny.org
  • SOA crowny.org → serial=2026042501
  • A future.crowny.org (와일드카드) → 192.168.219.153
  • A crownybus.com → 192.168.219.153
  • A ns2.crowny.org → 192.168.219.111 (보조)
  • NXDOMAIN example.com
  • AAAA crowny.org → 빈 응답

전환 스위치

bashcd /Users/ef/crowny-gateway

# 상태 확인
bash scripts/dns-switch.sh status

# 전환 (고정IP 확보 후)
bash scripts/dns-switch.sh crowny <고정IP>

# 서버 시작 (sudo)
bash scripts/dns-switch.sh start

# 비상 복귀
bash scripts/dns-switch.sh hosting

설정 파일

  • /Users/ef/crowny-gateway/dns-config.yaml — 모드(hosting/crowny/hybrid), IP 설정
  • /Users/ef/crowny-gateway/scripts/dns-switch.sh — 전환 스크립트
  • /Users/ef/CrownyOS/crownyc/DNS서버v3.한선 — DNS 서버 소스

VM 확장 (이번에 추가)

opcode한선씨용도
850버퍼바이트(버퍼, 위치, 값)raw byte 쓰기 (0-255)
851버퍼바이트읽기(버퍼, 위치)raw byte 읽기
글자변환()은 UTF-8 인코딩이라 128+ 바이트가 2바이트로 확장됨. DNS 패킷처럼 바이너리 프로토콜은 반드시 버퍼바이트() 사용.

관련 파일

  • /Users/ef/crowny-gateway/CLAUDE.md — DNS 전환 섹션 추가됨
  • /Users/ef/CrownyOS/crownyc/crownyc.c — opcode 850/851 추가
  • /Users/ef/CrownyOS/crownyc/hanseonc_high.c — 버퍼바이트 등록
  • /Users/ef/CrownyOS/crownyc/DNS서버v3.한선 — 서버 소스
  • /Users/ef/CrownyOS/crownyc/DNS서버.한선 — v2 (백업)