インストーラーが27850で止まり、接続は442で拒否され、別のプロファイルは651を返す。番号だけを見ると無関係な三つの不具合に見え、ふつうはクライアントを三回再インストールしてしまう。しかし発生源はひとつのサブシステム、仮想アダプターとその周囲のフィルタースタックである。エラー番号はどの層が失敗したかを示し、それが最初の確認項目を決める。番号を読む前の再インストールは、たいてい同じ不具合を再現するだけだ。

番号を層に照らす

エラーはそれぞれ違う地点で発生するため、見える症状が同じ接続拒否でも最初の確認は変わる。三つの系統がすべてのケースを覆う。インストーラー、アダプター、その下のポートである。下表は各番号を、それが示す確認項目の隣に置いている。

ErrorWhen it appearsFirst checkUsual cause
27850During installFilter count and security suiteStack at the filter limit, or a suite blocking the driver
442On connectAdapter state and display nameDisabled adapter, ICS holding it, malformed CVirtA name
651On connectWAN miniport and third-party driversMiniport failed to start, bridging driver attached

プロファイルを選ぶ前に出るエラーはインストーラーの系統だ。クライアントがアダプターを起動しようとしたときに出るならアダプターの系統である。アダプターが見えていてポートが一度も開かないなら、ミニポートの系統だ。何かを変える前に番号を書き留めること。三つの修復はスタックの別の部分に触れるので、系統を間違えた変更は次の試行を読みにくくする。

フィルタースタックの飽和、またはドライバーを遮るセキュリティスイート

クライアントをインストールすると、アダプターの連鎖に小さなフィルター部品が登録される。Windows にはそうした部品をいくつまで接続できるかに厳しい上限があり、既定値ではアンチウイルス、仮想化ブリッジ、キャプチャドライバーが揃うと余裕がほとんど残らない。するとVPNパッケージが正常でも27850で失敗する。インストーラーは飽和したスタックと壊れたスタックを区別できない。

現在の値を読み、引き上げ、再試行の前に再起動する。スタックが再構築されるまで新しいフィルターは接続できない:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Network" /v MaxNumFilters
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Network" /v MaxNumFilters /t REG_DWORD /d 14 /f

もうひとつの原因は、目に見える確認なしにドライバーのインストールを遮るセキュリティスイートだ。その自己防御機能がフィルターの登録を妨げ、インストーラーは一般的な部品エラーを報告する。スイート自身のログを見て、自己防御が妨げているならインストールの間だけ無効にし、直後に元へ戻すこと。値がすでに引き上げられていて遮るスイートがない場合は、次を探す 以前のVPN製品が残した孤立したフィルタードライバー。対応するサービスを失った古いフィルターは今も枠を占有し、新しいインストールを失敗させることがある。

アダプターは存在し、下がったままになる

エラー442は、仮想アダプターは存在するがクライアントが起動できない状態を指す。最初の確認は非表示デバイスを表示したデバイスマネージャーだ。無効化されたアダプター、警告の印があるアダプター、存在しないアダプターはクライアント上では同じに見えるが、必要な修復は違う。Internet Connection Sharing が掴んでいることも多い。サービスがアダプターを占有しているなら、レジストリに触る前にサービスを停止して再試行すること。残った共有設定が再起動後に再び掴むことがあるので、修復が再起動後も残るかを記録する。

再インストールは、アダプターを扱えなくする壊れた表示名を残すことがある。値は未解決のインストーラートークンではなく、素のテキストであるべきだ:

Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\CVirtA" -Name DisplayName
Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Services\CVirtA" -Name DisplayName -Value "Cisco Systems VPN Adapter for 64-bit Windows"

クライアントが期待する表示名を使い、その後で再起動してアダプターを再列挙させる。再起動せずに値を設定すると古い状態が残り、次の接続はまた442を返す。

下のポートが一度も開かない

エラー651は、接続マネージャーがWANミニポートを開けないときに報告される。クライアント上でアダプターが健全に見えても、下のポートが開始状態に達しないことがある。何かを再インストールする前に、ミニポートとその状態を一覧すること:

Get-PnpDevice -Class Net | Where-Object { $_.FriendlyName -like "*WAN Miniport*" } | Select-Object Status, FriendlyName

エラー状態のミニポートが直接の手がかりだ。デバイスマネージャーから再インストールするとポートが作り直される。クライアントの再インストールが効かないときにこの修復が効くのはそのためだ。物理アダプターに結び付いた第三者製ドライバーもよくある原因である。VirtualBox のブリッジネットワークドライバー、OpenVPN から残った TAP ドライバー、キャプチャフィルターが先にポートを取ることがある。ドライバーがすでに結び付いている場合、インストール中に部品のチェックを外すだけでは足りない。アダプターのプロパティから外すか、ドライバーストアからアンインストールする必要がある。

VPN接続でIPv6を無効にすると直った事例もあるが、それは恒久的な設計ではなく試験として扱うこと。IPv6を無効にしたときだけ接続が始まるなら、土台のミニポートかドライバーが依然として原因だ。

ひとつの層だけを変え、証拠を残す

変更したレジストリ値を保存し、アダプターとフィルターの一覧を前後で記録し、試行の間に再起動する。ここではどの系統でも再起動が修復の一部だ。アダプターのスタックは起動時に構築され、サービスの再起動では作り直されないからだ。

古いアダプター、フィルター、ミニポートが消えてから初めてクライアントを再インストールすること。壊れたスタックの上に新しいクライアントを載せると、修復できたはずの27850が、中途半端に登録されたアダプター二つと不明瞭なエラーだけの機械になる。同じエラーが層ごとの確認を二回生き延びたら止めて上に上げる。その時点で有効な次の一手は、ベンダーのインストーラーログとともにネットワークスタックをきれいに見直すことであり、同じ再インストールの繰り返しではない。

関連記事