OpenWrt란?
OpenWrt는 라우터, 게이트웨이 등 네트워크 기기 전용으로 설계된 임베디드 기기용 Linux 운영체제입니다. 일반 라우터 펌웨어와 가장 큰 차이점은 다음과 같습니다:
- 완전한 패키지 관리 시스템(opkg): Ubuntu에서
apt를 쓰듯 언제든 소프트웨어를 설치/제거할 수 있습니다 - 읽기/쓰기 가능한 파일 시스템: 제조사가 미리 설치해 둔 폐쇄형 기능에 더 이상 제한받지 않습니다
- 모듈식 설계: 필요한 것만 설치하면 되니 불필요하게 무겁지 않습니다
- 오픈소스 무료: GPL-2.0 라이선스, GitHub에서 2만 개 이상의 Star를 받았습니다
간단히 말해, OpenWrt를 플래싱한 라우터는 작은 Linux 서버나 다름없습니다. DHCP 서버, 방화벽, DNS 서버, 광고 차단, VPN 게이트웨이, 스마트 홈 허브, 심지어 Docker 컨테이너까지 돌릴 수 있습니다.
OpenWrt vs 일반 라우터 펌웨어
| 특성 | 일반 라우터 펌웨어 | OpenWrt |
|---|---|---|
| 파일 시스템 | 읽기 전용(squashfs) | 읽기/쓰기 가능 |
| 소프트웨어 설치 | 제조사 미리 설치, 확장 불가 | opkg 패키지 관리, 수천 개 패키지 |
| 사용자 정의 설정 | 제한적 | 완전한 제어(SSH + LuCI 웹 인터페이스) |
| 업데이트 주기 | 제조사 결정(몇 년간 업데이트 없을 수도) | 커뮤니티 관리, 지속적 업데이트 |
| 소스 코드 | 대체로 클로즈드 소스 | 완전 오픈소스(GPL-2.0) |
OpenWrt vs DD-WRT vs Padavan
OpenWrt는 생태계가 가장 풍부한 오픈소스 라우터 시스템입니다. 비교해 보면: - DD-WRT: 역사가 길지만 패키지 관리가 OpenWrt보다 유연하지 않습니다 - Padavan(라오판즈): 중국 내에서 인기가 많지만 특정 칩셋에만 주로 대응하며, 커스터마이징에 한계가 있습니다 - LEDE: 2018년 OpenWrt와 병합되어 더 이상 독립 버전이 존재하지 않습니다
하드웨어 선택: 2026년 OpenWrt 플래싱에 적합한 기기
옵션 1: 구형 라우터 재활용 (비용 0원)
집에 굴러다니는 옛날 라우터가 있다면, 먼저 호환성을 확인하세요:
- OpenWrt 하드웨어 데이터베이스에 접속
- 라우터 브랜드와 모델명 입력
- 지원 상태 확인:
Supported(완벽 지원) /Technically available(사용 가능하지만 추가 작업 필요) /Unsupported(미지원)
호환성이 좋은 인기 라우터: - 샤오미 Redmi AX6S / AX3000T - Phicomm(페이쉰) K2P / K3 - 넷기어 Netgear R6220 / R7800 - 아수스 ASUS RT-AC58U / RT-ACRH17 - TP-Link Archer C7 v2/v4/v5
옵션 2: 전용 소프트웨어 라우터 기기 (추천)
OpenWrt를 진지하게 플레이하려는 분이라면 x86 소프트웨어 라우터가 최선입니다:
| 기기 | 가격대 | 특징 |
|---|---|---|
| Intel N100 미니 PC | ¥300-600 | 저전력(6W TDP), 성능 과잉 |
| 창왕(畅网) N5105 / N6005 | ¥400-800 | 4개 LAN 포트, 소프트웨어 라우터 클래식 |
| 베이컨(倍控) J4125 산업용 PC | ¥500-900 | 6개 LAN 포트, 안정적 |
| 중고 노트북 | ¥0 | 배터리가 UPS 역할, 절전 |
2026년 추천: Intel N100 미니 PC가 가성비가 가장 좋습니다. TDP 6W, 쿼드 코어, OpenWrt + Docker를 거뜬히 돌리며, 시앤위(闲鱼)에서 300위안 정도면 구입할 수 있습니다.
옵션 3: 개발 보드
- Raspberry Pi 4 / 5: OpenWrt 공식 지원, 입문 학습에 적합
- NanoPi R4S / R5S: FriendlyELEC 제품, 듀얼 LAN 포트, 소프트웨어 라우터 인기 모델
- RK3568 / RK3588 개발 보드: 성능은 강력하지만 어느 정도 작업 능력이 필요합니다
제로부터 플래싱 튜토리얼
⚠️ 경고: 플래싱에는 위험이 따르며, 잘못 조작하면 라우터가 벽돌(brick)이 될 수 있습니다. 플래싱 전에 반드시 사용 중인 라우터 모델의 구체적인 튜토리얼을 검색해 보세요.
Step 1: 순정 펌웨어 백업
플래싱 전에는 무조건 백업부터! 문제가 생겨도 복구할 수 있습니다.
SSH를 통한 백업(라우터에 SSH가 이미 활성화된 경우):
# 라우터에 SSH 로그인
ssh root@192.168.1.1
# 전체 펌웨어 백업(TFTP로 로컬 컴퓨터에 전송)
cat /dev/mtd0 > /tmp/original_firmware.bin
# 라우터에서 이 파일을 다운로드
TTL 직렬 포트를 통한 백업(범용 방법):
# USB-TTL 모듈 필요(CH340/CP2102, 약 ¥10)
# 연결 후 컴퓨터에서 실행
minicom -D /dev/ttyUSB0 -b 115200
# U-Boot 진입 후 백업 명령 실행
Step 2: OpenWrt 플래싱
방법 A: 웹 인터페이스를 통한 플래싱 (가장 간단)
- 해당 모델에 맞는 OpenWrt 펌웨어 이미지(
.bin파일) 다운로드 - OpenWrt Firmware Selector로 이동 - 기기 모델 입력, 최신 버전 선택 - 라우터 관리 페이지 로그인(대개
192.168.1.1) - 「시스템 도구 → 펌웨어 업그레이드」 찾기
.bin파일 업로드, 자동 재부팅 대기
방법 B: Breed 부트로더를 통한 플래싱 (추천, 벽돌 방지)
Breed는 불사의 U-Boot 부트로더로, Breed를 플래싱하면 벽돌 위험에서 거의 해방됩니다.
# 1. 먼저 Breed 플래싱(라우터에 SSH가 활성화되어 있거나 TTL을 통해)
# breed 파일은 일반적으로 .bin 포맷
# 2. 라우터 Reset 버튼을 누른 채 전원을 켜면 Breed Web 인터페이스로 진입
# 브라우저에서 192.168.1.1 접속
# 3. Breed 인터페이스에서 OpenWrt 펌웨어 선택 후 플래싱
# Breed는 복구를 지원하므로 잘못 플래싱해도 다시 플래싱 가능
방법 C: x86 소프트웨어 라우터 USB 설치
# 1. x86 버전 OpenWrt 이미지 다운로드(combined-ext4.img.gz)
wget https://downloads.openwrt.org/releases/23.05.3/targets/x86/64/openwrt-23.05.3-x86-64-generic-ext4-combined.img.gz
# 2. 압축 해제
gunzip openwrt-23.05.3-x86-64-generic-ext4-combined.img.gz
# 3. USB에 기록(USB가 /dev/sdb라고 가정, 반드시 확인하세요!)
sudo dd if=openwrt-23.05.3-x86-64-generic-ext4-combined.img of=/dev/sdb bs=4M status=progress
# 4. USB에서 소프트웨어 라우터 부팅, OpenWrt가 내장 저장소에 자동 기록
Step 3: 최초 설정
플래싱 성공 후 OpenWrt 기본 설정:
- LAN IP:
192.168.1.1 - 웹 인터페이스:
http://192.168.1.1(LuCI) - SSH:
ssh root@192.168.1.1(비밀번호 없음)
# SSH 로그인(최초 비밀번호 없이 엔터)
ssh root@192.168.1.1
# root 비밀번호 설정
passwd
# 패키지 목록 업데이트
opkg update
# 중국어 언어 팩 설치
opkg install luci-i18n-base-zh-cn
# 웹 인터페이스 새로고침하면 중국어로 변경
한국어 사용자를 위한 참고: OpenWrt는 한국어 언어 팩을 지원하지 않을 수 있습니다. 이 경우 영어(
luci-i18n-base-en)를 설치하거나 웹 브라우저 번역 기능을 활용하세요.
Step 4: 네트워크 기본 설정
# 네트워크 설정 파일 편집
vi /etc/config/network
# 일반적인 LAN 설정 예시:
# config interface 'lan'
# option type 'bridge'
# option ifname 'eth0'
# option proto 'static'
# option ipaddr '192.168.2.1'
# option netmask '255.255.255.0'
# 네트워크 서비스 재시작
/etc/init.d/network restart
핵심 기능 실전
1. DHCP 서버 설정
OpenWrt는 기본적으로 DHCP가 활성화되어 있으며, 주소 풀을 커스터마이징할 수 있습니다:
# DHCP 설정 편집
vi /etc/config/dhcp
# 주요 설정 항목:
# config dhcp 'lan'
# option interface 'lan'
# option start '100' # 시작 주소
# option limit '150' # 주소 풀 크기
# option leasetime '12h' # 임대 기간
# option ra 'server' # IPv6 RA 모드
# option dhcpv6 'server' # IPv6 DHCP
# DHCP 서비스 재시작
/etc/init.d/dnsmasq restart
특정 기기에 고정 IP 할당(정적 IP):
# /etc/config/dhcp에 추가:
# config host
# option name 'nas'
# option mac 'AA:BB:CC:DD:EE:FF'
# option ip '192.168.2.100'
2. 방화벽 설정
OpenWrt의 방화벽은 iptables/nftables 기반으로, 기본 규칙은 다음과 같습니다:
- LAN 영역: 모든 인바운드/아웃바운드 허용
- WAN 영역: 인바운드 거부, 아웃바운드 허용
- 포워딩 규칙: LAN → WAN 허용, WAN → LAN 거부
특정 포트 개방(NAS 관리 인터페이스 등):
# LuCI 웹 인터페이스: 네트워크 → 방화벽 → 포트 포워딩
# 또는 명령줄:
uci add firewall rule
uci set firewall.@rule[-1].name='Allow-NAS'
uci set firewall.@rule[-1].src='wan'
uci set firewall.@rule[-1].dest_port='8080'
uci set firewall.@rule[-1].target='ACCEPT'
uci set firewall.@rule[-1].proto='tcp'
uci commit firewall
/etc/init.d/firewall restart
3. DNS 설정
DNS 가속(SmartDNS) 사용:
# SmartDNS 설치
opkg install smartdns
# SmartDNS가 여러 DNS 업스트림 서버를 사용하도록 설정
vi /etc/smartdns/smartdns.conf
# 업스트림 DNS 추가:
# server 223.5.5.5 -group alidns
# server 119.29.29.29 -group dnspod
# server 8.8.8.8 -group google
# 리스닝 포트 설정
# bind :6053
# DNS 캐시 설정
# cache-size 512
# 서비스 재시작
/etc/init.d/smartdns enable
/etc/init.d/smartdns restart
4. 광고 차단(AdGuard Home / Adbyby)
옵션 A: AdGuard Home 설치(추천)
# opkg로 설치
opkg install adguardhome
# 또는 최신 버전 수동 설치:
wget https://github.com/AdguardTeam/AdGuardHome/releases/latest/download/AdGuardHome_linux_armv7.tar.gz
tar -xzf AdGuardHome_linux_armv7.tar.gz
./AdGuardHome -s install
# 브라우저에서 http://192.168.2.1:3000 접속하여 초기화 완료
옵션 B: Adbyby 사용(더 가벼움)
opkg install adbyby
/etc/init.d/adbyby enable
/etc/init.d/adbyby start
5. VPN 서버
WireGuard VPN 구축(2026년 가장 추천하는 VPN 솔루션):
# WireGuard 설치
opkg install wireguard-tools luci-app-wireguard
# WAN 인터페이스에서 WireGuard 설정 생성
wg genkey > /etc/wireguard/server_private.key
wg pubkey < /etc/wireguard/server_private.key > /etc/wireguard/server_public.key
# 설정 편집
vi /etc/wireguard/wg0.conf
설정 파일 예시:
[Interface]
PrivateKey = <서버 개인키>
Address = 10.8.0.1/24
ListenPort = 51820
# 클라이언트 1
[Peer]
PublicKey = <클라이언트 공개키>
AllowedIPs = 10.8.0.2/32
# WireGuard 시작
wg-quick up wg0
# 부팅 시 자동 시작 설정
/etc/init.d/wireguard enable
고급 활용법
Docker 컨테이너 지원
OpenWrt에서 Docker를 실행하면 확장성이 무한해집니다!
# Docker 설치
opkg install docker docker-compose luci-app-dockerman
# Docker 서비스 시작
/etc/init.d/dockerd enable
/etc/init.d/dockerd start
# 설치 확인
docker --version
docker info
실전: OpenWrt에서 Home Assistant 실행(스마트 홈):
# 영구 저장 디렉터리 생성
mkdir -p /srv/homeassistant
# 이미지 받아서 실행
docker run -d \
--name homeassistant \
--restart=unless-stopped \
--network=host \
-v /srv/homeassistant:/config \
homeassistant/home-assistant:stable
# 브라우저에서 http://192.168.2.1:8123 접속
실전: AdGuard Home 배포(Docker 경유):
docker run -d \
--name adguardhome \
--restart=unless-stopped \
--network=host \
-v /srv/adguard/work:/opt/adguardhome/work \
-v /srv/adguard/conf:/opt/adguardhome/conf \
adguard/adguardhome:latest
내부 네트워크 우회(内网穿透)
frp로 내부 네트워크 우회 구현:
# frp 클라이언트 설치
opkg install frp
# frpc 설정
vi /etc/frpc/frpc.toml
serverAddr = "frp 서버 IP"
serverPort = 7000
[[proxies]]
name = "web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 8080
# frp 시작
/etc/init.d/frpc enable
/etc/init.d/frpc start
트래픽 모니터링
# nlbwmon 설치(경량 트래픽 통계)
opkg install nlbwmon luci-app-nlbwmon
# 또는 더 강력한 BanDaWidth 설치
opkg install bandwidth
# 실시간 트래픽 모니터링 설치(iftop의 OpenWrt 버전)
opkg install iftop
# 어떤 IP가 대역폭을 가장 많이 쓰는지 실시간 확인
iftop -i br-lan
IPv6 지원
OpenWrt의 IPv6 지원은 매우 성숙합니다:
# IPv6 활성화(보통 LuCI에서 조작하는 것이 직관적입니다)
# 네트워크 → 인터페이스 → LAN → 편집 → DHCP 서버 → IPv6 설정
# 명령줄 방식:
uci set network.lan6='interface'
uci set network.lan6.device='@device'
uci set network.lan6.proto='dhcpv6'
uci commit network
/etc/init.d/network restart
일상 유지보수
펌웨어 업데이트
# 방식 1: LuCI 웹 인터페이스
# 시스템 → 백업/업그레이드 → 새 펌웨어 다운로드 → 플래싱
# 방식 2: 명령줄 업데이트
sysupgrade -v /tmp/openwrt-xxx-squashfs-sysupgrade.bin
# 설정 유지하며 업데이트(추천):
sysupgrade -c /tmp/openwrt-xxx-squashfs-sysupgrade.bin
# 설정 유지 없이 업데이트(클린 설치):
sysupgrade -n /tmp/openwrt-xxx-squashfs-sysupgrade.bin
설정 백업 및 복구
# 현재 설정 백업
sysupgrade -b /tmp/config-backup.tar.gz
# 백업에서 복구
sysupgrade -r /tmp/config-backup.tar.gz
# 백업 내용 확인
tar tzf /tmp/config-backup.tar.gz
자주 쓰는 opkg 명령
# 소프트웨어 소스 업데이트
opkg update
# 패키지 검색
opkg find luci-app-*
# 패키지 설치
opkg install <패키지명>
# 설치된 패키지 목록
opkg list-installed
# 패키지 제거
opkg remove <패키지명>
# 캐시 정리
opkg clean
문제 해결 FAQ
1. OpenWrt 플래싱 후 인터넷이 안 될 때
# WAN 포트가 IP를 받았는지 확인
ifconfig eth1
# 기본 게이트웨이 확인
route -n
# DNS 테스트
nslookup baidu.com
# DNS 수동 설정
vi /etc/resolv.conf
# 추가: nameserver 223.5.5.5
# 네트워크 재시작
/etc/init.d/network restart
2. LuCI 웹 인터페이스에 접속할 수 없을 때
# uhttpd 서비스 상태 확인
/etc/init.d/uhttpd status
# 웹 서비스 재시작
/etc/init.d/uhttpd restart
# 방화벽 규칙 확인
iptables -L -n
3. WiFi가 시작되지 않을 때
# WiFi 설정 확인
wifi status
# 기본 설정 재생성
wifi config
# WiFi 설정 편집
vi /etc/config/wireless
# WiFi 활성화
uci set wireless.@wifi-device[0].disabled=0
uci commit wireless
wifi reload
4. 기기가 벽돌(brick)이 됐을 때
- Breed 사용자: Reset 버튼을 누른 채 전원을 켜서 Breed Web 복구 인터페이스 진입 후 재플래싱
- TTL 직렬 포트 사용자: 직렬 포트로 U-Boot 진입 후 펌웨어 재플래싱
- TFTP 복구: 일부 라우터는 TFTP 복구 모드를 지원합니다. 해당 모델명으로 검색하세요
정리
OpenWrt는 개발자가 네트워크를 가지고 놀기에 최고의 오픈소스 플랫폼입니다. 구형 라우터 플래싱에서 x86 소프트웨어 라우터 구축까지, 기본적인 DHCP/방화벽 설정에서 Docker + 스마트 홈까지, OpenWrt는 모든 라우터를 강력한 Linux 서버로 바꿔줍니다.
이 글에서 다룬 주요 리소스: - OpenWrt 공식 사이트 - 펌웨어 선택기 - 하드웨어 데이터베이스 - OpenWrt 포럼 - GitHub 저장소
다음 추천 읽기: - Ventoy: 멀티부팅 USB 제작의 필수 도구 — 플래싱 전 시스템 USB 제작 도구 - Linux 파일 형식 상세 설명 — 펌웨어 파일 형식 이해
이 글이 도움이 되셨다면 더 많은 개발자 분들과 공유해 주세요!