dev tun в Windows по-прежнему показывает адаптер TAP. Это неправильно?
Адаптер TAP-Windows под профилем dev tun — это нормально. Драйвер уровня 3 является необязательным переключателем, и то, какой из них работал, показывает журнал клиента, а не имя адаптера.
Диспетчер устройств показывает TAP-Windows Adapter V9, хотя профиль говорит dev tun, и туннель работает. Такое сочетание не является ошибкой конфигурации, и переключение режима туда-обратно его не изменит. Имя адаптера отражает, какой драйвер Windows загрузил клиент, а не то, какие пакеты несёт туннель. Прочитайте строку драйвера в журнале клиента, прежде чем что-либо менять.
Почему туннель уровня 3 получает адаптер Ethernet
На протяжении большей части истории клиента в Windows не было ни одного пригодного виртуального адаптера уровня 3. Единственным вариантом был драйвер TAP-Windows, который предоставляет интерфейс Ethernet. Затем клиент эмулировал недостающее поведение уровня 2, чтобы Windows мог его настроить. Именно из-за этой эмуляции адаптер до сих пор выглядит как сетевая карта.
Две части этой эмуляции видны, если присмотреться: клиент отвечает на ARP для адреса туннеля и выдаёт локальной машине небольшую аренду DHCP. Поэтому Windows видит обычный адаптер Ethernet с MAC-адресом и драйвером NDIS, тогда как сам туннель несёт голые пакеты IP. Костюм Ethernet принадлежит драйверу, а не режиму туннеля.
Найдите строку драйвера, а не судите по имени
Два адаптера могут делить имя между версиями драйвера, поэтому одно имя не может сказать, что работало. Журнал клиента называет устройство, которое он открыл, а в новых сборках ещё и драйвер, который он выбрал; именно эту строку и нужно читать.
Проверьте в журнале три вещи в таком порядке: открыл ли клиент вообще адаптер, какой драйвер он указывает и откатился ли он после сбоя. Строку отката легко пропустить, потому что соединение всё равно поднимается, и туннель работает на старом драйвере, пока пользователь считает, что активен новый.
Перейдите на драйвер уровня 3 и проверьте, что должно присутствовать
Драйвер уровня 3, поставляемый проектом WireGuard, доступен начиная с версии клиента 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-продуктов, запишите, какой пакет драйверов приносит каждый, прежде чем отлаживать профиль. Два клиента, устанавливающие разные сборки одного драйвера, — это конфликт, который не решит никакое редактирование профиля. Удалите неиспользуемый клиент и перезагрузитесь, затем поищите дублирующиеся адаптеры в диспетчере устройств. Только после этого стоит сравнивать строки журнала между двумя продуктами.