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

✍️ OpenClawRadar📅 게시일: March 9, 2026🔗 Source
UniFi 정보 프로토콜을 멀티테넌트 라우팅을 위해 역분석하기
Ad

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 자격 증명).

Ad

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

Ad

👀 See Also

Gemma 4 26B vs Qwen 3.5 27B: RTX 4090에서의 로컬 비즈니스 워크플로우 벤치마크
Tools

Gemma 4 26B vs Qwen 3.5 27B: RTX 4090에서의 로컬 비즈니스 워크플로우 벤치마크

개발자가 RTX 4090 워크스테이션에서 Gemma 4 26B와 Qwen 3.5 27B를 18가지 실제 비즈니스 운영 작업으로 테스트했습니다. Gemma가 13-5로 승리하며 일상 실행 작업에서 더 빠른 속도와 더 나은 규율을 보였고, Qwen은 더 넓은 전략적 사고에서 뛰어났습니다.

OpenClawRadar
클로드 코드용 피크 플러그인: 세션 메모리 자동 탐색
Tools

클로드 코드용 피크 플러그인: 세션 메모리 자동 탐색

Peek는 Claude Code용 플러그인으로, 사용자의 수정사항과 선호도를 자동으로 캡처하여 AI 어시스턴트를 조종하도록 주입합니다. 임베딩, BM25, 시간 감쇠, 메타데이터 필터를 결합한 퓨전 검색을 사용하여 수동 프롬프트 없이도 관련 컨텍스트를 제공합니다.

OpenClawRadar
n8n-mcp-lite: MCP 서버가 n8n 워크플로우와 함께 Claude의 토큰 사용량을 80% 절감합니다
Tools

n8n-mcp-lite: MCP 서버가 n8n 워크플로우와 함께 Claude의 토큰 사용량을 80% 절감합니다

n8n-mcp-lite라는 새로운 오픈소스 Model Context Protocol 서버가 Claude가 n8n 자동화 워크플로우를 추론하는 데 도움을 주면서 토큰 사용량을 약 80% 감소시킵니다. 이 도구는 시각적 노드 자동화의 토큰 집약적 특성을 해결하기 위해 타겟팅된 워크플로우 스캐닝과 정밀 업데이트를 제공합니다.

OpenClawRadar
ClawedBack: 클로드 코드 내에서 실행되는 OpenClaw 포트
Tools

ClawedBack: 클로드 코드 내에서 실행되는 OpenClaw 포트

ClawedBack는 Claude Code 내부에서 실행되도록 설계된 OpenClaw의 클린룸 포트로, 첫 번째 파티 프롬프트 캐싱과 속도 제한을 제공합니다. OpenClaw의 내장 도구 23개 중 19개와 일치하며, 가져오기에 대한 필수 보안 검사를 통해 완전히 ClawHub와 호환됩니다.

OpenClawRadar