Tech Note Plus

PC から Azure まで幅広い伝道を目指してます

OpenWrt 環境を 25.12.3 から 25.12.4 にバージョン アップしてみつつ adblock の仕様変更に追随してみた

2026/5/13 付けで OpenWrt の新しい Stable Release 版 25.12.4 がリリースされましたので、環境に導入してみました。実は、前回の 25.12.3 の時点で adblock の仕様が変更されたようで一部期待通りの動きをしなくなっていたのでそちらも調査しています。 cube309b.hatenablog.com

現行環境

バージョン

25.12.3 でした。

必須要件

どうしても無いと困る機能は以下となります。(ファイアウォール機能とか DHCP 機能とか基本機能は別)

  • IPv6 接続でありながら固定の IPv4 アドレスを設定
  • WireGuard を用いて実家へ VPN 接続
  • WireGuard を用いて自宅へ VPN 接続 (外部からという意味)
  • IPsec を用いて Azure へ VPN 接続
  • adblock で広告ブロック
結論

バージョン アップといっても新規にインストールしているので無事に完了しました。画面的には変化なし。

性能的にも特に変化なくです。計測時間の違いによる誤差かなと。

いざバージョン アップ

イメージ作成

イメージ作成や設定自体は問題なかったものの、adblock の実装の仕組みがまた変更されたようで前回の 25.12.3 の時からうまく広告ブロックが動いていない感じでした(> <)

どうやら adblock 4.5.5 系になってサブ カテゴリが設定されていないフィードは無視されるようになったようです。というわけで hagezi と stevenblack が動いておりませんでした。サブ カテゴリの無いフィードはそのままでも動いていたため気付くのが遅れました・・・

サブ カテゴリの有無はフィードの作成者側の判断になるので自分にあったものを選択する必要があります。今回はこんな感じで設定しました。

uci add_list adblock.global.adb_hag_feed="wildcard/pro-onlydomains.txt"
uci add_list adblock.global.adb_stb_feed="hosts"

【hagezi フィルター ドメイン リスト】
https://raw.githubusercontent.com/hagezi/dns-blocklists/main/wildcard/pro-onlydomains.txt

【stevenblack フィルター ドメイン リスト】
https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

あとは、allow list も含めておくとホワイト リスト的にブロックしなくなるのでそれも活用します。

設定 (割愛)

今まで作りためた設定用のコンフィグを流すだけの地味な作業なので割愛します。

OpenWrt のバージョン アップを終えて

なぜなのか adblock 系はしょっちゅう仕様変更にハマっていて期待通り動かない気がしますけど、今回も AI の力で何とか解決できました。


Note
・ 当ブログは個人主催であり、ブログ中のすべての情報は個人的な観点となります。
・ 情報については正確な内容となるよう努めますが、完全性や正確性、有用性、安全性、最新性について一切保証できかねます。

OpenWrt 環境を 25.12.2 から 25.12.3 にバージョン アップしてみた

2026/5/4 付けで OpenWrt の新しい Stable Release 版 25.12.3 がリリースされましたので、環境に導入してみました。

現行環境

バージョン

25.12.2 でした。

必須要件

どうしても無いと困る機能は以下となります。(ファイアウォール機能とか DHCP 機能とか基本機能は別)

  • IPv6 接続でありながら固定の IPv4 アドレスを設定
  • WireGuard を用いて実家へ VPN 接続
  • WireGuard を用いて自宅へ VPN 接続 (外部からという意味)
  • IPsec を用いて Azure へ VPN 接続
  • adblock で広告ブロック
結論

バージョン アップといっても新規にインストールしているので無事に完了しました。画面的には変化なし。

性能的にも特に変化なくです。計測時間の違いによる誤差かなと。

いざバージョン アップ

イメージ作成

マイナーなだけあって特にバージョン アップ自体はそれほど苦労しませんでした。

設定 (割愛)

今まで作りためた設定用のコンフィグを流すだけの地味な作業なので割愛します。

OpenWrt のバージョン アップを終えて

前回はメジャー バージョン アップだったこともありとても大変でした。でも AI を利用することでトラブル時の対応もより簡単になったことも分かり、自信をもって作業を行うことができました。 cube309b.hatenablog.com


Note
・ 当ブログは個人主催であり、ブログ中のすべての情報は個人的な観点となります。
・ 情報については正確な内容となるよう努めますが、完全性や正確性、有用性、安全性、最新性について一切保証できかねます。

