ThinkPad x13 gen6からルーターへ急に接続できなくなった

TL;DR

暫定対応:通信規格の上限をWi-Fi 6 (802.11ax) に下げることで解決できた。
恒久対応:2026/9/5時点では対応方法が分からない。

機器構成

事象

ThinkPad X13 Gen 6 (Intel Wi-Fi 7 BE201) から NEC Aterm 7200D8BE に接続していた。
購入して半年位問題無かったが、ある日急に接続できなくなった。
コンパネのネットワーク接続を確認すると、「認証を試みています」と表示されていた。
なお、スマホ(Pixel7・Pixel9・Pixel11)はそれぞれ接続が行えた。

この状態のまま接続が行われない

調査結果

Windowsのイベントログ(Microsoft-Windows-WLAN-AutoConfig/Operational)を確認した。
すると、以下のエラーが記録されていた。

WLAN 自動構成サービスは、ワイヤレス ネットワークへの接続に失敗しました。
失敗の理由: アソシエーションの実行中にドライバーが切断されました。

どうもパスワードの誤りではなさそうである。(一応変更は実施したが改善無)
PCとルーター間のネゴシエーション段階で通信が破綻し、ドライバー側から切断されてそう。

アダプター(Intel BE201)とルーター(Aterm 7200D8BE)はWi-Fi 7 (802.11be) に対応している。
何かのアップデートが原因で802.11beでのネゴシエーションに失敗していると思われる。

対応方法

暫定対応方法

  1. デバイスマネージャーを開く。
  2. 「ネットワーク アダプター」の Intel(R) Wi-Fi 7 BE201 320MHz をダブルクリックする。
  3. 「詳細設定」タブを開く。
  4. プロパティから 802.11n/ac/ax/be ワイヤレス モード を選択する。
  5. 値を 802.11ax に変更して「OK」を選択する。
    設定変更するだけですんなり接続されるようになった

恒久対応方法

現在不明である。
Lenovo Vantageでまめにアップデートしているが、現状改善されない。

補足

ネットワークアダプターの表示名について

設定を 802.11ax に下げても、ネットワーク画面に Intel(R) Wi-Fi 7 BE201 320MHz と表示される。
これはハードウェアの製品名である。
そのため、表示がWi-Fi 7でも、残念ながら 802.11ax で動作している。

良さげなスキル・ソフト・サービス

随時更新

スキル

Archify

説明文やリポジトリを渡すとコードベースをインタラクティブな図に変換

github.com

diagram-design

HTML+SVG図解を生成するためのデザインスキル

github.com

ソフト

Raycast

ランチャーソフト
使いこなすと相当便利そう
とはいえ、Win + RとPowertoysで私は今のところいいかな
www.raycast.com

PowerShellをインストール・アップデートするコマンド

PowerShellのインストール方法

以下のコマンドでインストールするのが楽である。
後は見慣れたインストーラが起動して、インストールできる。

winget install Microsoft.PowerShell

実行したら、ライセンス条件に同意するか聞かれるので、Yを選択すればよい。

PowerShellのアップデート方法

winget upgrade Microsoft.PowerShell

PowerShellのバージョン確認方法

$PSVersionTable.PSVersion

なお、PowerShellはv5まではpowershellが起動コマンドである。
しかし、v6以降はpwshが起動コマンドである。

インストールしているソフト一覧と名称確認方法

# 全量出したい場合
winget list

# 一部だけでも検索可能
winget list Power

# パイプしてgrep的に削る方法
winget list | Select-String Power

覚えておくと便利なコマンド

# コマンドの場所を見つける
Get-Command hoge

# ファイルダウンロード
irm "https://hoge.com" | iex

# カレントディレクトリのエクスローラを開く
ii .

# 環境変数の全量表示
Get-ChildItem Env:

# 環境変数の指定表示(例:PATH変数)
$env:PATH

# ファイル検索
Get-ChildItem c:\ -Recurse -File | Where-Object {$_.Name -like "*キーワード*"}

Powershellを実行するとエラーになる

事象

Powershellを実行すると下記の様なエラーになる。

