OpenWRT

 


1. 개요
1.1. 최신 버전
2. 지원 기기
2.1. 직접 만들 경우
3. 특징 및 장점
4. 단점
5. LEDE
6. 여담
7. dd-WRT

[image]
OpenWRT에서 제공하는 원격쉘접속 기능을 통해 접근한 장면이다. 대부분의 경우는 일반 공유기 처럼 웹브라우저를 통해 접속한 공유기 설정 페이지를 이용한다.

1. 개요


OpenWRT(OPEN Wireless RouTer)는 다양한 임베디드 기기를 위한 리눅스 배포판이다. 2004년 Linksys의 가정용 유무선 공유기인 WRT54G 시리즈에 대한 GPL 코드를 바탕으로 한 커스텀 펌웨어로 개발이 시작되었다가 점차 지원 대상이 확대되어 다양한 인터넷 공유기를 지원하는 완전한 리눅스 배포판이 되었다.
공식 홈페이지 및 위키
2016년 5월 개발자 내분으로 OpenWRT에서 LEDE가 포크되었으나 다시 화해하여 2018년 1월 두 프로젝트가 OpenWRT로 통합되었다. 통합 전 OpenWRT 마지막 버전은 2016년 3월에 나온 15.05.1 Chaos Clamer이고 LEDE의 마지막 안정 버전은 2017년 10월 18일에 나온 Reboot 17.01.4이다.[1] [2] 통합 후 OpenWRT 18.06.0 버전이 발표되었다.

1.1. 최신 버전


2021년 1월 기준 최신 버전인 OpenWRT 19.07.5 는 2020 년 12 월 9 일 발표되었다. 2020년 동안 대략 두 달에 한 번 정도의 주기로 출시되는 상태다.

2. 지원 기기


용도가 공유기로만 제한되지는 않으며, 라즈베리 파이(컴퓨터), 포고플러그 등 각종 임베디드 장비 혹은 x86 머신에도 설치가 가능하다. 유무선공유기 자체가 하나의 임베디드 하드웨어이다.
OpenWRT가 지원되는 SoC라면 쉽게 OpenWRT를 올릴 수 있는 펌웨어를 찾을 수 있다. 2020년 1월 31일 994개의 기기를 19.07.1 배포본이 공식 지원한다.[3]
하지만 대부분이 미국 등 주요 시장용으로 출시된 공유기이며 한국 국내 전용 인터넷 공유기는 OpenWRT에서 공식 지원하는 경우가 거의 없다. 한국 국내 전용 공유기인데 OpenWRT가 올라가는 제품은 netis M1200AC, netis WF-2881WeVO W2914NS v2, WeVO 11AC NAS Router ,ipTIME A604M, ipTIME A3, ipTIME A6ns-M, ipTIME A104ns, ipTIME A8004T, ipTIME A1004ns정도가 있다. 그리고 FREEZIO (2017.12 출시)는 아예 OpenWRT를 사측에서 지원하고 있다. ipTIME OpenWRT 올리는 방법
최신 버전이 공식적으로 지원 안되는 경우도 있으므로 OpenWRT 공식 폼페이지에서 반드시 확인을 하고 구입해야 한다.
'''OpenWRT의 요구 사양'''
항목
최소 사양
권장 사양
일반인[4] 권장 사양
RAM
32MB 이상
64MB 이상
128MB 이상[5]
Flash
4MB 이상
8MB 이상
16 MB 이상
Flash 4MB일 경우 GUI인 LuCI를 설치할 수 없지만 사용은 가능하다. 8MB부터 LuCI 사용 가능하다. 2020년 1월 1일부터 최소사양은 공식적으로 지원을 안한다.[6] OpenWRT용 인터넷 공유기를 구입하려면 일반인 권장사항 이상의 사양을 가진 공식홈에서 지원하는 펌웨어가 있는[7] 제품을 선택하는게 유리하다.
공유기 중에 1.5만원 정도의 저가형 공유기[8]들도 OpenWRT를 지원하고 있고, USB 연결을 지원하는 공유기[9]는 2.8만원쯤부터 시작한다.
인터넷회선 속도가 400Mbps 이하이면 TP-Link Archer C7 AC1750 정도 성능이면 되나 1Gbps 속도는 Netgear Nighthawk X4S R7800 가 되어야 충분히 소화해낸다.[10]

2.1. 직접 만들 경우


국내에서 주로 사용되는 ipTIME의 경우 일반적으로 스펙을 매우 빡빡하게 매기기 때문에 RAM[11]과 저장소 크기가 OpenWRT 최소사양에 딱 맞거나 적을때가 많고, OpenWRT에서 정식으로 지원되지 않는 Realtek를 사용하는 경우가 많으며, 또한 부트로더를 변형해 커스텀 펌웨어를 올리기 힘들게 만들어 두어 개발이 어렵다.
다른 공유기에서 쓰는 칩이 OpenWRT를 지원한다면 새롭게 만든 기기도 지원될 확률이 높다. Atheros나 MediaTek (Ralink) 계열의 CPU를 쓸 경우 지원이 잘 되며, Broadcom의 경우 오픈소스 드라이버를 제공하지 않아 설치만 되고 무선연결이 지원되지 않는 칩셋이 많다. 목록은 여기서. ASUS 공유기의 상당수가 이에 해당된다. dd-WRT는 브로드컴과 계약을 맺고 독점 드라이버도 사용해서 이런 문제는 없다. Realtek 계열의 SoC는 칩셋에서 사용하는 Lexra MIPS 라는 커스텀 아키텍처의 지원이 완전하지 않아 대부분 지원되지 않는다. 저가형 공유기는 거의 Realtek 칩셋을 사용하기 때문에 막상 OpenWRT를 올리기 적당한 공유기를 찾는건 생각보다 어렵다.
하지만 이런 하드웨어적 문제가 없는 기기라면 임베디드에 능한 개발자는 지원이 안 되던 기기라도 자기가 직접 만드는 것이 가능하다. 국산 공유기가 스펙을 만족함에도 불구하고 지원이 안 되는 것은 임베디드 시스템에 능통하면서도 시간이 남아도는 개발자가 모자라기 때문이다. 구체적으로, 하드웨어적으로는 PH1 등의 스크류 드라이버, 전압 측정을 위한 멀티미터, 오실로스코프, 컴퓨터와 공유기의 연결을 위한 USB 직렬 컨트롤러 등이 필요하다. 그리고 소프트웨어적으로는 리눅스 커널크로스 컴파일할 수 있어야 한다.

3. 특징 및 장점


공유기는 대개 자체 펌웨어만으로도 USB 단자가 지원될 경우 외장 하드디스크를 연결해 NAS로 사용할 수도 있고, 24시간 켜져 있는 프린터 서버, 파일서버를 구축할 수 있다. 그럼에도 불구하고 OpenWRT를 설치해야 하는 것은 왜일까?
기기 자체가 완전한 리눅스로 동작하여 컨트롤이 가능하다. 비슷한 공유기용 펌웨어 프로젝트인 DD-WRT나 tomato와 다르게 OpenWRT가 올려진 기기의 경우 기기 자체가 마치 라즈베리 파이 같은 완전한 임베디드 리눅스박스가 되는 셈이다. 공유기로 리눅스에서 할 수 있는 것을 할 수 있게 된다.
예를 들어 토렌트 다운로드 머신, 데이터베이스 혹은 홈페이지로 만들 수 있다. USB 사운드카드를 연결해서 음악 플레이어로 활용할 수 있고 TV카드를 물려서 예약녹화 혹은 스트리밍으로 써먹을 수도 있다. 물리적으로 근거리에서만 접속 가능한 게시판도 있다. 라우터에 직접 접속 가능한 사람만 게시판에 글을 쓸 수 있어 외부 개입이 불가능하다.
공유기를 중심으로 USB 그래픽카드, CCTV 영상, 컴퓨터 (복잡한 영상 처리작업을 수행)를 연결해 차량 인식 CCTV 시스템을 개발한 경우도 있다. [12]
rclone을 활용해 업로드 속도가 느린 클라우드 스토리지에 백업을 할 때도 PC보다 유용하다. 구글 드라이브의 경우 2018년 들어서는 1.5MB/s 정도의 낮은 업로드 속도를 제공하지만 용량이 무제한이다. 그래서 원드라이브처럼 속도는 빠르지만 용량 제한이 있는 클라우드 스토리지에 빠르게 올려놓은 후 rclone의 스토리지 간의 복사 기능을 활용하는 것이 편하다. 하지만 PC로 이런 작업을 며칠 동안 할 경우 하드 디스크 드라이브가 장기간의 스핀업과 과도한 부하로 고장나기도 쉽고 전기요금도 많이 들고 소음도 심하다. 이럴 때 OpenWRT에 SSH로 접속해서 클라우드 스토리지 간의 복사를 명령할 경우 며칠 후에는 업로드를 다 해놓는다. 전력소모량이 PC의 1/10~1/20 수준이고 HDD처럼 물리적으로 작동하는 저장매체가 달려 있지 않아서 수명 단축 걱정도 적다. 거기다 공유기는 고장나도 PC보다 싸다.
CUI가 익숙하다면 터미널창을 띄우고 SSH로 접속해서 명령어를 직접 쳐서 작업해도 되고, CUI 환경에 익숙하지 않다면 Luci[13]를 이용해 일반 공유기와 비슷하게 작업하는 것도 가능하다.
또한 제조사의 펌웨어 지원 수준이 떨어질 경우 OpenWRT를 설치해서 원하는 대로 펌웨어를 수정할 수 있으며, 펌웨어 지원이 끊어져 각종 보안 취약점에 노출될 위험이 적어진다.
임베디드 개발자들에게도 상당히 유용하다. OpenWRT가 지원되는 SoC 및 부품을 탑재한 임베디드 디바이스라면, 펌웨어나 드라이버를 일일이 개발할 필요없이 OpenWRT를 얹고 필요한 프로그램을 올려 인스톨하고 설정을 해주면 끝난다. 한번 올린 펌웨어를 뜯어고칠 때마다 다시 올리고 테스트하는 삽질 대신 접속해서 수정만 해주면 된다. 실제로 이런 용도로 현업에서 많이 사용되고 있다.
관련 연구로는 OpenWRT기반의 유무선 공유기를 활용한 다기능 웹 서버 구축 (2014), OpenWRT를 이용한 전기사용 관리 시스템 설계 (2018), OpenWRT 기반 유무선 공유기와 Zigbee 통신을 이용한 홈 네트워크 서비스 구축 (2018), IoT를 위한 OpenWRT 기반의 VPN 서버시스템 구현 (2016), OpenWRT 공유기를 이용한 스마트 헬스 시스템 (2013), OpenWRT 기반의 공유기를 이용한 홈 네트워크 구축 (2013), OpenWRT 유무선 공유기에 사용된 난수발생기의 안전성 분석 (2016), OpenWRT Linux 위에서 MPLS-TP 기반 PBB-TE 망의 구현 연구 (2010) 등이 있다. 하드웨어가속 NAT기능은 일반적으로 지원되지 않으며 최근 배포본에서는 소프트웨어적으로 NAT 가속 기능이 지원된다. OpenWrt hw NAT을 참조해보면 알수있듯이 2018년 초부터 NAT 하드웨어가속이 가능해 졌으나 실제 OpenWRT에서 공식적으로 지원되는 하드웨어는 극소수다. [14] NAT 가속 기능은 SQM/QoS을 사용하면 그 효과가 없어지므로 기가비트 회선에는 충분한 성능의 멀티코어 CPU를 가진 공유기가 추천된다.

