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원)

집에 굴러다니는 옛날 라우터가 있다면, 먼저 호환성을 확인하세요:

  1. OpenWrt 하드웨어 데이터베이스에 접속
  2. 라우터 브랜드와 모델명 입력
  3. 지원 상태 확인: 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가 이미 활성화된 경우):

BASH
# 라우터에 SSH 로그인
ssh root@192.168.1.1

# 전체 펌웨어 백업(TFTP로 로컬 컴퓨터에 전송)
cat /dev/mtd0 > /tmp/original_firmware.bin
# 라우터에서 이 파일을 다운로드

TTL 직렬 포트를 통한 백업(범용 방법):

BASH
# USB-TTL 모듈 필요(CH340/CP2102, 약 ¥10)
# 연결 후 컴퓨터에서 실행
minicom -D /dev/ttyUSB0 -b 115200

# U-Boot 진입 후 백업 명령 실행

Step 2: OpenWrt 플래싱

방법 A: 웹 인터페이스를 통한 플래싱 (가장 간단)

  1. 해당 모델에 맞는 OpenWrt 펌웨어 이미지(.bin 파일) 다운로드 - OpenWrt Firmware Selector로 이동 - 기기 모델 입력, 최신 버전 선택
  2. 라우터 관리 페이지 로그인(대개 192.168.1.1)
  3. 「시스템 도구 → 펌웨어 업그레이드」 찾기
  4. .bin 파일 업로드, 자동 재부팅 대기

방법 B: Breed 부트로더를 통한 플래싱 (추천, 벽돌 방지)

Breed는 불사의 U-Boot 부트로더로, Breed를 플래싱하면 벽돌 위험에서 거의 해방됩니다.

BASH
# 1. 먼저 Breed 플래싱(라우터에 SSH가 활성화되어 있거나 TTL을 통해)
# breed 파일은 일반적으로 .bin 포맷

# 2. 라우터 Reset 버튼을 누른 채 전원을 켜면 Breed Web 인터페이스로 진입
# 브라우저에서 192.168.1.1 접속

# 3. Breed 인터페이스에서 OpenWrt 펌웨어 선택 후 플래싱
# Breed는 복구를 지원하므로 잘못 플래싱해도 다시 플래싱 가능

방법 C: x86 소프트웨어 라우터 USB 설치

BASH
# 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(비밀번호 없음)
BASH
# 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: 네트워크 기본 설정

BASH
# 네트워크 설정 파일 편집
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가 활성화되어 있으며, 주소 풀을 커스터마이징할 수 있습니다:

BASH
# 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):

BASH
# /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 관리 인터페이스 등):

BASH
# 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) 사용:

BASH
# 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 설치(추천)

BASH
# 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 사용(더 가벼움)

BASH
opkg install adbyby
/etc/init.d/adbyby enable
/etc/init.d/adbyby start

5. VPN 서버

WireGuard VPN 구축(2026년 가장 추천하는 VPN 솔루션):

BASH
# 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

설정 파일 예시:

INI
[Interface]
PrivateKey = <서버 개인키>
Address = 10.8.0.1/24
ListenPort = 51820

# 클라이언트 1
[Peer]
PublicKey = <클라이언트 공개키>
AllowedIPs = 10.8.0.2/32
BASH
# WireGuard 시작
wg-quick up wg0

# 부팅 시 자동 시작 설정
/etc/init.d/wireguard enable

고급 활용법

Docker 컨테이너 지원

OpenWrt에서 Docker를 실행하면 확장성이 무한해집니다!

BASH
# 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 실행(스마트 홈):

BASH
# 영구 저장 디렉터리 생성
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 경유):

BASH
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로 내부 네트워크 우회 구현:

BASH
# frp 클라이언트 설치
opkg install frp

# frpc 설정
vi /etc/frpc/frpc.toml
TOML
serverAddr = "frp 서버 IP"
serverPort = 7000

[[proxies]]
name = "web"
type = "tcp"
localIP = "127.0.0.1"
localPort = 80
remotePort = 8080
BASH
# frp 시작
/etc/init.d/frpc enable
/etc/init.d/frpc start

트래픽 모니터링

BASH
# nlbwmon 설치(경량 트래픽 통계)
opkg install nlbwmon luci-app-nlbwmon

# 또는 더 강력한 BanDaWidth 설치
opkg install bandwidth

# 실시간 트래픽 모니터링 설치(iftop의 OpenWrt 버전)
opkg install iftop

# 어떤 IP가 대역폭을 가장 많이 쓰는지 실시간 확인
iftop -i br-lan

IPv6 지원

OpenWrt의 IPv6 지원은 매우 성숙합니다:

BASH
# 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

일상 유지보수

펌웨어 업데이트

BASH
# 방식 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

설정 백업 및 복구

BASH
# 현재 설정 백업
sysupgrade -b /tmp/config-backup.tar.gz

# 백업에서 복구
sysupgrade -r /tmp/config-backup.tar.gz

# 백업 내용 확인
tar tzf /tmp/config-backup.tar.gz

자주 쓰는 opkg 명령

BASH
# 소프트웨어 소스 업데이트
opkg update

# 패키지 검색
opkg find luci-app-*

# 패키지 설치
opkg install <패키지명>

# 설치된 패키지 목록
opkg list-installed

# 패키지 제거
opkg remove <패키지명>

# 캐시 정리
opkg clean

문제 해결 FAQ

1. OpenWrt 플래싱 후 인터넷이 안 될 때

BASH
# 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 웹 인터페이스에 접속할 수 없을 때

BASH
# uhttpd 서비스 상태 확인
/etc/init.d/uhttpd status

# 웹 서비스 재시작
/etc/init.d/uhttpd restart

# 방화벽 규칙 확인
iptables -L -n

3. WiFi가 시작되지 않을 때

BASH
# 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)이 됐을 때

  1. Breed 사용자: Reset 버튼을 누른 채 전원을 켜서 Breed Web 복구 인터페이스 진입 후 재플래싱
  2. TTL 직렬 포트 사용자: 직렬 포트로 U-Boot 진입 후 펌웨어 재플래싱
  3. TFTP 복구: 일부 라우터는 TFTP 복구 모드를 지원합니다. 해당 모델명으로 검색하세요

정리

OpenWrt는 개발자가 네트워크를 가지고 놀기에 최고의 오픈소스 플랫폼입니다. 구형 라우터 플래싱에서 x86 소프트웨어 라우터 구축까지, 기본적인 DHCP/방화벽 설정에서 Docker + 스마트 홈까지, OpenWrt는 모든 라우터를 강력한 Linux 서버로 바꿔줍니다.

이 글에서 다룬 주요 리소스: - OpenWrt 공식 사이트 - 펌웨어 선택기 - 하드웨어 데이터베이스 - OpenWrt 포럼 - GitHub 저장소

다음 추천 읽기: - Ventoy: 멀티부팅 USB 제작의 필수 도구 — 플래싱 전 시스템 USB 제작 도구 - Linux 파일 형식 상세 설명 — 펌웨어 파일 형식 이해

이 글이 도움이 되셨다면 더 많은 개발자 분들과 공유해 주세요!