{{{#!wiki style="margin: -10px -10px;" | <tablebordercolor=#ffdf33> |
Linux 배포판 |
1. 개요
|
OpenWRT에서 제공하는 원격셸접속 기능을 통해 접근한 장면 |
|
OpenWRT의 UI[1] |
OpenWRT(Open Wireless RouTer)는 다양한 임베디드 기기를 위한 리눅스 배포판이다. 2004년 Linksys의 가정용 유무선 공유기인 WRT54G 시리즈에 대한 GPL 코드를 바탕으로 한 커스텀 펌웨어로 개발이 시작되었다가 점차 지원 대상이 확대되어 다양한 인터넷 공유기를 지원하는 완전한 리눅스 배포판이 되었다.
비슷한 OS로는 DD_WRT, tomato, FreeBSD 기반의 pfSense, OPNsense 등이 있다.
2. 지원 기기
OpenWRT의 요구 사양 | |||
항목 | ~19.07까지의 최소 사양[2] | 현재 최소 사양 링크[3][4] | 현재 권장 사양 |
RAM | 32MB 이상 | 64MB 이상 | 128MB 이상 |
플래시 | 4MB 이상 | 8MB 이상 | 16MB 이상 |
용도가 공유기로만 제한되지는 않으며, 라즈베리 파이(컴퓨터), 포고플러그 등 각종 임베디드 장비 혹은 x86 머신에도 설치가 가능하다. 유무선공유기 자체가 하나의 임베디드 하드웨어이다.
국산 공유기 지원은 미진한 편이므로 좀 더 원활하게 설치하고 싶다면 웬만해서는 해외 제조사 모델, 그중에서도 해당 리스트 내에 있는 모델에서 찾아서 구입하는 것이 좋을 것이다.
OpenWRT 21.02 버전부터는 플래시 4MB/RAM 32MB 하드웨어는 공식적으로 지원하지 않는다.[5] 해당 하드웨어를 가지고 있다면 OpenWRT 19.07 버전을 사용해야 한다. 웹 GUI인 LuCI를 사용하려면 플래시 공간이 최소한 8MB는 되어야 한다. 4MB/32MB 사양의 하드웨어는 업데이트가 중단되었다. 또한 현재 8MB/64MB 기기 또한 한계에 다다라 최소 사양으로 경고중인 상태이다. 새 공유기에서 OpenWRT를 사용하고 싶다면 제대로 스펙을 찾아서 확인하고 공유기를 구입하자.
TP-Link TL-WR940N같은 저가형 100Mbps 공유기도 해외 제조사 모델이라면 지원되는 경우가 많다. 그러나 기가비트 환경에서 OpenWRT를 사용하고 싶다면 웬만해서는 10만원 이상의 고사양 공유기를 사용하자.
OpenWRT는 기본적으로 SQM, QoS와 같은 고급 네트워크 기능을 위해 모든 flow offloading 이 꺼져 있는데 *, 이 때문에 사양이 낮은 기기에서는 속도가 많이 떨어질 수 있다. 이는 수동으로 Network → Firewall 내의 Software flow offloading (혹은 지원할 경우 Hardware flow offloading) 을 켜서 성능을 높일 수 있다. 다만 S/W Offload를 켜더라도 사양 문제로 기가비트 급 속도를 모두 처리하지 못하는 경우가 많다.
현재 OpenWRT 는 Mediatek SoC[6] 에서 H/W Offload (H/W NAT) 을 지원하고 있는데, 이 덕분에 해당하는 기기에서 H/W Offload 를 활성화 하면 낮은 CPU 사용량을 유지한 채로 기가비트 급 통신을 처리할 수 있어 여러 소프트웨어를 돌리는데 이점이 크다. 이외의 기종은 스펙이 좋아야만 H/W Offload 없이 1Gbps 정도의 속도를 뽑을 수 있다.
모든 Offload가 비활성화 된 경우에는 통신 속도가 상당히 별로다. 나름 중~고사양이라고 할 수 있는 퀄컴 720Mhz MIPS CPU/RAM 128MB 사양의 KT 공유기인 DW02-412H 에서도 19.07.4에서 1Gbps 입력이 500Mbps정도의 속도가 나오는 실정이다. 또한 CPU 사용량이 매우 높아지기 때문에 공유기에 새로운 기능 (Torrent, VPN 등) 을 추가하여도 사용하기 어려울 수 있다.
다만 일부 Broadcom, Qualcomm 등 H/W NAT 미지원 장비에 대해 개인 개발자가 기능을 추가해둔 OpenWRT 포크가 있을 수 있으니 꼭 필요하다면 찾아보도록 하자. 또한 S/W NAT이긴 하지만 Qualcomm이 개발한 Fast Path (SFE)를 지원하도록 개발된 빌드도 존재한다. 링크
2.1. 한국산 공유기의 지원 현황
국산 공유기중 지원 모델/추가사례집한국산 공유기는 잘 지원되지 않는 편인데, 국내에는 OpenWRT에 관심 있는 개발자가 많지 않은 이유도 있고, 옛날에는 주로 Realtek 칩셋을 사용했으며, 사양이 좋지 않았기 때문이다. 그나마 잘 지원되는 것은 사용자가 많은 ipTIME 모델들이다. ipTIME이 잘 지원되는 것은 과거에는 국내에 인터넷 공유기 제조사들이 굉장히 많았지만 현재에는 ipTIME과 일부 제조사들로 거의 정리가 된 이유도 있다.
ipTIME이 Realtek SoC를 자주 사용했던 시절에는 거의 지원되지 않았는데, Realtek 칩셋은 Lexra라는 변형 MIPS 아키텍처를 사용하는 경우가 상당히 많아 OpenWRT에서 지원이 어려웠다. 그러나 ipTIME을 비롯한 공유기 제조사가 미디어텍 SoC를 주력으로 사용하기 시작하고, 2010년대 후반부터 OpenWRT의 미디어텍 지원이 대폭 개선되면서 지원 기종이 어느 정도 늘어났다. ipTIME의 경우 USB 포트가 탑재된 간이 NAS 지원 모델은 일반 모델 대비 더 큰 용량의 램을 탑재하고 있어 쾌적하고 이중에도 더 큰 용량의 NAND 메모리를 탑재한 중고가형 모델은 OpenWrt 설치 이후에도 넉넉한 용량을 활용해 다양한 부가기능을 추가해 사용하기가 쉽고 편하다. 저가 모델도 USB 포트만 있으면 외장 드라이브에 프로그램을 설치해 쓸 수 있긴 하지만 초보자 입장에서는 다소 복잡한 것이 사실. 대체로 최근 나오는 기가비트 모델들은 사양이 넉넉해 지원이 되거나 실력만 있다면 OpenWRT를 올릴 수 있다.
2.2. 직접 빌드할 경우
빌드 가이드[7]OpenWRT의 지원 여부는 거의 메인 칩셋/와이파이 칩셋과 그 제조사에 따라 갈리게 된다. 대체적으로 가장 잘 포팅되는건 퀄컴 아데로스나 미디어텍(구 라링크) 계열 칩셋.
브로드컴 칩셋의 경우 #오픈소스 Wi-Fi 드라이버를 제공하지 않아 설치만 되고 무선 연결이 지원되지 않는 칩셋이 많다. 비슷한 류의 OS인 DD-WRT는 브로드컴과 계약을 맺고 독점 드라이버를 사용하고 있어서 이런 문제는 없다. 따라서 브로드컴 계열의 칩셋은 OpenWRT보다는 DD-WRT를 올리는 것이 좋을 것이다.
Realtek 계열의 SoC는 칩셋에서 사용하는 Lexra MIPS라는 커스텀 아키텍처의 지원이 거의 전무하다시피해 대부분 지원되지 않는다. 그걸 감안하더라도 사실 Realtek 칩셋 자체가 어느정도 폐쇄적이라서 거의 지원되지 않는다.
칩셋 문제를 넘으면 이제는 공유기의 스펙 문제가 남는다. OpenWRT 21.02 버전부터는 플래시 4MB/RAM 32MB 하드웨어는 공식적으로 지원하지 않으며, 4MB/32MB 하드웨어는 LuCI 웹 인터페이스를 돌리기 어려워 초보자라면 적합하지 않다. 대부분의 구형 저가형 공유기들이 리얼텍 칩셋이나 4MB/32MB 하드웨어를 탑재(또는 둘 다)하고 있기 때문에 생각보다 지원 가능한 공유기를 찾는 것이 힘들다.
필요한 준비물은 분해용 드라이버, 시리얼 통신 핀을 찾는 데 필요한 멀티미터, 컴퓨터와 공유기의 연결을 위한 USB-UART 어댑터[8] 정도가 있다. 아래 사례집에서는 오실로스코프를 사용한 경우가 존재하는데(WeVO AC11 NAS), 오실로스코프의 경우 일반인이 쓰기도 어려울 뿐더러 비싸기 때문에[9] 생각하지 말고 머리에서 지우자.
가이드 글을 보고 개발이 끝났다면 그대로 빌드한 이미지를 혼자 쓰거나 Git 저장소에 업로드하고 끝낼 수도 있겠지만, 공식 저장소 #에 Pull Request를 열고 패치 내용을 업로드해 타 사용자와 관리자의 검토를 받고 수정 후 관리자에 의해 merge되면 몇 주 후 당신이 빌드한 패치 내용대로 정식 지원이 이루어질 수 있다. 업데이트의 경우 한 번 하드웨어 지원에 필요한 코드를 개발해 놓으면 사양 문제가 걸리거나 기기가 속한 타겟 자체가 삭제되지 않는 한[10] OpenWRT 버전 업데이트 시 봇을 통해 버전이 컴파일 되기 때문에 업데이트에 신경 쓸 필요가 없다.
통신사 임대 공유기의 경우 보통은 UART를 통한 부트로더 접근이 가능했으나, DW02-412H 모델에서 개발된 이후 부트로더를 잠궈놓는 추세이다. 취약점을 통해 깨고 사용할 수 있다.
정 개발할 실력이 안된다고 생각하면 # 이런 식으로 사양이 거의 똑같은 공유기들을 찾아 해당하는 OpenWRT 펌웨어를 올릴수도 있다.
감이 안잡힌다면 아래의 개발 사례들을 참고해보자. (★- 참고에 큰 도움이 될 수 있는 상세한 사례)
- ★ipTIME A604M(OpenWRT 빌드 가이드) - #
- ★KT 제공 공유기 DW02-412H - 여우는르나르(OpenWRT 17.09.1) #1[11] #6- 펌웨어 배포(19.07.4)[12]
- WeVO 11AC NAS Router - #[13]
- 지트론 WNVR-001(개발 X, 디링크 DIR-620 펌웨어 이용) - #
3. 특징 및 장점
공유기는 자체 펌웨어만으로도 USB 단자가 있거나 AirPort Time Capsule과 같이 내부 SATA 단자가 있는경우 하드디스크를 연결해 NAS나 프린터 서버, 파일서버를 구축할 수 있다. 하지만 이 기능들 외의 추가 기능들은 거의 사용할 수가 없는 경우가 많다.하지만 OpenWRT는 리눅스 커널을 사용하고 있고, 공식적으로 외부 패키지 설치 지원이 되고 있어 비슷한 공유기용 펌웨어 프로젝트인 DD-WRT나 tomato와 다르게 OpenWRT가 올라간 기기의 경우 기기 자체가 마치 라즈베리 파이 같은 일종의 리눅스 임베디드 싱글보드 컴퓨터가 되어 여러 패키지 설치를 통해 다양한 추가 기능들을 사용할 수 있다.
실제로 사양이 충분한 공유기를 통해 Debian을 올린 후 VNC를 통해서 컴퓨터처럼 작동하게 만든 사례도 있고 # VNC와 QEMU를 활용해 공유기에서 Windows XP를 돌린 사람도 있다. #
이뿐만이 아니다. OpenWRT를 통해 공유기에 올라간 리눅스 커널의 활용도는 무궁무진하다. Transmission과 외장하드를 통해 토렌트 다운로드/배포 클라이언트로 쓸 수 있고, 데이터베이스를 올려 홈페이지로도 만들 수 있다.
USB 사운드카드를 연결해서 인터넷 라디오 플레이어로 활용할 수 있고 # TV카드를 물려서 예약녹화 혹은 스트리밍으로 써먹을 수도 있다.
물리적으로 근거리에서만 접속 가능한 게시판도 만들 수 있다. 이 게시판의 경우 라우터에 직접 접속 가능한 사람만 게시판에 글을 쓸 수 있어 외부 개입이 불가능하다.
공유기를 중심으로 CCTV 영상, 컴퓨터 (복잡한 영상 처리작업을 수행)를 연결해 차량 인식 CCTV 시스템을 개발한 경우도 있다.[14]
rclone을 활용해 업로드 속도가 느린 클라우드 스토리지에 백업을 할 때도 PC보다 유용하다. 구글 드라이브의 경우 2018년 들어서는 1.5MB/s 정도의 낮은 업로드 속도를 제공하지만 용량이 무제한이다. 그래서 원드라이브처럼 속도는 빠르지만 용량 제한이 있는 클라우드 스토리지에 빠르게 올려놓은 후 rclone의 스토리지 간의 복사 기능을 활용하는 것이 편하다.
CLI가 익숙하다면 터미널창을 띄우고 SSH로 접속해서 명령어를 직접 쳐서 작업해도 되고, CLI 환경에 익숙하지 않다면 LuCI[15]를 이용해 일반 공유기와 비슷하게 작업하는 것도 가능하다.
또한 제조사의 펌웨어 지원 수준이 떨어질 경우 OpenWRT를 설치해서 입맛대로 펌웨어를 수정할 수 있으며, 펌웨어 지원이 끊어져 각종 보안 취약점에 노출될 위험이 적어진다. 공식 지원을 받게 되면 리눅스 커널과 각종 소프트웨어 업그레이드를 모두 자동으로 적용받기 때문에 가능한 것.
임베디드 개발자들에게도 상당히 유용하다. OpenWRT가 지원되는 SoC 및 부품을 탑재한 임베디드 디바이스라면, 펌웨어나 드라이버를 일일이 개발할 필요없이 OpenWRT를 얹고 필요한 프로그램을 올려 인스톨하고 설정을 해주면 끝난다. 한번 올린 펌웨어를 뜯어고칠 때마다 다시 올리고 테스트하는 삽질 대신 접속해서 수정만 해주면 된다. 실제로 이런 용도로 현업에서 많이 사용되고 있다.
4. 단점
위에 설명한 장점들이 오히려 대부분의 사람에게는 제약이 된다. 위에 설명한 무한한 확장성은 리눅스에 대한 지식이 없는 일반인에게는 힘든 영역이다. 게다가 상당수의 기능은 펌웨어를 컴파일하기 전에 해당 옵션을 일일이 활성화해줘야 하는 경우나, LuCI에서 제대로 옵션이 뜨지 않아 ssh 접속을 통해 텍스트 에디터로 따로 옵션을 활성화 시켜줘야 하는 경우가 많다.[16] 타겟만 제대로 정하면 소스를 다운받고 업데이트하고 옵션을 조정하고 펌웨어를 컴파일하는 과정을 설명해놓고 있지만, 어디까지나 전문가들 기준으로만 간편하고 친절하다. 검은 텍스트 화면에 친숙하지 않다면, 타인이 미리 컴파일해둔 펌웨어를 받아서 LuCI 웹 인터페이스 등을 통해 컨트롤하는 것 정도가 최대한이다. 이것도 상당한 제약이 존재한다.거기다 LuCI 또한 한글화가 안 돼 있으며[17], 한글화는 차치하더라도 설정 내용이 상당히 자세하고 전문적인 내용이 많아 익숙하지 않으면 뭐가 뭔지 알아보는 데 시간이 꽤 걸린다.
리눅스이긴 하지만 공유기의 한계 때문에 성능이 제한되어 있다. 가령, 7.2MB의 용량을 필요로 하는 Festival lite 같은 패키지[18]를 본체에 설치할 수 없다. 따라서 ‘/etc/opkg.conf'에서 opkg 다운로드 경로를 저장 공간이 충분한 USB Memory로 설정 ('/mnt/usbdrive')하는 꼼수로 설치해야 한다.
==# LEDE #==
Linux Embedded Development Environment
공식 홈페이지
공식 지원기기 목록
한 때 갈등으로 인해 OpenWRT에서 포크되었다가 다시 합병되었다.
OpenWRT 프로젝트에서 개발자들이 크게 아래 5가지 문제를 이유로 새로운 프로젝트 LEDE를 시작했다.
- 개발에 적극적인 주요 개발자들이 적고 새롭게 프로젝트에 참가하는 개발자의 부재
- 신뢰할 수 없는 인프라와 내부 불일치 및 단일 장애 지점의 방치
- 핵심 팀 내부 그리고 핵심 팀과 커뮤니티 사이의 대화, 협동, 투명성의 부족
- 패치의 양에 비해 부족한 관리자 그리고 정규 빌드 및 테스트에 대한 적은 관심
- 펌웨어의 안정성과 문서화에 대한 초점 부족
Github 소스 주소.
OpenWRT와 분리된 이후로 꾸준히 다시 합병하는 것에 대한 논의가 계속되어 왔으며 2017년 5~6월에 서로 합의점을 찾아내고 합병을 확정하였다. 그 뒤 합병에 약간의 정체기가 있었지만 2017년 10월에 들어서 본격적으로 합병을 진행하고 있다. 합병한 뒤의 프로젝트의 이름은 다시 OpenWRT가 될 것이며 소스코드는 LEDE 기반이 될 것이지만, Github는 OpenWRT의 저장소를 사용할 예정이다. 인프라[19]는 LEDE 기반으로 사용할 예정이다. 메일링리스트는 기존 LEDE처럼 infradead.org에 의해서 호스팅 되지만 OpenWRT의 이름으로 변경된다. 웹사이트와 포럼 및 위키의 합병 방식은 아직 정해지지 않았다. 자세한 내용은 메일링리스트 참고.
2018년 1월 두 프로젝트가 OpenWRT로 통합되었다. 새롭게 포크해서 시작한 의미로 기존 칵테일 이름 대신 Reboot란 코드네임을 사용했다. 통합 전 OpenWRT 마지막 버전은 2016년 3월에 나온 15.05.1 Chaos Calmer이고, LEDE의 마지막 안정 버전은 2017년 10월 18일에 나온 Reboot 17.01.4이다. LEDE는 통합 이후에도 지원을 계속해서 2018년 9월 3일 LEDE 17.01.6까지 발표되었다. 통합 후 OpenWRT 18.06.0 버전이 발표되었다.
5. 여담
숭실대에서는 2007년부터 '임베디드 컴퓨팅 시스템'이라는 과목이 개설되었는데, 이 과목에서는 OpenWRT와 공유기를 이용해 임베디드 리눅스 시스템을 구축하는 방법을 가르친다. 수업 교재의 저자들은 교재를 공개하였다.==# DD-WRT #==
비슷한 운영체제. 브로드컴 칩셋 지원이 더 잘 된다는 장점이 있다. 그러나 리눅스 패키지 지원은 잘 되지 않는듯.
[1]
대부분의 경우는 일반 공유기처럼 웹브라우저를 통해 접속할 수 있는 LuCI GUI 셸을 이용한다. 사진의 모습의 경우 OpenWRT 22.03 버전(KT DW02-412H 공유기용)을 올린 후 LuCI 한글화 패키지를 설치한 것.
[2]
용량 문제로 LuCI 웹 인터페이스 사용 불가, ssh나 UART를 이용해 접근할 수 밖에 없다
[3]
LuCI 웹 인터페이스 이상 동작 등 메모리 부족으로 인한 소프트웨어 오류 발생 가능
[4]
다만 이 경고는 과거 19.07까지의 최소사양의 글귀를 복사한 것으로 보이며, 실제 8/64 기기에서 사용시 luci 설치 후 저장소 6MB, 메모리 50% 수준의 사용률을 보인다.
[5]
OpenWRT on 4/32 devices
[6]
MT7621 만 지원되는 것으로 보이나,
관련 Git commit 이나 Forum 의 관련 대화를 확인 해보면 MT7622, MT7623 에서도 동작 할 수 있을것으로 보임.
포럼
[7]
GitHub에서 많은 Pull request에 참여한 개발자가 작성한 OpenWRT 빌드에 관한 가이드 글이다.
[8]
CP2102 칩셋을 사용한 것이 구하기도 쉽고 윈도우 10에서 드라이버가 공식지원되어 쓰기 편하다. 집에 CH341A 롬라이터가 있다면 점퍼를 1-2에서 2-3으로 돌리고 CH341SER 드라이버(롬라이터 드라이버는 CH341PAR)를 사용해 UART 어댑터로 쓸 수도 있다.
[9]
기본적으로 2~30년된 저사양 고물 아날로그 타입의 오실로스코프정도나 10만원 미만으로 살 수 있는데, 보통 10Mhz정도의 매우 낮은 스펙이다. 디지털 타입의 경우 50Mhz 정도의 스펙을 가진 중국산 RIGOL 정도나 되어야 어느정도 괜찮고, 명품으로 인정받는 키사이트나 텍트로닉스 제품의 경우 중고도 1~200만원대이고 신품은 몇백이 깨진다(...) RIGOL의 경우는 텍트로닉스 보급형을 만들던 회사.
[10]
퀄컴 SoC를 쓰는 많은 기기들이 속한 ar71xx 타겟이 삭제되었고, 차세대 타겟인 ath79로의 이주가 권장되고 있다.
[11]
1~6편까지 시리즈이다.
[12]
22.03에서 정식 지원이 시작되었다.
[13]
해당 사례는 LEDE로 포크된 시절에 나온 사례이다. 구버전이므로 현재의 개발 환경과는 차이가 있을 수 있다.
[14]
공유기에도 프로세서를 통한 프로그램 처리는 가능하나 극히 제한된 성능 때문에 영상인식을 직접 해내기는 어려우므로 외부 컴퓨터와 연결하였다.
[15]
OpenWRT의 웹 프론트 인터페이스
[16]
임베디드 플랫폼의 자원은 원가절감 또는 안정성 강화등의 이유로 극도로 한정되어있는 환경인 경우가 대부분이다. 어떤 프로그램/기능을 추가하는 경우 리소스를 많이 잡아 먹기 때문에 기본적으로 최대한 리소스를 아끼도록 프로그램을 설계하는 것이 임베디드에서는 기본이다.
[17]
최근 한글화 패키지가 나왔다.
# 그러나 한글로 하면 설정에 대한 정보를 찾기 어려운 경우가 많다.
[18]
Festival은
TTS 프로그램이고 Festival lite는 Festival의 경량화 버전이다. 다국어 지원 기능을 삭제하고 영어만 지원하여 용량을 줄였다.
[19]
빌드 봇 및 git 저장소 서버