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 Web インターフェース) |
| 更新サイクル | メーカー次第(数年更新されないことも) | コミュニティ維持、継続的に更新 |
| ソースコード | 通常クローズド | 完全にオープン(GPL-2.0) |
OpenWrt vs DD-WRT vs Padavan
OpenWrt はエコシステムが最も豊富なオープンソースルーターシステムだ。比較すると: - DD-WRT:歴史は長いが、パッケージ管理は OpenWrt ほど柔軟ではない - Padavan(老毛子):中国国内で人気があるが、主に特定のチップ向けでカスタマイズ性に限りがある - LEDE:2018 年に OpenWrt と統合され、独立版はもう存在しない
ハードウェア選び:2026 年、OpenWrt 書き込みに最適なデバイス
選択肢1:旧ルーターの再利用(ゼロコスト)
家に使わなくなったルーターがあるなら、まず互換性をチェックしよう:
- OpenWrt ハードウェアデータベースにアクセス
- ルーターのブランドとモデル名を入力
- サポート状況を確認:
Supported(完全対応)/Technically available(使用可能だが要工夫)/Unsupported(非対応)
対応状況の良いルーター例: - Xiaomi 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 | 低消費電力(TDP 6W)、性能十分すぎる |
| 暢網 N5105 / N6005 | ¥400-800 | 4 LAN ポート、ソフトウェアールーターの定番 |
| 倍控 J4125 産業用 PC | ¥500-900 | 6 LAN ポート、安定可靠 |
| 旧ノートパソコン | ¥0 | UPS(バッテリー)付き、省エネ |
2026 年の推奨:Intel N100 ミニ PC が最もコスパが良い。TDP わずか 6W、4 コア 4 スレッド、OpenWrt + Docker を余裕で実行。中古価格 300 元前後。
選択肢3:開発ボード
- Raspberry Pi 4 / 5:OpenWrt 公式サポート、入門学習に最適
- NanoPi R4S / R5S:友善電子製、デュアル LAN ポート、ソフトウェアールーターの人気選択
- RK3568 / RK3588 開発ボード:高性能だが、ある程度のスキルが必要
ファームウェア書き込みチュートリアル
⚠️ 警告:ファームウェア書き込みにはリスクがあり、操作を誤るとルーターが文鎮化する可能性がある。事前にルーター型番固有の書き込みチュートリアルを検索することを推奨する。
ステップ1:純正ファームウェアのバックアップ
書き込み前に必ずバックアップ!万が一の時に復旧できる。
SSH 経由でバックアップ(SSH が有効な場合):
# ルーターに SSH ログイン
ssh root@192.168.1.1
# ファームウェア全体をバックアップ(TFTP でローカル PC に送信)
cat /dev/mtd0 > /tmp/original_firmware.bin
# その後、ルーターからこのファイルをダウンロード
TTL シリアル経由でバックアップ(汎用方法):
# USB-TTL モジュールが必要(CH340/CP2102、約 ¥10)
# 接続後、PC で以下を実行
minicom -D /dev/ttyUSB0 -b 115200
# U-Boot に入ったらバックアップコマンドを実行
ステップ2:OpenWrt の書き込み
方法 A:Web インターフェース経由(最も簡単)
- 対象機種の OpenWrt ファームウェアイメージ(
.binファイル)をダウンロード - OpenWrt Firmware Selector へアクセス - デバイス型番を入力し、最新バージョンを選択 - ルーター管理ページにログイン(通常は
192.168.1.1) - 「システムツール → ファームウェアアップグレード」を見つける
.binファイルをアップロード、自動再起動を待つ
方法 B:Breed ブートローダー経由(推奨、文鎮化防止)
Breed は不滅の U-Boot ブートローダーで、書き込んでおけば文鎮化の心配がほぼなくなる。
# 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 メモリに書き込み(/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 が自動的に内蔵 HDD に書き込む
ステップ3:初回設定
書き込み成功後、OpenWrt のデフォルト設定:
- LAN IP:
192.168.1.1 - Web インターフェース:
http://192.168.1.1(LuCI) - SSH:
ssh root@192.168.1.1(パスワードなし)
# SSH ログイン(初回はパスワードなし、そのまま Enter)
ssh root@192.168.1.1
# root パスワードを設定
passwd
# パッケージリストを更新
opkg update
# 中国語言語パックをインストール
opkg install luci-i18n-base-zh-cn
# Web インターフェースをリフレッシュ、中国語表示に切り替わる
ステップ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 を割り当てる:
# /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 Web インターフェース経由:ネットワーク → ファイアウォール → ポートフォワーディング
# またはコマンドライン:
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
# 複数の 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
内部ネットワーク穿透(NAT 越え)
frp で NAT 越えを実現:
# 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 Web インターフェース経由
# システム → バックアップ/アップグレード → 新ファームウェアをダウンロード → 書き込み
# 方法 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
よくあるトラブルシューティング
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 Web インターフェースにアクセスできない
# uhttpd サービスの状態を確認
/etc/init.d/uhttpd status
# Web サービスを再起動
/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. デバイスが文鎮化したらどうするか
- Breed ユーザー:Reset ボタンを押しながら電源投入、Breed Web 復旧画面に入り再書き込み
- TTL シリアルユーザー:シリアル経由で U-Boot に入り、ファームウェアを再書き込み
- TFTP 復旧:一部のルーターは TFTP 復旧モードに対応、詳細は型番ごとに検索
まとめ
OpenWrt は開発者がネットワークを弄るための最適なオープンソースプラットフォームだ。旧ルーターの改造から x86 ソフトウェアールーターの構築、基本的な DHCP/ファイアウォール設定から Docker + スマートホームまで、OpenWrt は一台一台のルーターを強力な Linux サーバーに変える。
本記事の主要リソース: - OpenWrt 公式サイト - ファームウェアセレクター - ハードウェアデータベース - OpenWrt フォーラム - GitHub リポジトリ
次のステップで読むべき記事: - Ventoy:マルチブート USB メモリ作成の神器 — ファームウェア書き込み前のブートメディア作成ツール - Linux ファイル形式详解 — ファームウェアファイル形式を理解する
この記事が役に立ったなら、ぜひ他の開発者にもシェアしてほしい!