PS C:\Users\user> .\hoge.ps1
.\hoge.ps1: File C:\Users\user\hoge.ps1 cannot be loaded.
The file C:\Users\user\hoge.ps1 is not digitally signed.
You cannot run this script on the current system.
For more information about running scripts and setting execution policy, 
see about_Execution_Policies at https://go.microsoft.com/fwlink/?LinkID=135170.

なお、ポリシーはRemoteSignedに設定変更している。

原因

未署名の外部スクリプト(※1)を実行しようとしていたから。

※1 外部スクリプト
インターネットや外部ネットワークからダウンロードされ、
代替データストリームに Zone.Identifier(ZoneId=3など)が付与されているファイルのこと。

対応方法

以下の方法で実行可能になる。

  1. Zone.Identifierを削除する。
  2. PowerShellスクリプトの実行許可ルールを変更する。
  3. 署名付きファイルに修正する。(※2)

※2 対応難しい場合が多いため、説明割愛

Zone.Identifierの確認方法と削除方法

## 確認方法

# ファイルのすべてのデータストリームを出力
Get-Item .\hoge.ps1 -Stream *

# Zone.Identifierだけ指定(無い場合はエラー)
Get-Content .\hoge.ps1 -Stream Zone.Identifier

## 削除方法

# Zone.Identifier削除専用コマンド
Unblock-File -Path .\hoge.ps1

# ストリーム削除コマンド
Remove-Item -Path .\hoge.ps1 -Stream Zone.Identifier

## 複数削除方法

# カレントディレクトリ配下のすべての .ps1 ファイルのZone.Identifierを解除
Get-ChildItem -Filter *.ps1 | Unblock-File

# サブフォルダーも含めてすべてのファイルのZone.Identifierを再帰的に解除
Get-ChildItem -Recurse | Unblock-File

スコープ確認方法・変更方法

## 確認方法

# 現在適応されているポリシーの確認
Get-ExecutionPolicy

# 各スコープに設定しているポリシーの確認(※3)
Get-ExecutionPolicy -List

## 変更方法(管理者権限があるコンソールで実行する必要有)
Set-ExecutionPolicy -Scope <スコープ名> -ExecutionPolicy <ポリシー名>

### 例:今実行しているコンソールだけ実行可能にする
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

### 例:今ログインしているユーザーは、警告は出すけど実行可能にする
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Unrestricted

※3
各スコープに設定しているポリシーを評価し、適応するポリシーが決定される

実行ポリシーとスコープ名

スコープ名一覧

優先度 スコープ名 適用範囲・特徴
1 (最優先) MachinePolicy グループポリシー(GPO)によってPC全体に強制される。一般ユーザーや個別のスクリプトからは変更不可。
2 UserPolicy グループポリシー(GPO)によって現在のログインユーザーに強制される。変更不可。
3 Process 現在のPowerShellプロセス(セッション・タブ)内のみに適用される。ウィンドウを閉じると設定は消滅する。
4 CurrentUser 現在のログインユーザー全体に適用される。設定はレジストリ(HKCU)に保存され、次回起動時も維持される。
5 (最底辺) LocalMachine PC全体(すべてのユーザー)に適用されるデフォルトの保存先。設定の変更には管理者権限が必要。

実行ポリシー名一覧

実行ポリシー名 実質的な権限・挙動 外部スクリプトの実行可否
Restricted すべてのスクリプトの実行を禁止。 インタラクティブな個別コマンドの入力のみを許可する(Windows クライアントOSの既定値)。 ✕ 不可
AllSigned 署名付きスクリプトのみ許可。 ローカル作成・外部ダウンロード問わず、信頼された発行元のデジタル署名が必要。 ◯ 許可(要署名)
RemoteSigned ローカル作成は許可、外部ダウンロードは要署名。 ネットから取得したファイル(ZoneId=3)を実行する場合はデジタル署名が必要(Windows Serverの既定値)。 ◯ 許可(要署名)
Unrestricted すべてのスクリプトを実行許可。 ただし、インターネットからダウンロードした未署名のスクリプトを実行する際には、事前の警告プロンプトが表示される。 ◯ 許可(警告有)
Bypass すべてのスクリプトを実行許可(警告なし)。 警告やブロックが一切発生しないため、自動化タスクやバックグラウンド処理で広く使われる。 ◯ 許可
Undefined この階層(スコープ)での設定は「未定義(空)」であることを示す。 固有の権限は持たず、判断を下位スコープやOSのデフォルト値に委ねる。(※3) —(委ねる)

