Stubby 데몬 기반 DNS-over-TLS(DoT) 보안 암호화 질의

💡 network dns stubby 핵심 가이드 및 실전 아키텍처 핵심 요약 (Executive Summary)

본 가이드는 network dns stubby 핵심 가이드 및 실전 아키텍처의 핵심 개념, 구성 아키텍처 및 실무 엔지니어링 베스트 프랙티스를 체계적으로 정리했습니다.

📑 Table of Contents

Architecture

Architecture & System Flow Diagram
Architecture & System Flow
Pan & Zoom

Installation

Mac

bash
brew install stubby jq yq

Exec

Configuration

bash
vi /opt/homebrew/etc/stubby/stubby.yml

Daemon으로 실행

bash
sudo brew services start stubby
sudo brew services stop stubby

Cmd로 실행

bash
sudo stubby -l &
sudo kill $(pidof stubby)

Features


stubby endpoint: 127.0.0.1:53

bash
sudo lsof -i :53

인터페이스 레벨에서 Stubby DNS 지정

  • Setting → TCP/IP → DNS → 127.0.0.1 등록
bash
DNS=127.0.0.1
DEFAULT_IFACE=$(route -n get default | awk '/interface: / {print $2}')
INTERFACE=$(networksetup -listnetworkserviceorder | grep -B 1 "Device: $DEFAULT_IFACE" | head -n 1 | sed 's/.*) //')
if [ -z "$INTERFACE" ]; then
    echo "활성 네트워크 서비스를 찾을 수 없습니다."
else
    sudo networksetup -setdnsservers "$INTERFACE" $DNS
    echo "성공: [$INTERFACE]의 DNS를 ${DNS}로 설정했습니다."
fi

리졸버 구성: Domain 분기 Stubby DNS 지정

bash
domain=hanacloudia.com
sudo mkdir -p /etc/resolver
cat <<EOF | sudo tee /etc/resolver/$domain
nameserver 127.0.0.1
EOF
scutil --dns

DoT 활성화 (v1)

  • DoT 검증:
bash
dns_domain=dns.okestro.hanacloudia.com
dns_ip=10.255.57.88
cafile=~/Downloads/ca.crt
cp $cafile /opt/homebrew/etc/stubby/ca.crt

export upstream_recursive_servers=$(cat << EOF | yq -pyaml -ojson | jq '.temps'
temps:
  - address_data: $dns_ip
    tls_auth_name: "$dns_domain"
    tls_port: 853
    tls_ca_file: "./ca.crt"
EOF
)
yq -i ".upstream_recursive_servers = $upstream_recursive_servers" \
  /opt/homebrew/etc/stubby/stubby.yml

sudo brew services restart stubby

DoT 활성화 (v2)

bash
#dns소속 k8s에서
pubkey_sha256=$(kubectl get secret -n management-system dns.okestro.hanacloudia.com-tls -o=jsonpath='{.data.tls\.crt}' | base64 -d | openssl x509 -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64)

dns_domain=dns.okestro.hanacloudia.com
dns_ip=10.255.57.88
cafile=~/Downloads/ca.crt
cp $cafile /opt/homebrew/etc/stubby/ca.crt

export upstream_recursive_servers=$(cat << EOF | yq -pyaml -ojson | jq '.temps'
temps:
  - address_data: $dns_ip
    tls_auth_name: "$dns_domain"
    tls_port: 853
    tls_pubkey_pinset:
      - digest: "sha256"
        value: "$pubkey_sha256"
EOF
)
yq -i ".upstream_recursive_servers = $upstream_recursive_servers" \
  /opt/homebrew/etc/stubby/stubby.yml

sudo brew services restart stubby

기존 DNS캐시 삭제

bash
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

이 포스팅은 쿠팡 파트너스 및 알리익스프레스 어필리에이트 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *