OpenWrt
1. 개요
OpenWrt는 2004년 링크시스가 WRT54G 시리즈 무선 라우터용 펌웨어를 개발하면서 시작된 리눅스 기반 임베디드 시스템용 오픈 소스 프로젝트이다. GNU 일반 공중 사용 허가서에 따라 소스 코드가 공개되었으며, 다양한 라우터 및 장치로 지원이 확장되었다. OpenWrt는 칵테일 이름을 딴 릴리스, 사용자 정의 기능, opkg 패키지 관리 시스템, LuCI 웹 인터페이스 등을 제공하며, 2016년 LEDE 프로젝트로 분리되었다가 재통합되었다. OpenWrt는 다양한 파생 프로젝트의 기반이 되었으며, Sveasoft와의 라이선스 분쟁이 있었다.
| 개발 | OpenWrt 프로젝트 |
|---|---|
| 종류 | 라우터 펌웨어 |
| 라이선스 | GPL |
| 웹사이트 | openwrt.org |
| 커널 종류 | 모놀리식 (리눅스) |
|---|---|
| 사용자 영역 | BusyBox |
| 사용자 인터페이스 | CLI, 웹 UI (LuCI) |
| 패키지 관리자 | opkg (24.10 버전까지) |
| 업데이트 모델 | opkg (24.10 버전까지) |
| 지원 플랫폼 | 50개의 다양한 플랫폼 ( ARC, ARM, m68k, MIPS, PowerPC, SPARC, SuperH, x86, x86-64 ) |
| 프로그래밍 언어 | 영어, 중국어, 폴란드어, 포르투갈어, 펀자브어, 스페인어, 웨일스어 + 25개의 부분적으로 번역된 언어 |
| 최초 출시 | 2004년 1월 |
|---|---|
| 최신 안정화 버전 | 23.05.5 |
| 최신 안정화 버전 출시일 | 2024년 9월 25일 |
| 최신 미리보기 버전 | 24.10.0-rc2 |
| 최신 미리보기 버전 출시일 | 2024년 12월 4일 |
| 작동 상태 | 현재 |
| 소스 모델 | 오픈 소스 |
|---|
-
네트워크 운영체제 -
시스코 IOS
시스코 IOS는 시스코 시스템즈의 네트워크 장비 운영체제로, 라우터용으로 개발되어 다양한 하드웨어 기능과 네트워킹 프로토콜에 적응하며 CLI를 통해 네트워크 기능을 제어 및 관리할 수 있도록 설계되었고, IOS XR, IOS XE 등 후속 운영 체제가 등장했다. -
네트워크 운영체제 -
넷웨어
넷웨어는 노벨이 개발한 네트워크 운영 체제로, 파일 공유 중심으로 설계되어 1980년대 중반부터 1990년대 중반까지 LAN 환경에서 높은 성능으로 시장을 선도했으나, 윈도우 NT 서버의 부상과 시장 변화에 대응하지 못해 쇠퇴했다. -
커스텀 펌웨어 -
DD-WRT
DD-WRT는 리눅스 기반의 임베디드 운영체제로, 무선 라우터에 설치되어 접근 제어, 대역폭 관리, VPN 설정, 무선 네트워크 확장 등 다양한 고급 기능을 제공하고, OpenVPN, WireGuard와 같은 VPN 프로토콜을 지원하며, 오래된 라우터를 활용하여 서버 등으로 활용할 수 있게 한다. -
커스텀 펌웨어 -
LibreCMC
LibreCMC는 자유 소프트웨어 재단의 인증을 받은 라우터용 운영체제로, OpenWrt 및 LEDE 코드베이스를 기반으로 하며 다양한 하드웨어 사양을 지원하기 위해 여러 버전으로 제공된다. -
데비안 기반 리눅스 배포판 -
안드로이드 (운영체제)
구글이 개발한 리눅스 커널 기반의 모바일 운영체제인 안드로이드는 오픈소스 플랫폼으로 다양한 기기에서 활용되며 세계적으로 널리 사용되지만, 개인정보 보호 문제와 독점적 지위 남용 논란 등의 비판도 존재한다. -
데비안 기반 리눅스 배포판 -
MX 리눅스
MX 리눅스는 MEPIS 커뮤니티와 antiX 개발자들이 협력하여 개발한 데비안 기반의 리눅스 배포판으로, 사용자 중심의 MX 도구 모음과 시스템 백업 및 복구 기능인 MX 스냅샷을 제공하며 Xfce, KDE Plasma, Fluxbox 등 다양한 데스크톱 환경과 최신 하드웨어 지원 AHS 버전을 제공한다.
2. 역사
OpenWrt 프로젝트는 2004년 링크시스가 GNU 일반 공중 사용 허가서에 따라 라이선스된 코드로 WRT54G 시리즈 무선 라우터용 펌웨어를 구축하면서 시작되었다. 이 코드를 기반으로 개발자들은 이전 소비자 수준 라우터에서는 찾아볼 수 없었던 많은 기능을 제공하는 리눅스 배포판을 만들었다. 초기에는 일부 기능에 독점 소프트웨어가 필요했는데, 예를 들어 OpenWrt 8.09 이전에는 많은 브로드컴 기반 라우터의 WLAN은 독점 모듈을 통해서만 사용할 수 있었다.
OpenWrt 릴리스는 화이트 러시안, 가미카제 등 칵테일 이름을 따서 명명되었으며, 해당 레시피는 메시지 오브 데이(motd)에 포함되어 명령줄 인터페이스 로그인 후 표시되었다.
2016년 5월, 내부 프로세스에 대한 의견 불일치로 핵심 OpenWrt 기여자들은 Linux 임베디드 개발 환경(LEDE)으로 포크했다. 이 분열은 1년 후 해결되었고, 2018년 1월 재통합이 발표되었다. OpenWrt 브랜드는 유지되었으며, LEDE의 많은 프로세스와 규칙이 사용되었다. LEDE 프로젝트 이름은 v17.01에 사용되었고, 18.01 개발 버전은 OpenWrt 브랜드로 출시되어 칵테일 기반 명명 방식을 폐지했다.
2.1. 개발 배경
링크시스가 GNU 일반 공중 사용 허가서에 따라 라이선스된 코드로 WRT54G 시리즈 무선 라우터용 펌웨어를 구축한 후, 2004년 OpenWrt 프로젝트가 시작되었다. 해당 라이선스 조항에 따라 링크시스는 수정된 버전의 소스 코드를 동일한 라이선스 하에 공개해야 했으며, 이를 통해 독립 개발자들이 파생 버전을 만들 수 있게 되었다. 원래 지원은 WRT54G 시리즈로 제한되었지만, 이후 여러 제조업체의 다양한 라우터 및 장치로 확장되었다.
2.2. 명칭 유래
OpenWrt의 주요 버전 이름은 화이트 러시안, 카미카제, Backfire와 같이 칵테일 이름에서 따왔다. 2016년에는 내부 의견 불일치로 인해 핵심 개발자들이 분리되어 리눅스 임베디드 개발 환경(LEDE) 프로젝트를 시작했으나, 2018년에 다시 OpenWrt로 통합되었다.
2.3. 주요 버전
OpenWrt는 2004년 첫 번째 안정적인 릴리스 이후, 여러 주요 버전을 거쳐 발전해왔다. 각 버전은 칵테일 이름을 따서 명명되었으며(예: White Russian, Kamikaze), 새로운 기능 추가, 버그 수정, 보안 강화 등을 포함한다.
2016년에는 내부 의견 불일치로 인해 핵심 개발자들이 LEDE라는 이름으로 분리되었으나, 2018년에 재통합되었다. 재통합 이후에는 칵테일 이름 대신 버전 번호(예: 17.01.0, 18.06.0)를 사용하고 있다.
| 버전(코드명) | 일반 출시일 | 커널 | libc | 주요 특징 |
|---|---|---|---|---|
| 첫 번째 안정적인 릴리스 | 2004-01 | uClibc | 링크시스 WRT54G 기반 | |
| 0.9 (White Russian) | 2007-02-05 | 2.4.30 | uClibc | NVRAM 기반, nas, wl |
| 7.06 (Kamikaze) | 2007-06-02 | 2.6.19 | uClibc | opkg 사용 |
| 8.09 (Kamikaze) | 2009-02-19 | 2.6.26 | uClibc | 새로운 플랫폼: ar71xx |
| 10.03 (Backfire) | 2010-04-07 | 2.6.32 | uClibc | 다양한 플랫폼 지원 |
| 12.09 (Attitude Adjustment) | 2013-04-25 | 3.3 | uClibc | CoDel 백포팅, bcm2708 (라즈베리 파이) 지원 |
| 14.07 (Barrier Breaker) | 2014-10-02 | 3.10.49 | uClibc | i.MX23, i.MX6 지원 |
| 15.05 (Chaos Calmer) | 2015-09-11 | 3.18.20 | uClibc | nftables |
| 17.01.0 (Reboot (OpenWrt/LEDE)) | 2017-02-22 | 4.4.50 | musl | OpenWrt/LEDE 재통합 |
| 18.06.0 | 2018-07-31 | 4.9.111 / 4.14.52 | musl | |
| 19.07.0 | 2020-01-06 | 4.14.162 | musl | WPA3 지원, 플로우 오프로딩 (베타) |
| 21.02.0 | 2021-09-04 | 5.4.143 | musl | WPA3, TLS 및 HTTPS 기본 지원, 초기 [https://www.kernel.org/doc/html/latest/networking/dsa/dsa.html DSA] 지원 |
| 22.03.0 | 2022-09-06 | 5.10.138 | musl | nftables 기반 Firewall4, LuCI 다크 모드, 2038년 문제 처리 |
| 23.05.0 | 2023-10-13 | 5.15.134 | musl | ipq40xx 대상 DSA 변환, 기본 암호화 라이브러리 mbedtls |
3. 특징
OpenWrt는 일반 게이트웨이 장비에 내장된 펌웨어가 제공하는 여러 기능들, 예를 들어 DHCP 서비스나 WEP, WPA, WPA2 같은 무선 보안 기능들을 기본적으로 제공한다. 또한 이런 기본적인 기능 이외에 기본 펌웨어에서 제공하지 않는 다음과 같은 여러 가지 기능들을 추가로 제공한다.
* NAT 뒤에 있는 컴퓨터로 들어오는 외부 트래픽에 대한 포트포워딩 기능.
* 동적 포트포워딩을 위한 UPnP 기능.
* 정적인 DHCP 할당.
* 강력한 방화벽과 라우터 설정.
* VoIP, 온라인 게임, 멀티미디어 스트리밍 서비스를 위한 QoS 설정.
* 무선 리피터, AP, 무선 브릿지등으로 다양하게 장비를 설정할 수 있으며, 이들 설정을 조합하여 사용하는 것도 가능하다.
* 메시 네트워킹
* 고정 IP를 제공하지 않는 ISP 사용자를 위한 다이나믹 DNS 기능.
* SSH나 telnet을 통한 명령 줄 접근
* USB 포트를 지원하는 장치의 경우 프린터 공유나 윈도 호환 파일 공유 (SAMBA), USB 오디오 등 연결 가능한 여러 장치 지원.
* 실시간 네트워크 감시
* 강력한 AJAX 웹 인터페이스.
* 규칙적인 버그 수정과 업데이트 (제조사가 더 이상 지원하지 않는 장비도 지원).
OpenWrt의 또 다른 장점은 파일 시스템을 자유롭게 사용하는 것이 가능하다는 것이다. ipkg (최신 버전에서는 opkg) 라는 패키지 관리 시스템을 사용해서 사용자가 자유롭게 여러 가지 소프트웨어를 설치해서 OpenWrt를 매우 다양한 방식으로 사용할 수 있다. 다른 리눅스 기반 펌웨어들은 대체로 읽기만 가능한 SquashFS 같은 파일 시스템을 사용하기 때문에 사용자가 새로운 소프트웨어를 추가하고 싶은 경우 펌웨어 이미지 전체를 새로 빌드하고 플래시에 올려서 사용해야 한다. 이것이 다른 리눅스 기반 펌웨어와 비교해서 OpenWrt가 갖는 가장 큰 장점이다. OpenWrt는 배포 정책에 따라 읽기만 가능한 SquashFS이나 읽고 쓰기가 모두 가능한 JFFS2 중 알맞은 것으로 이미지를 만들 수 있다.
OpenWrt는 쓰기 가능한 JFFS2파일 시스템 형태로 설치되며, opkg를 통한 패키지 관리가 가능하다. 이 때문에 OpenWrt는 범용성이 뛰어나 다양한 요구에 대응할 수 있다. 또한, 메시 네트워크 구축이 가능하다.
4. 구성 요소
OpenWrt는 사용자와 개발자 모두에게 유연하고 확장 가능한 환경을 제공하는 다양한 구성 요소로 이루어져 있다. 주요 구성 요소로는 웹 인터페이스(LuCI), 빌드 시스템(Buildroot), 패키지 관리 시스템(opkg) 등이 있다.
4.1. 웹 인터페이스 (LuCI)
LuCI는 OpenWrt의 주요 웹 인터페이스로, Lua로 작성된 MVC 프레임워크를 기반으로 한다. LuCI를 통해 사용자는 라우터의 다양한 기능을 쉽게 설정하고 관리할 수 있다. 8.09 이전 버전에서는 제한적인 웹 인터페이스만 제공되었으나, 8.09 버전부터 LuCI가 기본으로 탑재되어 사용자 편의성이 크게 향상되었다.
4.2. 빌드 시스템 (Buildroot)
OpenWrt의 개발 환경과 빌드 시스템은 OpenWrt Buildroot라고 불리며, Buildroot 시스템을 크게 수정한 것을 기반으로 한다. OpenWrt Buildroot는 적절한 크로스 컴파일러 툴체인을 빌드하고 사용하여 임베디드 장치용 리눅스 기반 OpenWrt 시스템을 구축하는 과정을 자동화하는 Makefile과 패치 묶음이다.
임베디드 장치는 일반적으로 OpenWrt 시스템 이미지를 빌드하는 데 사용되는 호스트 컴퓨터와 다른 프로세서를 사용하므로 크로스 컴파일 툴체인이 필요하다. 이러한 컴파일 툴체인은 호스트 시스템에서 실행되지만 대상 임베디드 장치와 해당 프로세서의 명령 집합 아키텍처 (ISA)에 대한 코드를 생성한다. 예를 들어, 호스트 시스템이 x86을 사용하고 대상 시스템이 MIPS32를 사용하는 경우, 호스트의 일반 컴파일 툴체인은 x86에서 실행되어 x86 아키텍처용 코드를 생성하는 반면, 크로스 컴파일 툴체인은 x86에서 실행되어 MIPS32 아키텍처용 코드를 생성한다. OpenWrt Buildroot는 대부분의 임베디드 장치 및 호스트 시스템의 명령 집합 아키텍처에서 작동하도록 이 전체 과정을 자동화한다.
OpenWrt Buildroot는 다음과 같은 기능을 제공한다.
* 여러 아키텍처에서 소프트웨어를 쉽게 이식할 수 있다.
* 모든 옵션의 구성에 menuconfig (Linux 커널 menuconfig)를 사용한다.
* 통합된 크로스 컴파일러 툴체인 (gcc, ld, uClibc 등)을 제공한다.
* autotools (automake, autoconf), CMake 및 SCons에 대한 추상화를 제공한다.
* 다운로드, 패치, 구성, 컴파일 및 패키징과 같은 표준 OpenWrt 이미지 빌드 워크플로를 처리한다.
* 알려진 동작이 좋지 않은 패키지에 대한 일반적인 수정 사항을 제공한다.
시스템 이미지 빌드 외에도, OpenWrt 개발 환경은 OpenWrt 소프트웨어 패키지의 간소화된 크로스 플랫폼 빌드를 위한 메커니즘도 제공한다. 각 소프트웨어 패키지의 소스 코드는 Makefile과 유사한 일련의 빌드 지침과 버그 수정 또는 풋프린트 최적화를 위한 선택적 패치 세트를 제공해야 한다.
4.3. 패키지 관리 시스템 (opkg)
opkg (최신 버전)는 사용자가 자유롭게 여러 가지 소프트웨어를 설치해서 OpenWrt를 매우 다양한 방식으로 사용할 수 있게 해주는 패키지 관리 시스템이다. 다른 리눅스 기반 펌웨어들은 대체로 읽기만 가능한 SquashFS 같은 파일 시스템을 사용하기 때문에, 사용자가 새로운 소프트웨어를 추가하고 싶은 경우 펌웨어 이미지 전체를 새로 빌드하고 플래시에 올려서 사용해야 한다. 이것이 다른 리눅스 기반 펌웨어와 비교해서 OpenWrt가 갖는 가장 큰 장점이다. OpenWrt는 배포 정책에 따라 읽기만 가능한 SquashFS이나 읽고 쓰기가 모두 가능한 JFFS2 중 알맞은 것으로 이미지를 만들 수 있다.
OpenWrt는 쓰기 가능한 JFFS2파일 시스템 형태로 설치되며, opkg를 통한 패키지 관리가 가능하다. 이 때문에 OpenWrt는 범용성이 뛰어나 다양한 요구에 대응할 수 있다.
5. 파생 프로젝트
OpenWrt 프로젝트를 기반으로 다음과 같은 프로젝트들이 파생되었다.
* Chillifire - 무선 핫스팟 관리에 중점을 둔 OpenWrt 기반 펌웨어
* PacketProtector - IDS, IPS, VPN, 웹 안티 바이러스 등의 기능을 제공하는 OpenWrt 기반 보안 배포판.
* Coova - 무선 핫스팟 관리에 중점을 둔 OpenWrt 기반 펌웨어.
* Freifunk - OLSR 무선 메시 네트워크를 지원하는 OpenWrt 기반의 독일 소프트웨어. 다른 언어도 지원.
* RO.B.IN - ROBIN (ROuting Batman INside)은 OpenWrt 카미카제를 기반으로 하여 Atheros AP51 라우터에서 돌아가는 오픈 소스 메시 네트워크 프로젝트이다. B.A.T.M.A.N. 라우팅 알고리즘을 사용한다.
* FON - 핫스팟으로 동작하는 OpenWrt 기반 무선 라우터. 툴체인과 소스 코드는 fonosfera.org에서 받을 수 있다.
* LibreCMC - 리눅스-리브레 커널을 사용하는 완전한 자유 소프트웨어 배포판. 자유 소프트웨어 재단에 의해 승인된 배포판이다.
* LEDE - OpenWrt 프로젝트의 운영이 폐쇄적이라는 불만을 품은 개발자들이 2016년에 결성한 프로젝트. LEDE는 Linux Embedded Development Environment의 약자로, OpenWrt와 거의 동일한 목표를 공유하는 포크이다. 2018년에 OpenWrt와 재통합되었으며, LEDE의 성과는 OpenWrt에 병합되었다.
* DD-WRT - 가정용 라우터용 기능 강화 펌웨어
* Gargoyle Router Firmware - OpenWrt용 웹 인터페이스 (사용성을 강화)
* FreeWRT - OpenWrt 프로젝트에서 갈라져 나온 포크
* X-Wrt - OpenWrt의 웹 인터페이스를 강화한 것
6. Sveasoft 논란
2006년 3월 11일, OpenWrt 개발자들은 Sveasoft가 GPL 라이선스를 위반했다며 Sveasoft의 OpenWrt 배포를 금지한다고 공식 발표했다. Sveasoft는 무선 LAN 라우터용 펌웨어를 판매하는 기업이었다. OpenWrt는 Sveasoft가 소스 코드를 공개하지 않고 바이너리만 판매하여 GPL을 위반했다고 주장했다.
이에 대해 Sveasoft는 OpenWrt가 Sveasoft와 브로드컴(Broadcom)이 저작권을 소유한 소프트웨어를 허가 없이 부정한 방법으로 GPL화했다고 반박했다. 이처럼 양측은 서로 상대방의 주장을 부인하는 상황이었다.