6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OpenWrt 自動設定 ファームウェア(ビルド・初期設定)&IPoE(MAP-E・DS-Lite)

6
Last updated at Posted at 2025-08-12

:flag_jp: Japanese article
OpenWrt_icon.png

はじめに

この記事で出来る事

  • ファームウェアを「焼いたらMAP-E」で自動接続:
    ネット未接続状態から焼くだけでMAP-E・DS-Liteの設定完了

  • IPoEの自動判定自動設定:
    OCNバーチャルコネクト・v6プラス・nuro光・transix・Xpass・v6コネクト

  • 広告ブロッカーの自動設定:
    アドガードホーム・アドブロックファースト・ネクストDNS

  • APKパッケージマネージャー対応:
    従来のOPKGから変更されたAPKに対応

本ツールについて

  • OpenWrtのカスタムビルド・キッティングツールです
  • イメージビルドからパッケージイン等の自動設定機能をプリセット化

ライセンス

  • MITライセンス(商用利用可)/ GPLv2(OpenWrt部分)
    詳細: LICENSE

ファームウェア(イメージファイル)について

  • 公式ASU(Attended Sysupgrade Server)がコンパイルした正規バイナリ
  • いわゆる「野良ビルド」ではないため、セキュリティと安定性を確保

初心者対応構成

掲示板

既知の問題

25.12.0-rc1以降:

  • adguardhome.yaml: フォルダ配下に変更

ttyd: @lanではwgインターフェース拒否(最初のアドレスのみ受付)

UCI-defaults:

  • uci-defaults (setup.sh): 20KB制限

制限対象: ASUのdefaultsフィールド

SNAPSHOTビルド:

  • 週末(金曜日~日曜日)はエラーが出やすい為ビルドは週頭がおススメ

パッケージなど入れ替えタイミング

attendedsysupgrade:

  • 正規パッケージ以外アップグレードに含まない

フラッシュ&インストールシステム「焼いたらMAP-E

リポジトリ (GitHub)

site-u2023.github.io

システム構成図

ポータルサイト

site-u.pages.dev/
image.png

PORTAL.md

旧版プロトコルハンドラーの削除

※以前のバージョンを使用していた方向け

登録削除用レジストリ:delete.reg


カスタムファームウェアビルダー

site-u.pages.dev/www/

builder.png

ビルダー機能比較 公式 カスタム
基本機能
デバイス検索
バージョン選択
パッケージ追加 手動入力 プリセット + 手動入力
初回起動時設定追加 手動入力 自動生成 + 手動編集
基本設定
国コード × API連携自動設定
言語コード × API連携自動設定
タイムゾーン × API連携自動設定
ゾーンネーム × API連携自動設定
ネットワーク設定
ISP判定 × API連携自動判定
PPPoE × 認証情報手動入力
DS-Lite × API連携自動構成
MAP-E × API連携自動構成
ニチバン(SNATポート枯渇)対策 × map.shパッチ適用
アクセスポイント × 自動構成
DNS広告ブロック自動設定
アドガードホーム × YAML生成 + dnsmasq連携
アドブロックファースト × 言語別フィルター自動選択
ネクストDNS × 手動設定
高度な機能
設定インポート/エクスポート × テキスト形式
ASUサーバー生存確認 × リアルタイム表示
バグ対応
IPv4アドレスCIDR形式 × 対応済み
技術仕様
uci-defaultsサイズ制限 20KB 19KB実装/20KB
APIサーバー ASU公式 ASU公式 + 独自API
ホスティング OpenWrt公式 Cloudflare Pages
オープンソース GitHub公開 GitHub公開

インストールされたパッケージ (README.md)

初回起動時に実行されるスクリプト (README.md)

MAP-E/DS-LITEで自動判定しない場合

市販ルーターの場合:

上位ルーターのIPv6プレフィックス配布機能(DHCPv6-PD)を有効にする

各社IPv6ブリッジ機能(パススルー機能)設定

OpenWrtルーターの場合:

ネットワーク初期値前提

IPv6リレー設定

cp /etc/config/dhcp /etc/config/dhcp.bak
uci batch <<EOF
set dhcp.wan6=dhcp
set dhcp.wan6.interface='wan6'
set dhcp.wan6.master='1'
set dhcp.wan6.ra='relay'
set dhcp.wan6.dhcpv6='relay'
set dhcp.wan6.ndp='relay'
set dhcp.lan.ra='relay'
set dhcp.lan.dhcpv6='relay'
set dhcp.lan.ndp='relay'
commit dhcp
EOF
/etc/init.d/odhcpd restart

