はじめに
この記事で出来る事
-
ファームウェアを「焼いたら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)がコンパイルした正規バイナリ
- いわゆる「野良ビルド」ではないため、セキュリティと安定性を確保
初心者対応構成
- Windowsからの導入手順
- スクリプトでの自動設定
-
UCI (ttyd)、Webコンソール (LuCi)、ファイラー (SFTP)にて比較作業がおススメ
掲示板
フラッシュ&インストールシステム「焼いたらMAP-E」
カスタムファームウェアビルダー
| ビルダー機能比較 | 公式 | カスタム |
|---|---|---|
| 基本機能 | ||
| デバイス検索 | ○ | ○ |
| バージョン選択 | ○ | ○ |
| パッケージ追加 | 手動入力 | プリセット + 手動入力 |
| 初回起動時設定追加 | 手動入力 | 自動生成 + 手動編集 |
| 基本設定 | ||
| 国コード | × | 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公開 |
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
OpenWrtコネクト
コンソールツール (パッケージインストール・設定)
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を実行
- ターミナル (Windows用) > セレクターで
OpenWrtデバイスのIPv4アドレスを自動判別
スタート、デスクトップにショートカット作成
OpenWrtコンソールでaios2コマンドから実行可
初回接続時のみパスワード入力が必要、2度目以降はSSH鍵認証で自動接続
-
バッチ
- ターミナル (Windows用) > セレクターで
aios2を選択 >ダウンロードをクリック >aios2.batを実行
- ターミナル (Windows用) > セレクターで
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からクラウドフレアにデプロイ
-
IPv6自動取得
auto-config.site-u.workers.dev/ -
設定ファイル
auto-config.json -
実行ファイル
auto-config.js
共有リソース
設定ファイルなど
/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
カスタムフィード
カスタムスクリプト
アドガードホーム(MAP-E / DS-LITE 対応)
| 機能比較 | OpenWrt | aios2 |
|---|---|---|
| 対応導入形態 | ||
| パッケージ | ○ | ○ |
| 公式バイナリ | × | ○ |
| 基本機能 | ||
| インストール方法 | コマンド実行 | メニュー選択 |
| 設定ファイル生成 | 手動 | 自動 |
| 認証情報設定 | Web初回起動時 | インストール時 |
| 日本環境最適化 | ||
| 日本向けDNSサーバー | × | ◯ |
| AdGuard言語フィルタ | × | ◯ |
| 設定機能 | ||
| リソースチェック | 手動 | 自動 |
| DHCPオプション | 手動 | 自動 |
| ファイアウォール | 手動 | 自動 |
| リムーブ | 手動 | 初期値復元 |
| パスワード変更 | ||
| htpasswd | × | ◯ |
| バックアップ | ||
| 既存設定バックアップ | × | /etc/config/*.bak |
| バグ対応 | ||
| ルーター自己DNS解決 | × (192.168.1.1) | ○ (0.0.0.0) |
| ビルド時 | ||
| 要件未達時 | .yaml未作成 |
設定ファイルなど
-
実行ファイル
adguardhome.sh -
設定ファイル
adguardhome.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
ファイルブラウザー
設定ファイルなど
-
技術仕様書
FileBrowser.md -
実行ファイル
filebrowser.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
システムで利用する公式情報
URL等
Table of Hardware: Full details
https://openwrt.org/toh/views/toh_extended_all
https://openwrt.org/toh/views/
https://openwrt.org/toh.json
事例(ペルソナ)
OpenWrt初学者の場合
「焼いたらMAP-E」
動機:
- 出来るだけ簡単確実に作りたい
環境:
- インターネット回線契約:NTT フレッツ 光クロス
- OpenWrt化予定デバイス:ELECOM WRC-X3200GST3
※他ネットワーク環境無し
事前準備:
- 不要
手順:
- ビルダー起動:キッティングツールを開く
- デバイス選択:デバイス名を入力、または
設定ファイルをインポート - ビルド実行:
ビルドをリクエストを実行 - フラッシュ:生成された
FACTORYイメージをデバイスの管理画面からアップロード - OpenWrt化完了:自動再起動後、インターネット利用可能
- Wi-Fi接続:SSID:
OpenWrt/ パスワード:password
- Wi-Fi接続:SSID:
- 管理画面ログイン: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のインターネット接続状態に依存しない
過去のシステム
開発経緯
何も知らないド素人がひたすら検索&&モノマネ乞食を初めて早二年が過ぎた
正直スキルはたいして向上していないが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の部分のソースを別ファイル化してグローバル化させるか
要件等だなあ
現在オフラインですね、、、

-
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は良い仕組みだけど、デフォルトパッケージ化は先走りすぎかもね