4. 단점


위에 설명한 장점들이 오히려 많은 사람에게는 제약이 된다. 위에 설명한 무한한 확장성은 리눅스 명령어를 모르면 써먹기 어렵다. 거기다 상당수의 기능은 펌웨어를 컴파일하기 전에 해당 옵션을 일일이 활성화해줘야 할 경우가 많다. [15] 타겟만 제대로 정하면 소스를 다운받고 업데이트하고 옵션을 조정하고 펌웨어를 크로스컴파일하는 과정을 설명해놓고 있지만, 어디까지나 Geek들 기준으로만 간편하고 친절하다. 검은 텍스트 화면에 친숙하지 않다면, 타인이 미리 컴파일해둔 펌웨어를 받아서 위에 설명한 Luci 웹 인터페이스 등을 통해 컨트롤하는 것 정도가 최대한이 된다.
[image]
거기다 이 웹 인터페이스도 한글화가 안 돼 있으며, 한글화는 차치하더라도 설정 내용이 상당히 자세하고 전문적인 내용이 많아 익숙하지 않으면 뭐가 뭔지 알아보는 데 시간이 꽤 걸린다. 또한, 웹 인터페이스에서 처리 할 수 있는것보다 콘솔창을 통해서 설정이 가능한, 숨겨져 있는 설정들도 존재한다.
[image]
Luci 한글화도 가능하다. 리눅스 배운지 2년도 안된 사람도 할 수 있을 정도이므로 '전문가'만 할 수 있다고 보기는 어렵다. 공식 저장소에 추가된 한글화 패키지
[image]
패키지들도 웹 인터페이스에서 추가로 설치하고 설정 또한 가능하다. 유저들이 시리얼이나 콘솔로 접속하는 이유는 더 편하기 때문이며 필요없는 부분을 삭제해서 작은 NAND 환경을 최적화 유지를 위함이다. 예를들어, OpenVPN을 공유기에 설치하여 서버/클라이언트 로 사용시, 웹 인터페이스 플러그인을 설치하지 않으면 오직 콘솔창을 통해서만 설정이 가능하다.
리눅스이긴 하지만 공유기의 한계 때문에 성능이 제한되어 있다. 가령, 7.2MB의 용량을 필요로 하는 Festival lite 같은 패키지[16]를 본체에 설치할 수 없다. 따라서 ‘/etc/opkg.conf'에서 opkg 다운로드 경로를 저장 공간이 충분한 USB Memory로 설정 ('/mnt/usbdrive')해야 한다.

