UniFi 정보 프로토콜을 멀티테넌트 라우팅을 위해 역분석하기

UniFi inform 프로토콜 구조
모든 UniFi 장치(액세스 포인트, 스위치, 게이트웨이)는 10초마다 포트 8080으로 HTTP POST를 통해 컨트롤러에 연결합니다. 이는 장치 통계, 구성 동기화, 펌웨어 버전 및 클라이언트 수를 처리합니다. 페이로드는 AES-128-CBC로 암호화되어 있지만, 헤더에는 평문 장치 식별 정보가 포함됩니다.
패킷 헤더 세부 정보
모든 inform 패킷의 처음 40바이트는 암호화되지 않습니다:
오프셋 크기 필드 ────── ───── ────────────────────────── 0 4B 매직: "TNBU" (0x544E4255) 4 4B 패킷 버전 (현재 0) 8 6B 장치 MAC 주소 14 2B 플래그 (암호화, 압축 등) 16 2B AES IV 길이 18 16B AES IV 34 4B 데이터 버전 38 4B 페이로드 길이 42+ var 암호화된 페이로드 (AES-128-CBC)
바이트 오프셋 8의 MAC 주소는 완전히 암호화되지 않습니다. "TNBU"는 "UBNT"를 거꾸로 한 것입니다(Ubiquiti의 티커 심볼 및 기본 SSH 자격 증명).
MAC 추출 및 라우팅
MAC 주소 추출에는 최소한의 코드만 필요합니다:
header := make([]byte, 40)
if _, err := io.ReadFull(conn, header); err != nil {
return err
}
if string(header[0:4]) != "TNBU" {
return fmt.Errorf("inform 패킷이 아님")
}
mac := fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
header[8], header[9], header[10],
header[11], header[12], header[13])MAC 주소를 확보하면 라우팅이 간단해집니다: MAC 주소를 테넌트에 매핑하는 테이블을 유지한 다음, 전체 패킷(헤더와 암호화된 페이로드는 그대로)을 올바른 백엔드로 전달합니다. 프록시는 메모리 내 MAC-테넌트 조회 테이블을 사용하여 약 200줄의 Go 코드로 구현할 수 있습니다.
컨트롤러 포트 개요
다른 컨트롤러 포트에는 다음이 포함됩니다:
- 8443 TCP/HTTPS: 웹 UI 및 API
- 3478 UDP: STUN
- 6789 TCP: 속도 테스트 (내부용)
- 27117 TCP: MongoDB (내부용)
- 10001 UDP: L2 디스커버리 (로컬 전용)
MAC 기반 라우팅은 주로 아직 재구성되지 않은 장치나 공장 초기화 후 재등록되는 장치와 같은 엣지 케이스를 위한 대비책 역할을 합니다. 일단 등록되면, 표준 Host 헤더 라우팅을 사용하여 장치를 테넌트별 서브도메인으로 지정할 수 있습니다.
📖 전체 소스 읽기: HN AI Agents
👀 See Also

오픈소스 클로드 코드 스킬: 후속 문의를 80% 줄인 /do 파이프라인
한 개발자가 100개 이상의 프리랜스 프로젝트를 진행하며 만든 15개의 Claude Code 스킬을 오픈소스로 공개했습니다. /do 명령어는 5단계 파이프라인(/todo → /dev → /verify-dev → /build → /test → push)을 실행하며, 자동 수정 루프를 통해 2000개 이상의 커밋에서 후속 작업이 80% 줄어들고 코드 품질이 60-65% 향상되었습니다.

오픈소스 LLM 에이전트 자동 메모리 시스템, 94% 회상 정확도 달성
개발자가 LLM 기반 에이전트를 위한 메모리 플러그인을 구축했으며, 이 플러그인은 사용자의 명시적인 명령 없이도 세션 간에 사실을 자동으로 추출, 분류 및 지속적으로 저장합니다. 이 시스템은 벡터 데이터베이스 대신 구조화된 마크다운 파일을 사용하여 52개 체크포인트 회상 벤치마크에서 94.2%의 정확도를 달성했습니다.
6가지 역할, 메모리, ADHD 인지 설계를 갖춘 OpenClaw AI 에이전트: 일일 작전 분석
ADHD가 있는 솔로 창업자가 6가지 역할(액션 플래너, 디브리퍼, 작가, 법무, 조사, CRM)을 수행하며 메모리를 공유하고, 대화 기록에서 후속 조치 및 초안을 자동 생성하는 오픈소스 AI 에이전트를 구축했습니다.

Vektori의 메모리 아키텍처: Claude의 유출된 시스템 원칙
Vektori는 Claude의 아키텍처에서 유출된 원칙에서 영감을 받아 AI 메모리를 위한 3계층 계층적 문장 그래프를 구현합니다. 이 시스템은 엄격한 품질 필터, 0.3 최소 점수의 회의적 검색을 사용하며 세션 간 수정 기록을 유지합니다.