
AI 탑재로 네트워크 맵을 자동 생성! 「twNetMap」 체험판 출시!
요약
AI를 활용해 네트워크 구성도를 자동으로 생성하고 시각화하는 데스크톱 앱 'twNetMap' 체험판이 출시되었습니다. Go 언어 기반의 싱글 바이너리로 제공되며, LLM을 통해 기기 간 연결 관계를 추론하고 사용자 피드백을 통해 정밀도를 높입니다.
핵심 포인트
- AI(Ollama, OpenAI, Gemini 등)를 활용한 네트워크 토폴로지 자동 추론
- 사용자 수정 사항을 학습하는 피드백 루프 탑재로 추론 정밀도 향상
- Go, Wails, Svelte 5 기반의 설치가 간편한 싱글 바이너리 애플리케이션
- Ping, ARP, 포트 스캔, SNMP 등 강력한 네트워크 감사 기능 제공
- vis-network 엔진을 통한 동적이고 반응형인 네트워크 맵 시각화
본인이 속한 사무실의 네트워크나 집의 검증 환경에서, "어떤 기기가 어디에 어떻게 연결되어 있는지 모르겠다", "네트워크 구성도를 수동으로 계속 업데이트하는 것이 번거롭다……"라고 고민해 본 적 없으신가요?
네트워크 전체 구성을 가시화하기 위한 도구는 몇 가지 존재하지만, 커맨드 라인(CLI) 기반이라 난해하거나, 고가의 유상 도구이거나, 혹은 네트워크 장비의 설정을 수동으로 매핑해야 하는 등 도입 및 운용의 허들이 높은 경우가 적지 않습니다.
이러한 과제를 해결하고, "누구나 버튼 하나로 네트워크를 스캔하고, 기기 간의 연결을 AI가 자동으로 추론하여 네트워크 맵을 생성해 주는" 도구를 목표로 개발한 것이 바로 AI 탑재 네트워크 탐지 도구 twNetMap 입니다.
이번에 첫 체험판(v0.1.0)을 출시하였기에, 그 특징과 개발 에피소드를 소개해 드립니다!
twNetMap은 Go 언어 + Wails v2 + Svelte 5의 모던한 구성으로 개발한 데스크톱 애플리케이션(GUI)입니다.
기존의 네트워크 도구 중 상당수는 실행을 위해 외부 커맨드나 라이브러리 셋업이 필요했지만, twNetMap은 스캔 처리부터 데이터 관리에 이르기까지 모든 것을 Go 언어로 내제화하거나 싱글 바이너리(Single Binary)로 포함하고 있습니다.
인스톨러나 번거로운 의존성 해결은 필요 없습니다. 다운로드한 실행 파일을 실행하는 것만으로 즉시 네트워크 스캔을 시작할 수 있습니다.
twNetMap의 최대 특징은 스캔한 데이터로부터 단순히 IP 주소 리스트를 만드는 것에 그치지 않고, **"AI가 디바이스 간의 링크(물리적인 연결 관계)를 자동으로 추론하여 매핑한다"**는 점에 있습니다.
langchaingo를 사용하여 Ollama(로컬 AI)나 OpenAI, Google Gemini와 같은 다양한 LLM 프로바이더와 연동합니다. SNMP를 통해 얻은 LLDP 정보 등의 구조화된 데이터를 이용하여 네트워크 토폴로지(Topology)를 자동 구축합니다.
AI에 의한 자동 추론이 완벽하지 않은 경우도 있지만, twNetMap에는 **사용자의 수정을 학습하는 피드백 루프(Feedback Loop)**가 탑재되어 있습니다.
사용자가 수동으로 맵 위의 노드(Node) 종류를 변경하거나 링크를 수정·삭제한 이력을 앱이 데이터베이스에 저장합니다. 다음 AI 프롬프트에 해당 정보를 "우선 이력 데이터"로서 반영함으로써, 사용하면 할수록 네트워크의 실태나 사용자의 취향에 맞는 추론 정밀도로 진화해 나갑니다.
그리기 엔진에는 vis-network를 채택하여 동적이고 반응형인 맵 표시를 구현했습니다.
노드의 드래그 앤 드롭을 통한 레이아웃 조정, 계층형(스위치·라우터·PC 등의 순서로 정리) 또는 역학 모델(Force-directed model)에 의한 자동 재배치, 노드 및 링크의 실시간 편집이 가능합니다.
twNetMap은 개인 개발임에도 불구하고 실용적인 네트워크 감사 및 관리를 지원하기 위한 다채로운 기능을 갖추고 있습니다.
Ping 체크: ICMP를 사용하여 호스트의 도달성을 스캔 (OS 네이티브 커맨드로의 자동 폴백(Fallback) 대응).
ARP 테이블 해석: 로컬 OS나 SNMP 대응 장비로부터 IP-MAC 매핑을 자동 추출.
포트 스캔: 일반적인 TCP 포트(SSH, HTTP, HTTPS, SNMP 등)를 스캔. 방화벽(FW) 등에 의해 차단되기 쉬운 환경을 위해, 공격성을 조절할 수 있는 "포트 스캔 모드(OFF / 안전성 중시 / 고속)"를 탑재.
SNMP 쿼리 (v2c/v3): sysName, sysDesc, 물리 MAC 주소, LLDP 인접 정보를 자동 취득.
서비스 배너 취득: SSH나 FTP 등의 포트 접속 시 배너를 캡처하여 서버의 기술 스택 등을 판별하도록 지원.
생성한 맵이나 스캔 데이터는 외부 도구와 연동하기 쉽도록 다양한 포맷으로 내보낼 수 있습니다.
이미지/문서: PNG, SVG, PDF
도면 소프트웨어 연동: Draw.io (.drawio) 형식으로 다이어그램 출력
데이터: Excel (.xlsx), CSV, JSON
twNetMap의 개발에 있어서도 AI 코딩 어시스턴트인 **Google Antigravity (Agy 형님)**에게 든든한 파트너로서 지원을 받았습니다.
특히 이번 개발에서 인상적이었던 것은 다음과 같은 기능 개발 및 문서 정비에서의 협업입니다.
개인 개발자의 고민거리인 "그래픽 소재 준비".
이번에는 Google Antigravity에게 "마스코트인 귀여운 고양이를 곁들여, 툴의 특징을 한눈에 알 수 있는 즐거운 인포그래픽 이미지를 만들어줘"라고 요청했더니, 기능 설명이 시각적이고 친근하게 정리된 멋진 인포그래픽 이미지(tw_net_map_infographic_ja.jpg)
)가 단번에 완성되었습니다. README의 얼굴로서 대활약하고 있습니다.
테스트 중, Windows에서 Ping이나 ARP 테이블을 해석하기 위해 명령어를 실행할 때, 순간적으로 검은색 콘솔 창이 팝업되는 문제가 있었습니다.
Antigravity에게 상담했더니, Go의 exec.Command
로 실행되는 프로세스에 대해 Windows 특유의 SysProcAttr
플래그(CREATE_NO_WINDOW
)를 적절히 설정하는 코드를 즉시 제안해 주어, GUI 앱으로서의 조작감이 극적으로 향상되었습니다.
"포트 스캔(Port Scan)을 실행하면 보안 탐지에 걸리거나 방화벽(FW)에서 차단될 수 있다"는 사용자 경험(UX)에 대한 우려에 대해, 스캔 병렬 수를 억제하고 대기 시간을 삽입하는 "안전성 중시 모드"와 배너 시도(Banner Grabbing)에만 국한하는 "OFF 모드"의 구현을 제안 및 구현해 주었습니다. 이를 통해 상용 인프라나 민감한 로컬 환경에서도 안심하고 테스트할 수 있는 기능으로 승화될 수 있었습니다.
GitHub의 Releases 페이지에서 각 OS용 빌드된 바이너리(Binary)를 다운로드할 수 있습니다.
GitHub 리포지토리: twsnmp/twNetMap -
릴리스 페이지: twsnmp/twNetMap/releases
macOS: 서명 및 공증이 완료된 PKG 형식 인스톨러를 제공합니다. -
Windows: 디지털 서명이 없기 때문에 Windows Defender에서 경고가 표시될 수 있으나, 속성에서 "차단 해제"를 수행하면 실행 가능합니다. -
Linux: 스탠드얼론(Standalone) 바이너리가 포함된 tar.gz
로 제공되며, 압축을 푸는 것만으로 동작합니다.
본 툴은 본인이 관리 권한을 가지고 있는 네트워크, 또는 사전에 명시적인 허가를 받은 대상에 대해서만 실행해 주세요. 허가되지 않은 제3자의 환경이나 서버에 대한 스캔 행위는 공격으로 간주되거나 부정 접속으로서 법적 문제로 발전할 우려가 있습니다.
AI 구동으로 네트워크 구성도 작성을 자동화하는 twNetMap
은 아직 첫 번째 체험판(v0.1.0)을 막 출시한 단계입니다.
"내 환경에서 자동 배치가 잘 되었다", "우리 집 공유기의 연결 관계가 올바르게 인식되지 않았다" 등, 여러분의 환경에서의 피드백이 AI 추론을 더욱 똑똑하게 만드는 가장 큰 열쇠가 됩니다.
버그 보고나 기능 제안 등은 꼭 GitHub의 Issue로 편하게 보내주세요!
만약 본 툴이 흥미롭거나 편리하다고 생각하신다면, GitHub 리포지토리에서 스타(★)도 꼭 부탁드립니다!
GitHub 리포지토리: twsnmp/twNetMap -
문서 사이트: twsnmp.github.io/twNetMap
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기