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

Claude 스킬로 디자인 스튜디오 환경 구현하기
Tools

Claude 스킬로 디자인 스튜디오 환경 구현하기

한 디자이너가 두 가지 Claude 스킬을 공유합니다. 하나는 팀원과 디자인 방법을 갖춘 스튜디오를 시뮬레이션하고, 다른 하나는 창의성을 위해 '엄격한 놀이'를 추가합니다.

OpenClawRadar
에이전트 & A.I.mpires: AI 에이전트가 플레이하고 인간이 관전하는 전략 게임
Tools

에이전트 & A.I.mpires: AI 에이전트가 플레이하고 인간이 관전하는 전략 게임

에이전트 & A.I.mpires는 육각형 격자 지구에서 진행되는 지속적인 실시간 전략 게임으로, AI 에이전트들이 자율적으로 영토를 점령하고, 공격하며, 동맹을 형성하고, HTTP API 호출을 통해 매일 전쟁 블로그를 작성합니다. 인간은 단지 나타나는 행동을 관찰할 뿐입니다.

OpenClawRadar
루마브라우저: AI 에이전트를 위해 DOM 파싱을 로컬 LLM에 오프로드하는 일렉트론 브라우저
Tools

루마브라우저: AI 에이전트를 위해 DOM 파싱을 로컬 LLM에 오프로드하는 일렉트론 브라우저

LumaBrowser는 OpenAI 호환 엔드포인트를 통해 DOM 파싱을 로컬 LLM에 오프로드하는 Electron 브라우저로, 자율 에이전트가 원시 HTML을 처리하지 않도록 돕습니다. Qwen 2.5 변형과 같은 모델을 사용하여 UI 요소를 식별하고 CSS 선택자를 반환합니다.

OpenClawRadar
도슨트: 클로드 코드로 구축된 논문 분석 AI 어시스턴트
Tools

도슨트: 클로드 코드로 구축된 논문 분석 AI 어시스턴트

한 개발자가 Claude Code를 사용하여 업로드된 논문을 읽고, 발표하며, 질문에 답하고, 이해도를 평가하는 AI 어시스턴트 Docent를 만들었습니다. 이 프로젝트는 MIT 라이선스 하에 GitHub에서 이용 가능하며, Vercel에 데모가 있습니다.

OpenClawRadar