※4
デフォルト値は、OSにより異なる。

PowerShellの初期ロードに設定すると良い内容

設定ファイルの配置場所とファイル名

配置場所

通常

C:\Users\<ユーザー名>\Documents\PowerShell

OneDrive設定がある場合

C:\Users\<ユーザー名>\OneDrive\Documents\PowerShell

設定ファイル名

多少分類の境界線微妙なとこはあるが、以下の様な役割で分かれてそう

  • Microsoft.PowerShell_profile.ps1(※1):主にシェル操作に関する設定
  • powershell.config.json:PowerShell全体の処理に関わる設定

※1
これとは別にprofile.ps1も存在する。
これは同じ内容を定義するが、対象とする範囲が別になる。
Microsoft.PowerShell_profile.ps1は、PowerShellコンソールのみ範囲となる。
一方、profile.ps1はVSCodeなど別ホストからPowerShellが実行された場合も当内容が適用される。
(逆にMicrosoft.PowerShell_profile.ps1の内容は読込されない)
そのため、全環境共通にしたい場合は、profile.ps1を作成する方が良い。

設定しておくと便利な設定

Microsoft.PowerShell_profile.ps1

# ==== エンコード関連 ====
 
# コンソールの表示をUTF-8にする
# 設定確認方法:chcp
chcp 65001 > $null
 
# 標準入力の文字コードをUTF-8にする
# 設定確認方法:$InputEncoding.WebName
$InputEncoding  = [System.Text.Encoding]::UTF8
 
# 標準出力の文字コードをUTF-8にする
# 設定確認方法:$OutputEncoding.WebName
$OutputEncoding = [System.Text.Encoding]::UTF8
 
# ==== コンソール操作関連 ====
 
# Tabキーの補完動作設定
# 設定確認方法:Get-PSReadLineKeyHandler | Where-Object { $_.Key -eq "Tab" }
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete
 
# 過去の履歴から予測候補を表示
# 設定確認方法:Get-PSReadLineOption | Select-Object PredictionSource
Set-PSReadLineOption -PredictionSource History
 
# 予測候補の表示形式の指定
# 設定確認方法:Get-PSReadLineOption | Select-Object PredictionViewStyle
Set-PSReadLineOption -PredictionViewStyle ListView

powershell.config.json

{
  "Microsoft.PowerShell:ExecutionPolicy": "RemoteSigned",
  "POWERSHELL_TELEMETRY_OPTOUT": "1",
  "DisableImplicitWinCompat": true
}
  • Microsoft.PowerShell:ExecutionPolicy:明示的に指定
  • POWERSHELL_TELEMETRY_OPTOUT:MSに情報送るの停止
  • DisableImplicitWinCompat:PowerShellの古い互換機能を無効化

PowerShellでコマンドが実行できない

事象

スペースを含むため、.\みたいな直接指定ができない。
そのため、絶対パスでダブルクォーテーションで括って実行した。
しかし、PowerShellからコマンドが実行できない。

"C:\Program Files\OpenSSL-Win64\bin\openssl.exe" s_client -connect sts.amazonaws.com:443 -servername sts.amazonaws.com

原因

コール演算子(&)の付け忘れ

対応方法

頭に"& "を指定すれば良い

& "C:\Program Files\OpenSSL-Win64\bin\openssl.exe" s_client -connect sts.amazonaws.com:443 -servername sts.amazonaws.com

補記事項:直接指定とコール演算子の違い

項目 .\hoge.exe (直接指定) & ".\hoge.exe" (コール演算子)
主目的 静的ファイルの即時実行 文字列や変数の動的実行
スペースを含むパス 不可(エラーになる) 可能("で囲む必要あり)
変数の使用 不可(変数の値を展開して実行できない) 可能& $path の形式で実行)
評価の仕組み 文字列をコマンドとして実行 演算子の後ろを評価した結果をコマンドとして実行

