0
0

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ファームウェアをダウンロード

Last updated at Posted at 2025-08-12

:flag_jp:Japanese article

はじめに

初心者対応構成

開発経緯

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

OpenWrt公式のファームウェアビルダーは結構優秀な感じなので
これにスキンを被せてみよう!!
これなら、そもそも鶏卵にならずにすむわけだ
やっと理想のイメージになった
ようするに、キッティングだよね
自分で使ってて便利過ぎて嗤う

既知の問題

SNAPSHOT:
調整中

ファームウェアセレクター:
setup.sh: 20KB制限
※ 制限対象: ASUのdefaultsフィールド

MAP-E:
起動完了後接続迄要数分

ファームウェアセレクター (カスタム)

※ ブラウザのスーパーリロード: Ctrl + Shift + R (または Shift + F5)

SNAPSHOT版動作不良


ランディングページ


ネットワーク自動構成API

サンプル

OpenWrt
#!/bin/sh
cat > "/tmp/openwrt-network-auto-config.sh" << 'SCRIPT_END'
#!/bin/sh
set -eu
API_RESPONSE="$(wget -qO- https://auto-config.site-u.workers.dev/)"
echo "NOTICE=$(echo "$API_RESPONSE" | jsonfilter -e '@.notice')"
echo "IPV4=$(echo "$API_RESPONSE" | jsonfilter -e '@.ipv4')"
echo "IPV6=$(echo "$API_RESPONSE" | jsonfilter -e '@.ipv6')"
echo "COUNTRY=$(echo "$API_RESPONSE" | jsonfilter -e '@.country')"
echo "TIMEZONE=$(echo "$API_RESPONSE" | jsonfilter -e '@.timezone')"
echo "ZONENAME=$(echo "$API_RESPONSE" | jsonfilter -e '@.zonename')"
echo "ISP=$(echo "$API_RESPONSE" | jsonfilter -e '@.isp')"
echo "AS=$(echo "$API_RESPONSE" | jsonfilter -e '@.as')"
echo "REGION_NAME=$(echo "$API_RESPONSE" | jsonfilter -e '@.regionName')"
echo "REGION_CODE=$(echo "$API_RESPONSE" | jsonfilter -e '@.region')"
echo "AFTR_TYPE=$(echo "$API_RESPONSE" | jsonfilter -e '@.aftr.aftrType')"
echo "AFTR_JURISDICTION=$(echo "$API_RESPONSE" | jsonfilter -e '@.aftr.jurisdiction')"
echo "AFTR_IPV6=$(echo "$API_RESPONSE" | jsonfilter -e '@.aftr.aftrIpv6Address')"
echo "MAPE_BR_IPV6=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.brIpv6Address')"
echo "MAPE_EA_BITS=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.eaBitLength')"
echo "MAPE_IPV4_PREFIX=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv4Prefix')"
echo "MAPE_IPV4_PLEN=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv4PrefixLength')"
echo "MAPE_IPV6_PREFIX=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv6Prefix')"
echo "MAPE_IPV6_PLEN=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.ipv6PrefixLength')"
echo "MAPE_PSID_OFFSET=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.psIdOffset')"
echo "MAPE_PSIDLEN=$(echo "$API_RESPONSE" | jsonfilter -e '@.mape.psidlen')"
SCRIPT_END
sh "/tmp/openwrt-network-auto-config.sh"

Linux
#!/bin/bash
set -eu

if ! command -v jq &> /dev/null; then
    echo "Error: jq is not installed. Please install it first:"
    echo "  sudo apt-get install jq"
    exit 1
fi

API_RESPONSE="$(curl -s https://auto-config.site-u.workers.dev/)"

echo "NOTICE=$(echo "$API_RESPONSE" | jq -r '.notice // empty')"
echo "IPV4=$(echo "$API_RESPONSE" | jq -r '.ipv4 // empty')"
echo "IPV6=$(echo "$API_RESPONSE" | jq -r '.ipv6 // empty')"
echo "COUNTRY=$(echo "$API_RESPONSE" | jq -r '.country // empty')"
echo "TIMEZONE=$(echo "$API_RESPONSE" | jq -r '.timezone // empty')"
echo "ZONENAME=$(echo "$API_RESPONSE" | jq -r '.zonename // empty')"
echo "ISP=$(echo "$API_RESPONSE" | jq -r '.isp // empty')"
echo "AS=$(echo "$API_RESPONSE" | jq -r '.as // empty')"
echo "REGION_NAME=$(echo "$API_RESPONSE" | jq -r '.regionName // empty')"
echo "REGION_CODE=$(echo "$API_RESPONSE" | jq -r '.region // empty')"
echo "AFTR_TYPE=$(echo "$API_RESPONSE" | jq -r '.aftr.aftrType // empty')"
echo "AFTR_JURISDICTION=$(echo "$API_RESPONSE" | jq -r '.aftr.jurisdiction // empty')"
echo "AFTR_IPV6=$(echo "$API_RESPONSE" | jq -r '.aftr.aftrIpv6Address // empty')"
echo "MAPE_BR_IPV6=$(echo "$API_RESPONSE" | jq -r '.mape.brIpv6Address // empty')"
echo "MAPE_EA_BITS=$(echo "$API_RESPONSE" | jq -r '.mape.eaBitLength // empty')"
echo "MAPE_IPV4_PREFIX=$(echo "$API_RESPONSE" | jq -r '.mape.ipv4Prefix // empty')"
echo "MAPE_IPV4_PLEN=$(echo "$API_RESPONSE" | jq -r '.mape.ipv4PrefixLength // empty')"
echo "MAPE_IPV6_PREFIX=$(echo "$API_RESPONSE" | jq -r '.mape.ipv6Prefix // empty')"
echo "MAPE_IPV6_PLEN=$(echo "$API_RESPONSE" | jq -r '.mape.ipv6PrefixLength // empty')"
echo "MAPE_PSID_OFFSET=$(echo "$API_RESPONSE" | jq -r '.mape.psIdOffset // empty')"
echo "MAPE_PSIDLEN=$(echo "$API_RESPONSE" | jq -r '.mape.psidlen // empty')"


firmware-selector-openwrt-org


あとがき

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

ふぅぅ、一応ほぼほぼ出来た
「焼いたらMAP-E」がキャッチだな(笑)
細かいデザイン (CSS)は調整が必要だが、大枠は動くね

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

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

0
0
0

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?