
셀 타워 없는 나만의 통신사 만들기: Meshtastic 네트워크 구축기
셀 타워나 위성 없이 저전력 LoRa 장치로 구축하는 독립형 메쉬 네트워크, Meshtastic 구축기를 통해 물리 계층의 중요성과 네트워크 확장 과정을 공유합니다.
김영태
테크리드

안녕하세요. 풀링포레스트 테크리드 김영태입니다.
개발자로 살다 보면 가끔은 HTTP, TCP/IP, 그리고 거대 통신사의 인프라에서 벗어나고 싶다는 충동을 느끼곤 합니다. 클라우드나 LTE망이 '먹통'이 되었을 때 우리는 과연 소통할 수 있을까요? 이런 엉뚱한 호기심에서 시작해 최근 푹 빠져버린 기술이 있습니다. 바로 'Meshtastic'입니다. 셀 타워나 위성 없이, 저전력 LoRa 장치들끼리 그물망(Mesh)처럼 연결되어 문자를 주고받는 오픈소스 프로젝트입니다. 오늘은 제가 직접 하드웨어를 사서 네트워크를 구성하며 겪었던 삽질과 깨달음을 공유하려 합니다.
장비 구입과 펌웨어의 늪
시작은 단순했습니다. Hacker News에서 "배에서 사는데 이걸로 육지와 통신한다"는 글을 보고 무작정 장비를 질렀습니다. 제가 선택한 모델은 Heltec V3 LoRa 라디오였습니다. ESP32 기반이라 익숙했고 가격도 저렴했죠.

하지만 택배 상자를 뜯자마자 첫 번째 난관에 봉착했습니다. 기본 탑재된 펌웨어가 너무 구버전이라 최신 스마트폰 앱과 통신이 안 되더군요. 솔직히 이때 좀 막막했습니다. 보통 이런 임베디드 장비 펌웨어 업데이트는 복잡한 드라이버 설치와 CLI 명령어의 연속인 경우가 많으니까요.
다행히 기술의 발전은 놀라웠습니다. 크롬 브라우저의 WebSerial API를 활용한 웹 플래셔(Web Flasher)가 있더군요. USB를 꽂고 버튼 몇 번 누르니 최신 펌웨어가 올라갔습니다. 백엔드 개발자로서 웹 기술이 하드웨어 제어 영역까지 이렇게 매끄럽게 들어왔다는 사실에 새삼 감탄했습니다.
적막 속의 외침, 그리고 물리 계층의 중요성
설정을 마치고 두 기기를 책상 위에 두니 서로 잘 통신했습니다. 메쉬 네트워크의 기본 원리는 간단합니다. 내가 보낸 메시지를 옆 노드가 듣고, 그 노드가 다시 전파하는 방식(Flooding)입니다. 그런데 문제는 '집 밖'이었습니다.
기기 하나를 들고 밖으로 나가 친구에게 메시지를 보내봤습니다. 앱에는 "승인 대기 중(Waiting for acknowledgment)"이라는 문구만 뜨다가, 결국 "최대 재전송 횟수 초과"라는 절망적인 오류 메시지로 끝났습니다. 아무도 내 신호를 듣지 못하는 것 같았습니다. "혹시 이 도시에서 Meshtastic을 쓰는 사람은 나 혼자뿐인가?"라는 외로움이 밀려왔습니다.
지푸라기라도 잡는 심정으로 라디오를 창가에 켜두고 잠들었습니다. 다음 날 아침, 로그를 확인하고 소스라치게 놀랐습니다. 밤사이 수십 킬로미터 떨어진 곳의 노드들이 보낸 패킷이 잡혀 있었기 때문입니다. 알고 보니 제가 사는 지역에는 이미 활발한 커뮤니티가 형성되어 있었고, 그들의 신호가 제 기기까지 도달한 것이었습니다.
하지만 여전히 저는 그들에게 답장을 보낼 수 없었습니다. 수신은 되는데 송신이 안 되는 상황. 원인은 '안테나'였습니다. 번들로 들어있는 일명 '고무 오리(rubber-duck)' 안테나는 성능이 형편없었습니다. 인프라 엔지니어로서 항상 소프트웨어 최적화만 고민하다가, 물리 계층(Physical Layer)인 안테나의 이득(Gain)이 통신 성공 여부를 가른다는 사실을 뼈저리게 느꼈습니다.
네트워크 확장과 커뮤니티의 힘
더 좋은 안테나로 교체하자 마법처럼 양방향 통신이 뚫렸습니다. 내 작은 기기가 보낸 신호가 다른 누군가의 중계 노드(Relay Node)를 타고 도시 건너편까지 전달되는 것을 보았을 때의 희열은, 처음 Hello World를 띄웠을 때와 비슷했습니다.
이후 저는 본격적으로 네트워크 확장에 뛰어들었습니다. 지형지물에 의한 전파 방해를 극복하기 위해 `Meshtastic Site Planner`라는 시뮬레이션 도구를 활용했습니다. 단순히 기기를 켜두는 게 아니라, 높은 지대나 건물의 옥상 같은 전략적 요충지에 중계 노드를 설치해야 한다는 것을 배웠습니다. 실제로 지역 메이커스페이스 지붕에 중계기를 설치하니, 제 집과 친구의 집 사이를 잇는 튼튼한 다리가 되어주더군요.
마치며
Meshtastic을 다루며 느낀 점은, 우리가 너무나 당연하게 여기는 '연결'이 사실은 수많은 물리적 한계와 공학적 노력의 산물이라는 것입니다. 카프카(Kafka)나 레디스(Redis) 같은 미들웨어 없이, 순수하게 전파를 타고 홉(Hop)을 넘나드는 패킷을 보는 재미는 생각보다 큽니다.
개발자 여러분도 가끔은 모니터 속의 논리적인 네트워크에서 벗어나, 실제로 만지고 조립하는 물리적인 네트워크를 경험해 보시길 추천합니다. 인프라를 바라보는 시야가 훨씬 넓어지는 계기가 될 것입니다. 저도 조만간 이 네트워크 위에 기상 관측 센서를 달아 오프그리드 IoT 시스템을 만들어볼 계획입니다. 혹시 압니까? 언젠가 인터넷이 끊긴 날, 우리가 이 작은 라디오로 서로 안부를 묻게 될지도 모르니까요.


