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:旧ルーターの再利用(ゼロコスト)

家に使わなくなったルーターがあるなら、まず互換性をチェックしよう:

  1. OpenWrt ハードウェアデータベースにアクセス
  2. ルーターのブランドとモデル名を入力
  3. サポート状況を確認: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 が有効な場合):

BASH
# ルーターに SSH ログイン
ssh root@192.168.1.1

# ファームウェア全体をバックアップ(TFTP でローカル PC に送信)
cat /dev/mtd0 > /tmp/original_firmware.bin
# その後、ルーターからこのファイルをダウンロード

TTL シリアル経由でバックアップ(汎用方法):

BASH
# USB-TTL モジュールが必要(CH340/CP2102、約 ¥10)
# 接続後、PC で以下を実行
minicom -D /dev/ttyUSB0 -b 115200

# U-Boot に入ったらバックアップコマンドを実行

ステップ2:OpenWrt の書き込み

方法 A:Web インターフェース経由(最も簡単)

  1. 対象機種の OpenWrt ファームウェアイメージ(.bin ファイル)をダウンロード - OpenWrt Firmware Selector へアクセス - デバイス型番を入力し、最新バージョンを選択
  2. ルーター管理ページにログイン(通常は 192.168.1.1)
  3. 「システムツール → ファームウェアアップグレード」を見つける
  4. .bin ファイルをアップロード、自動再起動を待つ

方法 B:Breed ブートローダー経由(推奨、文鎮化防止)

Breed は不滅の U-Boot ブートローダーで、書き込んでおけば文鎮化の心配がほぼなくなる。

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 メモリに書き込み(/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(パスワードなし)
BASH
# SSH ログイン(初回はパスワードなし、そのまま Enter)
ssh root@192.168.1.1

# root パスワードを設定
passwd

# パッケージリストを更新
opkg update

# 中国語言語パックをインストール
opkg install luci-i18n-base-zh-cn

# Web インターフェースをリフレッシュ、中国語表示に切り替わる

ステップ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 を割り当てる:

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

BASH
# 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 をインストール(推奨)

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

内部ネットワーク穿透(NAT 越え)

frp で NAT 越えを実現:

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

設定のバックアップと復元

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

よくあるトラブルシューティング

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 Web インターフェースにアクセスできない

BASH
# uhttpd サービスの状態を確認
/etc/init.d/uhttpd status

# Web サービスを再起動
/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. デバイスが文鎮化したらどうするか

  1. Breed ユーザー:Reset ボタンを押しながら電源投入、Breed Web 復旧画面に入り再書き込み
  2. TTL シリアルユーザー:シリアル経由で U-Boot に入り、ファームウェアを再書き込み
  3. TFTP 復旧:一部のルーターは TFTP 復旧モードに対応、詳細は型番ごとに検索

まとめ

OpenWrt は開発者がネットワークを弄るための最適なオープンソースプラットフォームだ。旧ルーターの改造から x86 ソフトウェアールーターの構築、基本的な DHCP/ファイアウォール設定から Docker + スマートホームまで、OpenWrt は一台一台のルーターを強力な Linux サーバーに変える。

本記事の主要リソース: - OpenWrt 公式サイト - ファームウェアセレクター - ハードウェアデータベース - OpenWrt フォーラム - GitHub リポジトリ

次のステップで読むべき記事: - Ventoy:マルチブート USB メモリ作成の神器 — ファームウェア書き込み前のブートメディア作成ツール - Linux ファイル形式详解 — ファームウェアファイル形式を理解する

この記事が役に立ったなら、ぜひ他の開発者にもシェアしてほしい!