IPv6で動いてる風で、実は動いてなかった

環境構成

  • NTT西日本 フレッツ光ネクスト スーパーハイスピードタイプ隼
  • OCN 光 with フレッツ ファミリー・スーパーハイスピード 隼・西日本
  • NTT GE-ONU 第6世代(交換前は第5世代)
  • NEC Aterm 7200 D8BE(交換前は3600HP)

発端

この3か月位、よくネットがふん詰まりを起こしていた。
ネット自体はつながるのだが、動画とか再生ができない事態が頻発していた。
ルーターが調子悪く古かったので買い替えもしたが改善しなかった。
そこでONUをルーターを同時に再起動すると改善していた。
結果、ONU(10年利用)を交換することになった。
ただ、その原因追及をしている際、IPv6が動いていないことが分かった。(※1)

※1
Antigravityが調査してくれた
IPv6はNTTから払い出しされてたが、OCNで止められてた

IPv6対応で行ったこと

1.OCN現状確認

OCNにIPv6対応できているかを確認できるサイトが用意されている。
OCN | 接続環境確認

OCNではIPoE[IP over Ethernet]のことをIPv4 over IPv6と呼称している模様
IPoE(IPv4 over IPv6)とは | OCN

当サイトで確認した結果、IPv6が対応できていないという結果が表示された。

2.OCN契約確認

OCNの契約確認を行った。
確認方法は綺麗に確認方法を解説されているページがあった。

OCN IPoEインターネット接続機能の提供状況を確認したい | OCNお客さまサポート

結果、IPoEは未提供と表示されていることが確認できた。

3.OCN契約変更

OCNにIPoEを利用させて欲しいという契約変更を行った。
こちらに関しては、無料で行える。
また、元の方式が使えなくなる訳ではなく、両方使える感じになる模様である。
加えて、最悪うまく動かない場合は、契約を元に戻すこともできるとのこと。
なお、Web上から変更も行えるようである。
(私は質問したい事項がいくつかあったので電話で対応してもらった)
切り替えには3日程度かかるとのことであった。
support.ocn.ne.jp

4.ルーター設定&確認

切替前はPPPoE接続になっている。
それをIPoE接続に変更する必要がある。

PPPoEルータでIPv6は未接続と表示されている

但し、ルーターが自動化設定でIPv6有効化するとなっている場合がある。

NEC Aterm 7200 D8BEもデフォルトで上記設定であった

そのため、OCNの契約変更が反映された3日後に、自動でIPv6接続に切り替わった。

OCNバーチャルコネクトモードに変わり、IPv6も利用可能になっていた

その他

速度・安定感

  • 速度はそんなに正直変わらないかもしれない。今まで400Mbps出ていたのが、変更後も同じ位なので。
  • 安定感は上がったかも。上記数値は良い時で、悪い時は100とか50とかなることあったが、あまりないかも。(但し、観測日数少ないだけかも)

機器として必要なもの

当対応を行うには、予め機器が対応している必要がある。
ルーターはOCNバーチャルコネクト対応ルーターでないといけない。
OCNバーチャルコネクト対応ルーター対応一覧 | NTT docomo Business

ONUも対応している必要あるが、こちらは余程古い機種でなければ問題ない。
(私が10年前使い続けてた交換前のモデルもIPoE自体は対応版とのことであった)

IPoEのデメリット

コールセンターの方に言われていた内容としては、監視カメラ系が動かなくなるケースがあると言われていた。
しかし、私はgoogle nest cam(多分第一世代)を利用しているが、問題なく動いてくれた。
後、ルーターもIPoE対応していないといけないので、対応していない場合は買替する必要がある。
なお、プランや別プロバイダ次第では、ルーターも無償 or 格安レンタルできる場合がある。

ONU交換時間帯

表題とは直接関係ないが、今回ONUも同じタイミングで実施した。
その際、交換時間帯なるものが存在する事を見落としていた。(朝7時~夜22時)
また、反映には30分~1時間かかるようである。
その仕様に気づくまで1時間位苦闘していて、送付資料に小さく記載見つけた。。。
結果、夜1時から格闘し始め、朝8時前までネットが使えなかった。