コンソールツール (パッケージインストール・設定)

image.png
mainmenu.png

all in one scripts 2 (README.md)

IPoE設定 MAP-e(OCNバーチャルコネクト・V6プラス・NURO光 ニチバン対策) DS-LITE(Transix・Xpass・v6コネクト)

利用方法

ポータルサイト利用の場合:

  • アプリ
    • ターミナル (Windows用) > セレクターでopenwrt-connect.msiを選択 > ダウンロードをクリック > openwrt-connect.msiを実行

OpenWrtデバイスのIPv4アドレスを自動判別
スタート、デスクトップにショートカット作成
OpenWrtコンソールで aios2 コマンドから実行可
初回接続時のみパスワード入力が必要、2度目以降はSSH鍵認証で自動接続

  • バッチ
    • ターミナル (Windows用) > セレクターでaios2を選択 > ダウンロードをクリック > aios2.batを実行

OpenWrtデバイスのIPv4アドレスを自動判別
OpenWrtコンソールで aios2 コマンドから実行可

コンソール利用の場合:

  • パワーシェル起動:Win+x > a > はい

  • コンソールログイン

if(!$ip){$ip="192.168.1.1"}; ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=NUL -o GlobalKnownHostsFile=NUL -o HostKeyAlgorithms=+ssh-rsa -tt root@$ip
  • aios2実行
mkdir -p /tmp/aios2 && wget --no-check-certificate -O /tmp/aios2/aios2.sh "https://site-u.pages.dev/www/aios2.sh" && chmod +x /tmp/aios2/aios2.sh && /tmp/aios2/aios2.sh
コマンド永続化
cat << 'EOF' > /usr/bin/aios2
#!/bin/sh
mkdir -p /tmp/aios2 && wget --no-check-certificate -O /tmp/aios2/aios2.sh "https://site-u.pages.dev/www/aios2.sh?t=$(date +%s)" && chmod +x /tmp/aios2/aios2.sh && exec /tmp/aios2/aios2.sh "$@"
EOF
chmod +x /usr/bin/aios2
aios2


ネットワーク自動構成API

カテゴリ 項目(JSON Key) 機能・説明
基本情報 notice 通知・警告
language / country 言語コード / 国コード
timezone / zonename タイムゾーン / ゾーン名
接続状況 ipv4 (排他表示) パブリックIPv4アドレス
ipv6 (排他表示) パブリックIPv6アドレス
isp / as ISP名称 / AS番号
MAP-E brIpv6Address IPv6アドレス (BR)
ipv4Prefix / ipv4PrefixLength IPv4プレフィックス / 長さ
ipv6Prefix / ipv6PrefixLength IPv6プレフィックス / 長さ
eaBitLength EAビット長
psid / psidlen / psIdOffset PSID / PSID長 / オフセット
ipv6Prefix_static 静的IPv6プレフィックス
DS-Lite aftrType 終端装置タイプ
aftrFqdn / aftrAddress AFTR FQDN / アドレス
aftrIpv6Address / peeraddr AFTR IPv6直値 / トンネル対向先
jurisdiction 提供元・管轄情報
設定ファイルなど

GitHubからクラウドフレアにデプロイ


共有リソース

設定ファイルなど

/www
config.js

/post-install
postinst.json
postinst.sh (aios2専用)

/uci-defaults
setup.json
setup.sh

/variables
package-manager.json

/auto-config
auto-config.js
auto-config.json

/langs
custom.**.json


公式ASUサーバー

設定ファイルなど

OpenWrt Sysupgrade Server (0.0.0)


カスタムフィード

gSpotx2f

設定ファイルなど

jerrykuku

設定ファイルなど

カスタムスクリプト

アドガードホーム(MAP-E / DS-LITE 対応)

