2026-05-18 ProxyMac Mac mini 리전 전환 후 DNS·HTTP 클라이언트 캐시: API가 여전히 잘못된 POP으로 나갈 때
임대한 Mac mini M4의 기본 SSH를 도쿄에서 싱가포르로 옮기거나, 프록시 출구 노드 패턴에 따라 ssh -D SOCKS를 돌렸는데도 벤더 대시보드는 여전히 JP POP 헤더를 보여 주고, 지연 히스토그램은 서쪽으로 움직이지 않으며, QA는 “리전 플래그가 바뀌지 않았다”고 말합니다. mini가 거짓말하는 것이 아닙니다. 노트북의 리졸버와 HTTP 스택이 이전 우주를 캐시한 것입니다. 본문은 (1) 경로 변경을 증명해야 하는 팀을 위한 독자 필터, (2) DNS TTL 신화와 따뜻한 HTTP/2 풀을 가르는 증상 매트릭스, (3) OS·브라우저·언어 런타임·네거티브 DNS의 네 겹 캐시, 수치 가드레일이 있는 9단계 플러시 런북 (4), 복사해 붙일 수 있는 curl --resolve 영수증 (5), DNS와 OpenClaw 기업 HTTP_PROXY가 어긋날 때의 함정 (6), 그리고 HTTPSVC와 네거티브 캐시의 위험을 정리합니다. 벤더 티켓을 열기 전에 스플릿 DNS 리졸버 실패와 IPv6 Happy Eyeballs를 대조하세요. 경로 선택은 MTR 리전 진단, SKU는 요금, SSH 영수증 템플릿은 도움말 센터를 사용합니다.
ProxyMac 리전 변경 후 DNS·HTTP 캐시를 적극적으로 비워야 하는 사람
성공 기준에 HTTP 응답 헤더(cf-ray, x-amz-cf-pop, server-timing), 오래된 에지에 묶인 TLS 세션 티켓, 리졸버 경로에서 추정한 출발 국가를 보여 주는 SaaS 관리 콘솔이 포함되는 경우—단순히 “SSH 지연이 줄었다”만이 아닙니다. mini에 ping만 하고 SOCKS나 스플릿 터널 VPN으로 공개 API를 호출한 적이 없다면 이 가이드는 건너뛰어도 됩니다. mini가 옮겨진 뒤에도 노트북에서 CDN이나 LLM 에지를 벤치마크한다면 계속 읽으세요.
- 정량 게이트:
curl -s https://ipinfo.io/json이 새 국가인데curl -sI https://api.vendor.example가 10분 안에 이전 대륙의 POP 코드를 계속 찍으면 클라이언트 캐시류 버그이지 ProxyMac 라우팅 결함이 아닙니다. - 자동화 게이트: 장수 Node·Python 프로세스를 재사용하는 CI 러너는 프로세스 내 DNS 풀을 물려받습니다. 리전 로테이션 후 명시적으로 재시작하세요.
- 보안 게이트: macOS의 기업 DNS over HTTPS 프로필은 VPN 클라이언트가 정책을 새로 고칠 때까지 mini 이동을 덮어쓸 수 있습니다—리졸버 글을 보세요.
증상 매트릭스: POP은 틀렸는데 HTTP 200이고 ping은 “건강”
| 관측 | 유력한 층 | 첫 조치 |
|---|---|---|
dig는 새 AAAA, 벤더 헤더는 옛 POP |
HTTP/2 커넥션 풀 또는 TLS 세션 캐시 | 브라우저 프로필을 재시작하거나 한 번 --http1.1로 새 TCP 강제 |
TTL 만료 몇 초 뒤에도 dig가 옛 RRSet |
mDNSResponder / OS 캐시 | 허용된 범위에서 리졸버 캐시 플러시 후 dscacheutil -q host -a name api.vendor.example로 검증 |
| Java/JVM 서비스만 틀림, curl은 맞음 | JVM InetAddress 캐시 | 테스트 JVM에만 networkaddress.cache.ttl=0 설정 후 서비스 재시작 |
| 오타 수정 후에도 간헐적 NXDOMAIN | 네거티브 캐시 | 네거티브 TTL 대기 또는 일시적으로 리졸버 전환 |
층 케이크: OS 리졸버 대 브라우저 대 런타임 대 커넥션 풀
현대 스택은 프로세스 수명 동안 이름을 여러 번 해석합니다. macOS에서 mDNSResponder는 RR TTL과 플랫폼 정책에 따라 긍정·부정 답을 캐시합니다. Chromium 계열 브라우저는 또 한 단 캐시를 얹고, UDP 경로가 리전 변경 후에도 살아 있으면 QUIC이나 HTTP/3 세션을 재사용합니다. Node의 dns.lookup은 lookup 훅을 구성하지 않으면 풀당 getaddrinfo를 한 번만 호출할 수 있습니다. 단일 fetch나 undici 풀을 재사용하는 OpenClaw 게이트웨이도 같은 위험을 가집니다—mini를 옮긴 뒤에는 특히 기업 HTTP_PROXY plist 인코딩과 함께 쓸 때 게이트웨이 프로세스를 재시작해 나가는 TLS 핸드셰이크가 새 리졸버 뷰에 다시 묶이게 하세요.
curl -v 상세 로그와 dig +subnet=0.0.0.0/0 출력을 함께 보관하세요. 헤더 증거 없는 “느린 느낌”은 벤더가 기각합니다.
9단계 캐시 플러시 런북
- 베이스라인 헤더: DNS를 건드리기 전에 세 벤더 엔드포인트에 대해
curl -sI를 캡처합니다. - SSH 경로 증명: SSH로
scutil --get ComputerName을 실행해 의도한 mini인지 확인합니다—프롬프트 텍스트만으로는 안 됩니다. - 리졸버 플러시: 지원되는 macOS 빌드에서 보안팀이 승인한 문서화된 플러시 명령을 실행합니다—티켓에서 관리자 비밀번호를 추측하지 마세요.
- 브라우저 콜드 스타트: Chromium/Firefox/Safari를 완전히 종료하고 한 사이클 동안 “창 다시 열기”를 끕니다.
- SOCKS 재바인딩: 오래된
ssh -DPID를 종료하고lsof -nP -iTCP:1080로 확인한 뒤 새 터널을 엽니다—SSH 안정성 가이드를 따릅니다. - 런타임 재활용: CI에서 작업 단계 셸뿐 아니라 Node, Python, JVM 워커를 재시작합니다.
- 대조 실험: 다음 절의
curl --resolve로 새 IP 클래스에서 벤더 에지에 닿을 수 있음을 증명합니다. - 소크: 2 rps로 200회 순차 HTTPS 프로브를 돌려 POP 코드가 수렴하는지 확인합니다.
- 롤백 메모: 플러시가 캡티브 포털을 깨뜨리면 게스트 Wi-Fi 가이드에 따라 VPN 재연결 순서를 기록합니다.
curl --resolve를 굽지 마세요—일시적 증명에만 쓰고, 분석 후 오버라이드를 제거해 이후 DNS 사고를 가리지 마세요.
curl --resolve와 dscacheutil 레시피
/etc/hosts를 편집하지 않고 오래된 답을 우회하려면 단일 명령에 권위 IP를 고정합니다.
curl -v --resolve api.vendor.example:443:203.0.113.44 https://api.vendor.example/healthz
macOS에서 dscacheutil -q host -a name api.vendor.example와 짝을 이뤄 유저랜드 캐시가 지금 무엇을 믿는지 출력합니다. dscacheutil이 dig @8.8.8.8과 다르면 스플릿 터널 VPN이나 DoH 클라이언트가 아직 스티어링 중입니다—리졸버 분기로 돌아가세요.
OpenClaw와 나가는 HTTP 클라이언트: launchd 뒤의 캐시 함정
모델 API를 호출하는 LaunchAgent는 종종 하나의 undici나 axios agent를 몇 시간 살려 둡니다. 리전 사이로 mini를 옮긴 뒤에도 이벤트 루프 워커를 재활용하지 않으면 부팅 시 얻은 DNS 답을 계속 재사용할 수 있습니다. 재활용과 함께 HTTP 프록시 launchd 글의 명시적 NO_PROXY 위생을 지켜 localhost MCP 트래픽이 오래된 기업 리졸버 경로를 물려받지 않게 하세요.
함정: 네거티브 캐시, SVCB/HTTPS 레코드, anycast 드리프트
NXDOMAIN 답은 네거티브로 캐시됩니다—첫 오타가 몇 분 동안 자동화를 오염시킵니다. 새 HTTPS RR 유형은 A 레코드와 다른 QUIC 엔드포인트로 클라이언트를 보낼 수 있습니다. 도구가 A/AAAA만 보면 유령을 쫓습니다. BGP가 움직여도 anycast 프런트는 TCP 세션을 먼 POP에 고정할 수 있습니다—이동을 증명하는 것은 새 연결뿐입니다.
dig api.vendor.example HTTPS +short
자주 묻는 질문
ProxyMac에서 JP에서 SG로만 옮기면 DNS TTL만 기다리면 되나요? 권위 TTL은 전 세계 전파 속도를 정하지만 노트북은 로컬 캐시와 따뜻한 HTTP 풀을 유지합니다. TTL만 기다리지 말고 층별로 비우세요.
curl은 새 리전인데 Chrome CDN 국가가 옛날인 이유는? 스택이 다릅니다. curl은 새 TCP 연결을 자주 열고 Chrome은 옛 에지에 묶인 HTTP/2나 QUIC 세션을 재사용합니다.
프로덕션 스모크에 curl --resolve는 안전한가요? 단일 명령용 진단 오버라이드로 증명에는 좋지만 로테이션 모니터링 없이 자동화에 커밋하면 위험합니다.
크로스리전 캐시 실험 앵커로 ProxyMac Mac mini가 맞는 이유
HK / JP / KR / SG / US에 임대한 Mac mini M4 노드는 리전마다 예측 가능한 출구 IP 클래스를 주어 POP 헤더를 지리와 상관시킬 수 있고, 개발자 노트북과 동일한 네이티브 macOS 리졸버 동작을 제공하며, 이웃 소음 없이 긴 curl 소크 테스트에 적합한 싱글 테넌트 CPU를 제공합니다. 여기서 캐시 수학이 검증되면 같은 플레이북을 요금이 투명한 두 번째 노드로 승격시키면 되고, 수명 짧은 CI IP를 추측할 필요가 없습니다.