Japanese article
はじめに
初心者対応構成
- Windowsからの導入手順
- スクリプトでの自動設定
-
UCI (ttyd)、Webコンソール (LuCi)、ファイラー (SFTP)にて比較作業がおススメ
開発経緯
何も知らないド素人がひたすら検索&&モノマネ乞食を初めて早二年が過ぎた
正直スキルはたいして向上していないがAIの使い方は多少なり学んだ
OpenWrt専用の初期設定ツールも、nodeで自動化から始まり、パッケージ化なども試した
オールパッケージ化しても良いけど、メンテなんてとても手が回らないのも目に見えている
ところでそもそも、どれもしっくりこない
初期設定とは最初に一度しか使わないのだから、わざわざパッケージをインストールする必要性が無い
そしてパッケージだろうが、ダウンロードだろうが、先にネットワークに接続しないとならない
しかし、AAAA
がー、RA
がー、となり接続出来ない
つまり、鶏卵なわけだ
OpenWrt公式のファームウェアビルダーは結構優秀な感じなので
これにスキンを被せてみよう!!
これなら、そもそも鶏卵にならずにすむわけだ
やっと理想のイメージになった
ようするに、キッティングだよね
自分で使ってて便利過ぎて嗤う
ファームウェアセレクター (カスタム)
※ ブラウザのスーパーリロード: 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スクリプトとか組めるのにな