機能比較 OpenWrt aios2
対応導入形態
パッケージ
公式バイナリ ×
基本機能
インストール方法 コマンド実行 メニュー選択
設定ファイル生成 手動 自動
認証情報設定 Web初回起動時 インストール時
日本環境最適化
日本向けDNSサーバー ×
AdGuard言語フィルタ ×
設定機能
リソースチェック 手動 自動
DHCPオプション 手動 自動
ファイアウォール 手動 自動
リムーブ 手動 初期値復元
パスワード変更
htpasswd ×
バックアップ
既存設定バックアップ × /etc/config/*.bak
バグ対応
ルーター自己DNS解決 × (192.168.1.1) ○ (0.0.0.0)
ビルド時
要件未達時 .yaml未作成
設定ファイルなど
mkdir -p /tmp && wget --no-check-certificate -O /tmp/adguardhome.sh "https://site-u.pages.dev/www/custom-scripts/adguardhome.sh" && chmod +x /tmp/adguardhome.sh && sh /tmp/adguardhome.sh

ファイルブラウザー

設定ファイルなど
mkdir -p /tmp && wget --no-check-certificate -O /tmp/filebrowser.sh "https://site-u.pages.dev/www/custom-scripts/filebrowser.sh" && chmod +x /tmp/filebrowser.sh && sh /tmp/filebrowser.sh -i

システムで利用する公式情報

サーバー死活確認

Current Status: Services

事例(ペルソナ)

OpenWrt初学者の場合

「焼いたらMAP-E」

動機:

  • 出来るだけ簡単確実に作りたい

環境:

事前準備:

  • 不要

手順:

  • ビルダー起動:キッティングツールを開く
  • デバイス選択:デバイス名を入力、または設定ファイルをインポート
  • ビルド実行:ビルドをリクエストを実行
  • フラッシュ:生成されたFACTORYイメージをデバイスの管理画面からアップロード
  • OpenWrt化完了:自動再起動後、インターネット利用可能
    • Wi-Fi接続:SSID:OpenWrt / パスワード:password
  • 管理画面ログイン:http://openwrt.lan

豆知識:

FACTORYイメージが利用出来るデバイスの場合、ストックファームウェアの「ファームウェア更新」などから直接フラッシュ可能
デバイスを文鎮化させるリスクを低減させる


SNAPSHOTでLuCIを初回起動時から利用したい場合

「LuCi入ってる!」

動機:

  • コマンド入力は不慣れなので最初からLuCIを使いたい

環境:

  • OpenWrt化予定デバイス:Buffalo WSR-6000AX8
    ※デバイスサポートが追加されたばかりでSNAPSHOTしかない

手順

  • ビルダー起動:キッティングツールを開き、SNAPSHOTを選択
  • デバイス選択:デバイス名を入力
  • パッケージ確認:Post-Install (Package installation script)を展開
  • LuCI及び日本語化パッケージがセット済み
apk-mbedtls base-files ca-bundle dnsmasq dropbear firewall4 fitblk fstools kmod-crypto-hw-safexcel kmod-gpio-button-hotplug kmod-leds-gpio kmod-nft-offload libc libgcc libustream-mbedtls logd mtd netifd nftables odhcp6c odhcpd-ipv6only ppp ppp-mod-pppoe procd-ujail uboot-envtools uci uclient-fetch urandom-seed urngd wpad-basic-mbedtls kmod-mt7915e kmod-mt7986-firmware mt7986-wo-firmware luci luci-app-ttyd openssh-sftp-server luci-mod-dashboard luci-app-attendedsysupgrade owut map coreutils-sha1sum luci-i18n-base-ja luci-i18n-package-manager-ja luci-i18n-firewall-ja luci-i18n-ttyd-ja luci-i18n-dashboard-ja luci-i18n-attendedsysupgrade-ja

豆知識:

SNAPSHOT版はLuCIが入っていない
ビルド時の post-install スクリプトは、LuCIを含む任意のパッケージを自動インストールさせることができる


OpenWrtルーターを初期化してしまった場合

「詰んだか、、、」

動機:

  • ルーターが不調で初期化したが、MAP-E設定が消えてインターネットに繋がらない

環境:

  • インターネット回線契約:NTT フレッツ 光ネクスト
  • デバイス:OpenWrt化済みルーター(初期化後)
  • 単身世帯のため他にネットワーク環境無し
  • スマホは月末でパケット残量なし

状況:

  • MAP-E設定が消えたのでIPv4が通らない
  • QiitaもGitHubも開けないので設定手順も確認できない
  • スマホのテザリングも使えない

手順:

  • OpenWrt Connect(aios2)を起動
  • インターネット接続を開くとMAP-Eが自動検出される
  • インストール実行
  • インターネット復旧

豆知識:

OpenWrt ConnectはWindowsにインストール済みであればLAN経由でルーターに接続できるため、インターネット接続の有無に関係なく起動できる
MAP-E未設定の状態ではIPv6リレーが動作しないため、クライアントPCからのIPv6ブラウジングはできない
しかしルーター自身はWAN側でRAを受け取りグローバルIPv6アドレスを保持しているため、IPv6対応のCloudflare Workers上にあるネットワーク自動構成APIと通信できる
aios2はルーター上のリモートコンソールで実行されるため、クライアントPCのインターネット接続状態に依存しない


過去のシステム

倉庫

URL等

開発経緯

何も知らないド素人がひたすら検索&&モノマネ乞食を初めて早二年が過ぎた
正直スキルはたいして向上していないがAIの使い方は多少なり学んだ
OpenWrt専用の初期設定ツールも、nodeで自動化から始まり、パッケージ化なども試した
オールパッケージ化しても良いけど、メンテなんてとても手が回らないのも目に見えている
ところでそもそも、どれもしっくりこない
初期設定とは最初に一度しか使わないのだから、わざわざパッケージをインストールする必要性が無い
そしてパッケージだろうが、ダウンロードだろうが、先にネットワークに接続しないとならない
しかし、AAAAガァーーー!!、RAガァーーー!!、となり接続出来ない
つまり、鶏卵なわけだ

OpenWrt公式ビルダーは結構優秀な感じなので
これにスキンを被せてみよう!!
これなら、そもそも鶏卵にならずにすむわけだ
やっと理想のイメージになった
ようするに、キッティング だよね
光岡風な手法だが自分で使ってて便利過ぎて嗤う
焼いたらMAP-E だわ

今後は、ファームウェアセレクターを主流に作ろうと思う
HTMLなので、機能追加やレイアウトは容易だしね

あとがき

  • 2025年8月17日
    あと、設定用スクリプトファイルを階層構造でも用意して入れたら良いかな
    最後にINIでインプットアウトプット機能を付与しておしまいかな

  • 2025年8月24日
    ASUサーバーの20KB制限は何気にキツイー
    せめて200KBくらいあれば、usteerスクリプトとか組めるのにな
    全部で17KBで収まりました

  • 2025年10月4日
    良くも悪くも全く変わらないmap.sh
    おかげでmap.shを全文書き出しから差分適用仕様に修正出来たので12.9KBにシェイプ出来た

sha1sum map-21.02.sh map-22.03.sh map-23.05.sh map-24.10.sh
7f0682eeaf2dd7e048ff1ad1dbcc5b913ceb8de4  map-21.02.sh
7f0682eeaf2dd7e048ff1ad1dbcc5b913ceb8de4  map-22.03.sh
7f0682eeaf2dd7e048ff1ad1dbcc5b913ceb8de4  map-23.05.sh
7f0682eeaf2dd7e048ff1ad1dbcc5b913ceb8de4  map-24.10.sh
  • 2025年10月6日
    ペルソナで事例を書いてみたが、OpenWrt化作業時間は正味数分だ、、、

  • 2025年10月10日
    SNAPSHOTでIPv4アドレスを変更させて焼くと、v4が死んでいた
    SNAPSHOTはv4アドレスがCIDR表記(Classless Inter-Domain Routing)形式になった
    つまり192.168.1.1/24のように記述する必要があったのにサブネットマスクの部分の/24を入れてなかったので、255.255.255.0が無い状態だったわけですね
    ちなみに、公式ビルダーも修正されてないけど、、、

  • 2025年10月12日
    ASUサーバーの生存確認を追加してみた。
    いくつかエラーパターンを仕込んどこうかな
    aiosを作り始めてから5カ月経ったが、やっと完成の目途が立った!
    というか、エラーパターン作ったら終わりかな
    あとは、ISPの部分のソースを別ファイル化してグローバル化させるか
    要件等だなあ
    現在オフラインですね、、、
    ASU.jpg

  • 2025年10月13日
    大きなバグは無さそうなので、これで一応は開発完了かな
    今後、ASUサーバーのエラーを見つけ次第、そのエラーの詳細表示するように修正する予定
    次に既存システムの集大成で、ファームウェアビルダーとaiosを統合して、同一エンジン、同一データベースで公式をフックしないで、完全独自仕様で作る予定

  • 2025年11月12日
    aios-tui.shリネーム (aios2.sh)もTUI版はほぼ完成した。
    text版がやっつけだから続けて作ろう。
    最初からwhiptailで作れば簡単だった説・・・
    ところで、このシステム全体の肝って実はネットワーク自動構成APIなんだよね
    でもこれは既存資産(internet-mape.shなど)が有ったのでAIを使って正味数十分で完成した
    つまりUI作成にほぼ全リソースを使ってる訳だけど、このAPIでmap-e設定だけで超簡単に作るならニチバン対策付きでも100行(サンプル)で作れちゃうんだよな・・・
    map.sh無しなら60行!!
    UI作るの阿呆らしくもなってくるな。。。

  • 2025年11月13日
    setup.shのmap.shパッチ適用前にmap.shをsha1sumで検証する事にした
    これで懸念だったmap.sh更新時にネットワークが不安定になる要素を排除出来た

  • 2025年11月16日
    たまに調べものの検索で、自分のスクリプトを使って頂いているのを見つけると正直嬉しいですね
    知的好奇心のまま作ってはいるが、折角の成果物、使って頂ければそれにこしたことはないです
    そういえば、このITmediaの記事もスクリプトをリニューアルするきっかけだったなー
    当時は自分が10G回線を持っていなかったし、かつスキルも無かったので対応しきれなかったですね
    結果的にも、この記事がきっかけで、このネットワーク自動構成APIが完成したようなものでしたね
    そろそろ次のお題を探そうかな

  • 2025年11月20日
    そういえば、SNAPSHOTもLuCIを標準実装してた
    LuCi自体をパッケージの項目化した方が良いのかな
    まあ削りたい人はPostinstから削れば良いだけだけどね
    逆に消極的SNAPSHOTユーザー(SNAPSHOTしか選択肢がないデバイス)には良いだろうね
    SNAPSHOTも「LuCi入ってる!」が新しいキャッチです
    aiosTUI版にカスタムフィードパッケージを実装した
    あとはカスタムスクリプトの項目を作ってAdGuardHomeとかのスクリプト群を実装する予定だけど、実装方法で考え中、、、

  • 2025年11月30日
    aios2に以下の機能を追加した

    • カスタムスクリプト:
      AdGuardHomeを追加した
    • 復元ポイント:
      パッケージ追加・設定追加変更などで自動作成するようにした
      また、一意の日付から復元ポイントを選択できるようにした
  • 2025年12月6日
    aios2もなんとかまともに動くようになった(はず)
    adguardhomeをsetup.shに詰め込んだら、計18.4KBになった
    あと1つ2つ小さいスクリプトなら入るかな

  • 2025年12月8日
    SNAPSHOTのttydがWireguardで入れなくなった
    初期値の@lanにしていたが、最初のアドレスしか受け付けなくなった為、wgインターフェースが拒否されたわけだね

  • 2025年12月10日
    パッケージマネージャーにはレジューム機能が無い!!!
    SNAPSHOTのadguardhome.yamlがフォルダ配下になっていた
    Argonはそういえばapk対応になってるんだよね
    修正大忙し。。。

  • 2025年12月11日
    ブラウザのF12(開発者ツール)の使い方を初めて理解した。。。
    Console > allow pasting (要手打ち) > Enter (セキュリティ許可)
    で利用出来る、知らんわそんなん、今知った!

  • 2025年12月22日
    さようなら OPKG ( ;∀;)
    影響が大きいバグは片づけたけど、小さいのが散見。。。
    キッティングツールもaios2も25.12のRCもSNAPSHOTも動いた
    次はバグのまま放置プレイなfilebrowser.shを仕上げるかな
    そういえばMLOは実装はしてあるけどまだ動かないね

  • 2026年1月14日
    ipv4.web.fc2.com/map-e.htmlも古くなってきたね。
    5レコード追加したけど、OCN以外も増えてるだろうね。

  • 2026年1月15日
    OCNは3/4レコードくらい間違っていた
    v6プラスのBRを書いてなかった
    数か月の間壊れたままだった・・・
    OCNはFC2データから生データに差し替えた
    一部設定値が違うが実はこちらが正しい
    (どちらも必要な値は同じになるので結果は同じだ)

  • 2026年1月23日
    Velop WRT Pro 7も、aios2に対応させようかと思って、map.shのハッシュ値を調べた

wget -qO- https://raw.githubusercontent.com/openwrt/openwrt/openwrt-19.07/package/network/ipv6/map/files/map.sh | sha1sum
431ad78fc976b70c53cdc5adc4e09b3eb91fd97f  -
  • 2026年1月27日
# 21.02以降
network.wan.device
# 19.07
network.wan.ifname

なんと後方互換でifnameで全部動く!
おかげでバグに気が付かなかった・・・

  • 2026年2月1日
    AIに言われたまま題名変えたけど、効果あるのかな???

  • 2026年2月15日
    この数日packages.adbが落ちていたけど、やっと復旧した。
    原因:https://github.com/openwrt/openwrt/commit/8c6ed4e927373282b654420ad3962a6a0ea110c3

  • 2026年2月18日
    次が出てこないのは、25.12.0-RC4の自己DDoSがあるからか?
    ワーカー3台にスパイク10,000リクエスト
    リリース出したら完全終わるよな。。。
    早急にサーバー増やすか段階的ロールアウトやレート制限するしかないよね
    attendedsysupgradeは良い仕組みだけど、デフォルトパッケージ化は先走りすぎかもね

6
3
9

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?