デバイスマネージャーに TAP-Windows Adapter V9 が表示され、プロファイルは dev tun と言っているのにトンネルは動作しています。この組み合わせは設定ミスではなく、モードを何度切り替えても変わりません。アダプター名が示すのはクライアントが読み込んだ Windows ドライバーであり、トンネルが運ぶパケットではありません。何かを変更する前に、クライアントログのドライバー行を読んでください。

レイヤー3 のトンネルに Ethernet アダプターが付く理由

クライアントの Windows 対応史の大部分では、使える仮想レイヤー3 アダプターは存在しませんでした。唯一の選択肢が Ethernet インターフェースを提示する TAP-Windows ドライバーでした。そこでクライアントは欠けているレイヤー2 の振る舞いをエミュレートし、Windows が設定できるようにしました。アダプターが今もネットワークカードに見えるのは、このエミュレーションのためです。

そのエミュレーションのうち二つは目に見えます。クライアントはトンネルのアドレスに対して ARP に応答し、ローカルマシンに小さな DHCP リースを配ります。そのため Windows には MAC アドレスと NDIS ドライバーを備えた普通の Ethernet アダプターが見え、トンネル自体は生の IP パケットを運びます。Ethernet の衣装はドライバーに属するもので、トンネルのモードではありません。

名前で判断せず、ドライバーの行を探す

ドライバーの版が違えば二つのアダプターが同じ名前を共有することがあるため、名前だけでは何が動いたか分かりません。クライアントログは開いたデバイス名を記し、新しいビルドでは選んだドライバー名も記します。読むべきはその行です。

ログでは次の順に三つを確認します。クライアントがアダプターを開いたか、どのドライバーを報告しているか、失敗後に別のドライバーへ退避したか。退避の行は見落としやすく、接続自体は成立するため、利用者は新しいドライバーが有効だと思い込んだまま古いドライバーでトンネルが動きます。

レイヤー3 ドライバーに切り替え、何が必要かを確認する

WireGuard プロジェクトが配布するレイヤー3 ドライバーはクライアント版 2.5 以降で利用できますが、任意です。次の一行を足すと選択されます。

windows-driver wintun

ドライバーはマシンにインストールされている必要があり、公式ビルドには署名済みのコピーが含まれます。クライアントを自分でパッケージする場合はその署名済みリリースを配布してください。私的にビルドしたドライバーは、他の VPN 製品が入れるコピーと衝突します。その衝突は原因の特定に時間がかかる障害を生み、ふつう二つ目の VPN クライアントがマシンに入った後に現れます。逆にドライバーが欠けていれば、ログに明確な行が残ります。

ドライバーはより厳しい権限も強制するため、クライアントは特権アカウントで動く対話型サービスを通じてアダプターを作成します。そのサービスなしで通常のユーザープロセスとして起動すると命令が失敗することがあり、以前にインストールされたアダプターが見えたまま残り、切り替えが無視されたように見えます。

TAP が正解であり続ける場合

トンネルが Ethernet フレーム、ブロードキャスト通信、IP 以外のプロトコルを運ぶ必要があるなら、レイヤー2 アダプターが必須であり、TAP ドライバーはその要件から導かれます。Windows のブリッジ構成も同じ制約を受け、インターフェースはレイヤー2 ドメインに参加する必要があります。

アダプター名の段階でどちらかを選ぶ理由に性能はなりません。版 2.6 はパケット処理をカーネルへ移すデータチャネルオフロードドライバーを追加し、スループット特性を変えるのはこの選択肢です。接続の必須条件ではなく機能上の判断であり、ビルドとインストール済みパッケージに依存します。それがなくても動くプロファイルは動き続けます。

What the tunnel must carryAdapter familyWhere it is selected
IPv4 and IPv6 packetsLayer-3 driver, or the older TAP emulationClient directive plus installed signed driver
Ethernet frames, non-IP protocolsTAP-WindowsProfile mode and the TAP driver package
Higher throughput on a supported buildData-channel offload driverClient build and driver package, separately from the profile

切り替えた後の後片付け

古いアダプターを削除することは、新しいものを追加するのと同じくらい重要です。 残った TAP インターフェースは、以前のセッションのアドレスとルートを保持したままになることがあります。そうした項目は、それを作った接続より長く残ります。デバイスマネージャーで古いデバイスを削除し、再接続してルーティングテーブルにもう載っていないことを確認してください。

VPN 製品が複数入っている場合は、プロファイルを調べる前に各製品がどのドライバーパッケージを同梱しているか書き留めてください。同じドライバーの別ビルドを二つのクライアントが入れるのは、プロファイルの編集では解決できない競合です。使っていないクライアントをアンインストールして再起動し、デバイスマネージャーで重複したアダプターを探します。それからようやく、二つの製品のログ行を比べる意味が出ます。

関連記事