iChat AV 화상통화, 애플 SNATMAP 서버를 직접 구현해 20년 만에 부활
- /etc/hosts에 157.230.2.213 configuration.apple.com 한 줄을 넣으면 Leopard·Snow Leopard의 iChat이 음성·영상 통화를 다시 할 수 있음(라우터가 포트 보존 NAT를 하는 전제이고, pfSense·OPNsense 같은 BSD 라우터는 아웃바운드 NAT에서 source port preservation을 켜야 함)
- iChat은 configuration.apple.com의 snatmap.txt를 http로 받아 SNATMAP 서버 주소를 얻는데, 애플이 https로 리다이렉트하자 구형 OS X의 TLS가 접속하지 못했고 그 결과 공인 IP 대신 사설 LAN IP를 교환해 NAT 너머 연결이 실패했음
- 애플 SNATMAP 서버가 응답을 멈춰 2026년 LLM 도움으로 프로토콜을 리버스 엔지니어링했고, UDP 5678에서 16바이트 요청(Type, Nonce, 로컬 IP, 로컬 포트)과 16바이트 응답(Type, Nonce, 외부 IP, 외부 포트)을 주고받는 사양을 얻어냈음
- 시스템 엔지니어인 작성자는 서버를 직접 작성해본 적이 없었고 이 SNATMAP 서버가 첫 서버 구현이 됐으며, 2023년 jabb.im XMPP 계정으로 시도한 첫 테스트는 연결 실패로 끝났음
Hacker News 의견들
이거 진짜 대단하다. 어릴 때 이게 어떻게 돌아가는지 알아내려고 붙잡다가 결국 포기했었는데, 오늘 꿈이 이루어졌네.
SNATMAP은 애플판 STUN임(RFC 3489, 같은 2003년). 바깥 서버한테 내 공인 IP랑 포트를 물어보고, 채팅으로 서로 바꾼 다음 양쪽이 동시에 패킷을 쏴서 NAT를 뚫는 구조. 그래서 포트 보존 NAT가 중요하고, 모바일이나 일부 ISP의 CGNAT는 목적지마다 포트를 새로 할당해서 이걸 깨뜨림. WebRTC는 TURN 릴레이로 폴백하는데 iChat에는 그게 없으니, hosts 고쳐도 안 되면 양쪽 CGNAT를 확인해봐.
화상회의가 진짜 작동하던 시대로 돌아간 느낌임. 요즘 FaceTime은 새 버전 나올 때마다 UI가 실험 예술이 돼서 기술자든 일반인이든 쓰기 불가능해지고 있음. 나는 최근/연락처 배치 때문에 실수로 예전 연락처에 전화를 걸어버렸어.
나는 뭐가 헷갈리는지 모르겠음. macOS든 iOS든 내 얼굴 미리보기, 최근 통화한 연락처, 초록색 새 통화 버튼이 전부인데. 할머니 통화 모드로 최적화한 것 같아서 오히려 지나치게 단순한 수준임.
MS Teams가 이런 중복 이름 문제로 특히 최악임. john.mcleod@place랑 john.mcleod2@place가 주소록에 있으면, 6개월 전에 john.mcleod한테 메시지 보냈는데 매일 john.mcleod2랑 일한다고 이번엔 무조건 숫자 없는 쪽을 고르더라.
Apple 소프트웨어는 번지르르한 겉포장에 속이 텅 빈 쓰레기인데 다들 열심히 받아먹음. 마케팅의 힘이지.
그 오버엔지니어링 iSight 카메라는 어댑터 여러 개를 거치면서 M1 나올 때까지 잘 돌아갔는데, 그때 드라이버가 마침내 제거됐음. 2010년대 후반에 인텔 맥북프로에 물려서 회의할 때 재미로 썼었는데.
분해해서 라즈베리파이 카메라로 바꿔 넣을 수 있음. pisight 깃허브에 코드 있고 프린터블에 케이스 모델도 있음.
FireWire였지? 내 것도 상자 어딘가에 있을 거임.
나는 iChat AV 비디오 쪽 작업했음. 2004년에 H.264 지원하는 4자 화상회의도 추가했고, 그때 진짜 최전선이라는 느낌이었음. SIMD 없는 iMac이나 iBook에서 돌리려고 Altivec 코드를 손으로 짜고 H.264를 손으로 최적화하던 밤샘이 기억남.
G3(짧고 좁은 파이프라인, AltiVec 없음, 작은 캐시), G4(짧고 넓은 파이프라인, 인오더 AltiVec 중심, 큰 L2지만 메모리 대역폭 부족), G5(길고 넓은 파이프라인, 슈퍼스칼라 OoO 중심, AltiVec은 덧붙인 수준) 이렇게 서로 다른 세 마이크로아키텍처를 다 맞추는 건 꽤 재밌었겠는데, 코덱 변형을 몇 개나 구현했어?
90년대나 80년대 컴퓨팅을 그리워하는 사람 많지만 내 마법의 시기는 바로 이때였음. eMac에서 AIM 쓰던 그 시절에 이걸 만들어줘서 고맙다.
몇 년 전에 이유도 없이 이 iSight를 이베이에서 샀음. 쓸 데가 없는데도 그냥 아름다운 물건이라 가지고 있음.