5. LEDE


Linux Embedded Development Environment
공식 홈페이지
공식 지원기기 목록
한 때 OpenWRT에서 포크되었다가 다시 합병되었다.
OpenWRT 프로젝트에서 개발자들이 크게 아래 5가지 문제를 이유로 새로운 프로젝트 LEDE를 시작했다.
  1. 개발에 적극적인 주요 개발자들이 적고 새롭게 프로젝트에 참가하는 개발자의 부재
  2. 신뢰할 수 없는 인프라와 내부 불일치 및 단일 장애 지점의 방치
  3. 핵심 팀 내부 그리고 핵심 팀과 커뮤니티 사이의 대화, 협동, 투명성의 부족
  4. 패치의 양에 비해 부족한 관리자 그리고 정규 빌드 및 테스트에 대한 적은 관심
  5. 펌웨어의 안정성과 문서화에 대한 초점 부족
Github 소스 주소. 이걸 받으면 직접 빌드할 수도 있다.
OpenWRT와 분리된 이후로 꾸준히 다시 합병하는 것에 대한 논의가 계속되어 왔으며 2017년 5~6월에 서로 합의점을 찾아내고 합병을 확정하였다. 그 뒤 합병에 약간의 정체기가 있었지만 2017년 10월에 들어서 본격적으로 합병을 진행하고 있다. 합병한 뒤의 프로젝트의 이름은 다시 OpenWRT가 될 것이며 소스코드는 LEDE 기반이 될 것이지만, Github는 OpenWRT의 저장소를 사용할 예정이다. 인프라[17]는 LEDE 기반으로 사용할 예정이다. 메일링리스트는 기존 LEDE처럼 infradead.org에 의해서 호스팅 되지만 OpenWRT의 이름으로 변경된다. 웹사이트와 포럼 및 위키의 합병 방식은 아직 정해지지 않았다. 자세한 내용은 메일링리스트 참고.

6. 여담


숭실대에서는 2007년부터 '임베디드 컴퓨팅 시스템'이라는 과목이 개설되었는데, 이 과목에서는 OpenWRT와 공유기를 이용해 임베디드 리눅스 시스템을 구축하는 방법을 가르친다. 수업 교재의 저자들은 교재를 공개하였다.

7. dd-WRT


비슷한 운영체제. 브로드컴 칩셋 지원이 더 잘 된다는 장점이 있다.

[1] 통합 이후에도 지원을 계속해서 2018년 9월 3일 LEDE 17.01.6 까지 발표되었다.[2] 새롭게 포크해서 시작한 의미로 기존 칵테일 이름 대신 Reboot란 코드네임을 사용했다.[3] 최신 버전에서 더이상 공식적으로 지원안하는 오래된 기기는 제외된 수치이다.[4] 펌웨어 이미지를 직접 만들지 못하는 사용자[5] 멀티코어 CPU 기기는 256MB 이상 추천하고 있다.[6] OpenWRT on 4/32 devices[7] OpenWRT 배포본 [8] TP-Link TL-WR940N 등[9] 저가형으로는 TP-LINK archer C50 등이 있다.[10] 일반적으로 OpenWRT에서는 하드웨어가속 NAT 지원이 원활하지 않아 좋은 CPU 성능이 요구된다.[11] 끝자리 NS 모델은 간이 NAS 기능 지원을 위해 더 큰 램을 탑재하고 있어 램 용량에는 문제없는 편.[12] 공유기에도 프로세서를 통한 프로그램 처리는 가능하나 극히 제한된 성능 때문에 영상인식을 직접 해내기는 어려우므로 외부 컴퓨터와 연결하였다.[13] OpenWRT의 웹 프론트 인터페이스 [14] 그 전에는 NAT 가속이 안 되어 정식 펌웨어보다 느린 경우가 있었고 기가비트 사용시 애로사항이 있었다.[15] 이렇게 만든 이유는 어떤 프로그램이나 기능을 추가하는 순간 그만큼 플래시롬의 한정된 여유 용량이 줄어들고, 낮은 사양 혹은 USB 단자가 없는 하드웨어 등에서 사양을 많이 잡아먹거나 외부 기기를 연결할 때나 필요한 각종 기능을 기본값으로 활성화할 필요가 없기 때문이다. 임베디드 플랫폼의 자원은 한정되어 있다.[16] Festival은 TTS 프로그램이고 Festival lite는 Festival의 경량화 버전이다. 다국어 지원 기능을 삭제하고 영어만 지원하여 용량을 줄였다.[17] 빌드 봇 및 git 저장소 서버