OpenWrt 環境を 24.10.5 から 25.12.2 にバージョンアップしてみたら大ハマりしたけど AI に助けてもらった話 (VPN 編)

2026/3/26 付けでリリースされた OpenWrt の 25.12.2 インストールでのトラブル対応記事になります。全体的な話はこちら。 cube309b.hatenablog.com

トラブル #9:Azure との VPN 接続で IPsec CHILD_SA rekey が連続で失敗する問題!

Azure との IPsec VPN は仕事でたまに利用することがあるため随時ではないものの必要な機能の一つになるのですが、いろいろと気になるところをこの際だから AI に見てもらっていた時に問題が発覚しました。 cube309b.hatenablog.com

ファイアウォールにて、IPsec の IKE keepalive は正常にやり取りされているものの CHILD_SA の rekey が連続失敗しているログが見つかりました。具体的には MS_STATUS(13816) エラーが 10〜15 秒間隔で繰り返し発生しています。

CHILD_SA rekeying failed, trying again in 14 seconds
received MS_NOTIFY_STATUS notify error

ipsec statusall コマンドで確認すると IKE SA は ESTABLISHED だが CHILD_SA の行が表示されていなかったので、実際にデータを流すトンネルがなく通信不可ということになります。(でも、Ping は通っていたような・・・。

Security Associations (2 up, 0 connecting):
AzureEast[1]: ESTABLISHED ...
← CHILD_SA がない!

ただ、思い起こせばたまに仕事にて利用するときに VPN が切れていたことはあった気がしたのでもしかしたらこれの延長の話なのかもという予測はできました。というわけで Azure の VPN の仕様などを加味しながら ipsec.confg の中身をいくつか修正して終わりです。

No. パラメーター名 変更前 変更後
1 ikelifetime 60m 28800s
2 keylife 20m 27000s
3 rekeymargin 3m 540s
4 keyingtries 1 %forever
5 closeaction - restart
6 dpdaction - restart
7 dpddelay - 30s

/etc/ipsec.conf の conn %default セクションは結果、以下のようになりました。

conn %default
      ikelifetime=28800s
      keylife=27000s
      rekeymargin=540s
      keyingtries=%forever
      authby=secret
      keyexchange=ikev2
      mobike=no
      closeaction=restart
      dpdaction=restart
      dpddelay=30s

AI を活用したトラブル シュートを終えて

Azure MCP Server なども利用して実機の環境を見てもらうなどもはや自分をはるかに超越した調査をしてくれました。ありがたや。


Note
・ 当ブログは個人主催であり、ブログ中のすべての情報は個人的な観点となります。
・ 情報については正確な内容となるよう努めますが、完全性や正確性、有用性、安全性、最新性について一切保証できかねます。

OpenWrt 環境を 24.10.5 から 25.12.2 にバージョンアップしてみたら大ハマりしたけど AI に助けてもらった話 (広告編)

2026/3/26 付けでリリースされた OpenWrt の 25.12.2 インストールでのトラブル対応記事になります。全体的な話はこちら。 cube309b.hatenablog.com

トラブル #4:「ブロックされたドメインが 0」問題!

通常、何らかのフィルターを読み込ませるとブロック予定のドメイン数が表示されるのですが、全ての設定が終わっても 0 という状態でした。

これは以前にもあったトラブルで adblock.custom.feeds の記述書式が変更されたことにより、以前の定義をそのままコピーしたりすると無効になってしまうというものです。AI にお願いして 25.x 系での新書式を調べてもらって事なきを得ました。

旧書式 (tofu フィルターの例)

{
    "tofu": {
        "url": "https://raw.githubusercontent.com/tofukko/filter/master/Adblock_Plus_list.txt",
        "rule": "BEGIN{FS=\"[|^]\"}/^\|\|([[:alnum:]_-]{1,63}\.)+[[:alpha:]]+\^(\$third-party)?$/{print tolower($3)}",
        "size": "S",
        "descr": "ads_analysis"
    }
}

新書式 (25.x 系)

{
    "tofu": {
        "url": "https://raw.githubusercontent.com/tofukko/filter/master/Adblock_Plus_list.txt",
        "rule": "feed || 3 [|^]",
        "size": "S",
        "descr": "ads_analysis"
    }
}

トラブル #5:そもそも tofu フィルターは DNS ベースの環境では効果が薄かった問題!

いろいろ検討した結果以下の記事の通り、日本語環境対応用に tofu フィルターを採用していました。 cube309b.hatenablog.com

ところが今回のトラブル シュートをする中で AI からしれっと一言「tofu フィルターはブラウザ拡張用ルール(CSS 要素非表示)が大半で DNS レベル ブロックにはほぼ無効」と言われてしまいました。これは完全に私の知識不足です。

というわけで DNS 型のブロックで有効そうなフィルターを見繕ってきてもらいました。

No. フィルター名 提供元 信頼の根拠
1 hagezi ドイツのセキュリティ研究者 hagezi 氏個人 GitHub 上で最も頻繁に更新される DNS ブロック リストの一つ。コミュニティ レビューも活発。OpenWrt adblock の公式プリセットにも採用
2 certpl ポーランド政府の CERT 国家機関が運営する公的なフィッシング ドメイン リスト。世界中のフィッシングサイトを収集・公開している
3 phishing_army Phishing Army プロジェクト PhishTank、OpenPhish 等の複数の信頼できるソースを統合した老舗リスト。フィッシング対策に特化しており、誤検知率が低い
4 stevenblack Steven Black 氏個人 GitHub で最も有名なブロック リスト。複数の信頼できるリスト(adaway, malwaredomainlist 等)を統合。10 年以上の運用実績があり、コミュニティが大きい

新書式 (25.x 系) での adblock.custom.feeds の記載は以下の通りとなりました。

{
    "hagezi": {
        "url": "https://raw.githubusercontent.com/hagezi/dns-blocklists/main/domains/light.txt",
        "rule": "feed 1",
        "size": "L",
        "descr": "compilation"
    },
    "certpl": {
        "url": "https://hole.cert.pl/domains/v2/domains.txt",
        "rule": "feed 1",
        "size": "L",
        "descr": "phishing"
    },
    "phishing_army": {
        "url": "https://phishing.army/download/phishing_army_blocklist_extended.txt",
        "rule": "feed 1",
        "size": "S",
        "descr": "phishing"
    },
    "stevenblack": {
        "url": "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts",
        "rule": "feed 0.0.0.0 2",
        "size": "L",
        "descr": "compilation"
    }
}

トラブル #6:インターフェースと adblock の起動タイミングが合わず、フィルターが読まれない問題!

これも以前に遭遇した問題で、OS の再起動等の過程でうまくネットワークが起動しきってない状態で adblock のサービスが起動することでフィルターが読み込まれずやっぱり「ブロックされたドメインが 0」問題が発生します。

任意のタイミングで adblock をリロードすると正常に読み込まれるためやっぱり起動時のタイミングの問題ということになります。以前は rc.local 上で起動遅延を入れて回避していたのですが、フィルターを変えたため時間調整が必要になりました。

単純に時間を延ばしたり、起動するまで非同期のループ処理を入れるなど AI に相談して試したのですが上手く行かず。結局、サービスの基本機能でのインターフェース起動待ちと時間待機という機能で何とか切り抜けました。

uci set adblock.global.adb_trigger="wan6"
uci set adblock.global.adb_triggerdelay="15"

wan6 の起動待ちだけで行けると思ったのですがやっぱりだめで更に 15 秒の時間を入れてようやく正常に起動するようになりました。またしても時限式という・・・。

トラブル #7:Azure Monitor 系の名前解決に失敗する問題! (以前からの継続課題)

「Monitor」という名称からか Azure Monitor で利用しているいくつかのドメインの名前解決に失敗するという問題がありました。フィルターを変更してもやっぱりブロック対象リストに含まれている状態です。

ドメイン単位の許可リストの場合、ワイルドカード「*」が利用できず FQDN で一つ一つ追加する必要があるためしばらく放置してました。どうしても名前解決が必要な場合はノード側で参照 DNS を 8.8.8.8 に変更するといった具合になります。

adblock が dnsmasq の上で動いていることを利用して /etc/dnsmasq.conf にワイルドカード付きで指定して、8.8.8.8 にフォワード出来る事を知りました。AI さまさまです。

uci add_list dhcp.@dnsmasq[0].server="/azure.com/8.8.8.8"
uci add_list dhcp.@dnsmasq[0].server="/microsoft.com/8.8.8.8"
uci add_list dhcp.@dnsmasq[0].server="/visualstudio.com/8.8.8.8"
uci add_list dhcp.@dnsmasq[0].server="/microsoftonline.com/8.8.8.8"

トラブル #8:それでも広告ブロックによってスマートフォン ゲームへ影響が出た問題!

ゲーム中で特典を受け取るためなどに広告を見ることがあると思うのですがそれが出来ないと家族より連絡がありました。

スマートフォン ゲームの場合 URL なども簡単には分からないですし、都度ログを見て URL を確認するのも手間だったので端末そのものを広告ブロックの対象外とすることにしました。いわゆるゲーム専用のサブ端末なので問題ないかなと・・・。

uci set adblock.global.adb_nftallow="1"
uci set adblock.global.adb_allowdnsv4="8.8.8.8"
uci set adblock.global.adb_allowdnsv6="2001:4860:4860::8888"
uci add_list adblock.global.adb_nftmacallow="除外したい端末の MAC アドレス"

v6 プラスの環境なので端末は IPv6 で名前解決を行うこともあったので、8.8.8.8 だけではなく 2001:4860:4860::8888 というフォワード先を設定するのがポイントになります。

また、最近のスマートフォンは自身の MAC アドレスをランダムに設定する機能があるためそれは事前に切っておきました。MAC アドレスが変わってしまうとこの設定には意味がないので・・・。

AI を活用したトラブル シュートを終えて

自分一人でやったら検証から実装まですごく時間がかかったであろう事が一気に片付きました( ^)o(^ )


Note
・ 当ブログは個人主催であり、ブログ中のすべての情報は個人的な観点となります。
・ 情報については正確な内容となるよう努めますが、完全性や正確性、有用性、安全性、最新性について一切保証できかねます。

OpenWrt 環境を 24.10.5 から 25.12.2 にバージョンアップしてみたら大ハマりしたけど AI に助けてもらった話 (管理・接続編)

2026/3/26 付けでリリースされた OpenWrt の 25.12.2 インストールでのトラブル対応記事になります。全体的な話はこちら。 cube309b.hatenablog.com

トラブル #1:コンソールで br-lan へ IP を付与するも SSH で接続不可!

思えばこの時点で今回はなんかあるなと思いました。コンソールで管理用の IP を付与した後は SSH で接続してコンフィグを流すのが通例だったので最初の一歩で躓いたわけです。 どうやら、IP だけではなくサブネット マスクも設定しないと通信が行えないようになったみたいです。

故にこのような形で設定すれば先に進めます。私はこの後一度再起動しています。

uci set network.lan.ipaddr="192.168.11.x"
uci set network.lan.netmask="255.255.255.0"
uci commit network

トラブル #2:非公式の IPIP6 モジュールでは設定が行えなくなった!

元々、IPIP6 の構成をするに当たり公式では対応できなかったこともあり有志の方が作成されたモジュールを利用して環境を構成していました。 cube309b.hatenablog.com

非公式なので何度か問題が発生したこともありましたし、永続的なものではないと理解していたのですがついにその時が来た形です。つまり、いつも通りに設定するもインターフェースの部分にエラーがあって先に進まなくなってしまったのです。

ただし、以下を確認すると公式側で対応が行われたことが分かったため、モジュールを乗り換えることで乗り切りました。「map」「ds-lite」のモジュールを予めイメージに組み込むことで対応した形です。 github.com

トラブル #3:IPv4 通信が出来ない!(以下 AI による調査報告)

症状

IPv4 の通信が完全に不通になった。IPv6 の通信は正常。IPIP6 トンネルの TX はカウントされるが RX が 0 のまま。公式/非公式のモジュールのソースコードはほぼ同一。

調査

インターフェースが持っている IPv6 アドレスが違っている。なぜかコンフィグ内で指定した値ではなく MAC アドレス ベースの EUI-64 アドレスになっていた。 結果、ISP からの戻りパケットが (アドレスが違うため)トンネルでデカプセルされずにファイアウォール処理内で DROP されていたのだ。

原因

GitHub を調べたところ、PR #19318 に仔細が記載されていた。25.x 系になった際に IPv6 のアドレスをコマンドで設定する際のパラメーター名が「ifaceid」から「ip6ifaceid」に変更になったのだ。 github.com

本来であれば古いパラメーター名を利用してもフォールバックするのだがバグで機能しないため、結果として設定が無効になり、意図しない IPv6 のアドレスを持ってしまったわけである。

解決

単純な話だが、正しいパラメーター名で指定すれば機能する。

● 旧
uci set network.wan6.ifaceid="ISP から指定されたアドレス"
● 新
uci set network.wan6.ip6ifaceid="ISP から指定されたアドレス"

AI を活用したトラブル シュートを終えて

いやー、ログの確認から GitHub の調査、報告まで AI さまさまでした。


Note
・ 当ブログは個人主催であり、ブログ中のすべての情報は個人的な観点となります。
・ 情報については正確な内容となるよう努めますが、完全性や正確性、有用性、安全性、最新性について一切保証できかねます。

OpenWrt 環境を 24.10.5 から 25.12.2 にバージョンアップしてみたら大ハマりしたけど AI に助けてもらった話 (全体・概略編)

2026/3/17 付けで OpenWrt の 24.10.6 がリリースされたのですけど、その後 2026/3/26 付けで Stable Release 版 25.12.2 がリリースされました。 メジャー バージョン アップの時には大きな問題に当たりがちですが、AI にトラブル シューティングを手伝ってもらったおかげで何とか切り抜けた話です。

現行環境

バージョン

24.10.5 でした。

必須要件

どうしても無いと困る機能は以下となります。(ファイアウォール機能とか DHCP 機能とか基本機能は別)

  • IPv6 接続でありながら固定の IPv4 アドレスを設定
  • WireGuard を用いて実家へ VPN 接続
  • WireGuard を用いて自宅へ VPN 接続 (外部からという意味)
  • IPsec を用いて Azure へ VPN 接続
  • adblock で広告ブロック
結論

バージョン アップといっても新規にインストールしているのでやり方はいつも通りでした。ただし、無事では全くなし。画面的には少し変わったかなという程度。

性能的には特に変化なくです。計測時間の違いによる誤差かなと。

いざバージョン アップ

イメージ作成

作り方自体は特に変化なかったのですけど、恐れていた IPIP6 の非公式モジュールでは構成ができなくなってしまったようです。23.05.3 からのようですが実際に設定が進まなくなってしまいました。 github.com ただ、これは公式も既に対応済みではありましたので「map」「ds-lite」の二つのモジュールを導入することで対応はできました。

設定 (割愛)

今まで作りためた設定用のコンフィグを流すだけの地味な作業なのですが想定通りの動作をしない事がたくさんありました。この辺は次回以降の記事で記載しようと思います!

OpenWrt のバージョン アップを終えて

いろいろなトラブルには当たりましたけど、AI がいればそれも乗り越えられるのはかなり心強いです!


Note
・ 当ブログは個人主催であり、ブログ中のすべての情報は個人的な観点となります。
・ 情報については正確な内容となるよう努めますが、完全性や正確性、有用性、安全性、最新性について一切保証できかねます。

iPhone 16e 購入してみた

サブ機で iPhone を利用しているので思い切って iPhone 16e を購入してみたの話です。

現状

携帯電話と私

iPod Touch の時代から Apple プラットフォームでゲーム等をしているので Android ではない系列の機種が必要です。

現行機種

そもそもメインデバイスではないので薄くて小型のものがよく、iPhone 13 mini を利用中でした。3 年ぐらい。

入れ替えの経緯

経緯

どのような原理なのか SIM の契約が不要で 2 年間月 1 円で使えていましたけど、それも 2 年過ぎてしまったため月額で支払い中でございました。それを含めると理由はこんな感じです。

・月 1 円の期間が過ぎたため、\58,000 での買取に向けて分割の支払いが発生している状態であったこと
・なんだかんだ 3 年は過ぎたこと
・今年はメモリ不足の影響を受けて携帯電話の機種代も上がる傾向になりそうとの市場予測
・Lightning ポートはもはや家の中でこれ一台のため、USB-C 採用のモデルに替えたかったこと

狙っていた機種

いやもう選択肢ないんですよね・・・
・もっとも廉価
・USB-C を採用

iPhone 16e が候補になりました。

・値段:\90,000 (安くないけど・・・)
・ポート:USB-C

いざ入れ替えてみた

入れ替え作業

特に iPhone は簡単だなと思っているのが、新旧機種を並べて「転送」とやるだけで基本的にはまるっと環境が移行されます。簡単!

携帯電話の入れ替えを終えて

iPhone 13 mini に比べてしまうとサイズが大きいですし思いですけど、まぁきっと慣れることでしょう。


Note
・ 当ブログは個人主催であり、ブログ中のすべての情報は個人的な観点となります。
・ 情報については正確な内容となるよう努めますが、完全性や正確性、有用性、安全性、最新性について一切保証できかねます。