Windows の dev tun で TAP アダプターが表示されたままです。これは間違いですか?
dev tun プロファイルの下に TAP-Windows アダプターがあるのは正常です。レイヤー3 ドライバーは任意の切り替えであり、どちらが動いたかはアダプター名ではなくクライアントログが示します。
デバイスマネージャーに 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 carry | Adapter family | Where it is selected |
|---|---|---|
| IPv4 and IPv6 packets | Layer-3 driver, or the older TAP emulation | Client directive plus installed signed driver |
| Ethernet frames, non-IP protocols | TAP-Windows | Profile mode and the TAP driver package |
| Higher throughput on a supported build | Data-channel offload driver | Client build and driver package, separately from the profile |
切り替えた後の後片付け
古いアダプターを削除することは、新しいものを追加するのと同じくらい重要です。 残った TAP インターフェースは、以前のセッションのアドレスとルートを保持したままになることがあります。そうした項目は、それを作った接続より長く残ります。デバイスマネージャーで古いデバイスを削除し、再接続してルーティングテーブルにもう載っていないことを確認してください。
VPN 製品が複数入っている場合は、プロファイルを調べる前に各製品がどのドライバーパッケージを同梱しているか書き留めてください。同じドライバーの別ビルドを二つのクライアントが入れるのは、プロファイルの編集では解決できない競合です。使っていないクライアントをアンインストールして再起動し、デバイスマネージャーで重複したアダプターを探します。それからようやく、二つの製品のログ行を比べる意味が出ます。