Вопрос

Я вижу, что многие программы, такие как openvpn и Teamviewer, для своего VPN-соединения создают виртуальное сетевое соединение в Windows.Я хочу создать его для себя в целях тестирования.

Возможно ли создать его программно или около того?

Это было полезно?

Решение

Похоже, вы ищете драйвер Tap-Win32. Это драйвер, который OpenVPN в Windows использует для создания виртуального интерфейса, который вы видите, и фактически является частью пакет OpenVPN . Эта подсистема также доступна на многих * nixes.

Интерфейс этого драйвера TAP примерно одинаков во всех ОС. Вы открываете специальный файл и записываете в него необработанные кадры Ethernet. Затем драйвер вставляет эти кадры в виртуальный интерфейс. И наоборот, любые пакеты, которые передаются по виртуальному интерфейсу, могут быть прочитаны из специального файла как необработанные кадры Ethernet.

Большинство реализаций также имеют режим TUN, который работает на уровне 3, а не на уровне 2. Поэтому вы будете читать необработанные пакеты IP, IPv6 и т. д. вместо кадров Ethernet.

У меня нет опыта работы с этим в Windows, поэтому я собираюсь быстро просмотреть исходный код. OpenVPN выполняет большинство этих шагов в функции tun.c open_tun. Вы найдете несколько определений этой функции, но они # ifdef'd для разных ОС (поэтому ищите CreateFile). Основной способ, которым это работает в Windows:

<Ол>
  • Перед запуском любого приложения, работающего с интерфейсом TAP, один или несколько виртуальных интерфейсов предварительно создаются (установщиком?). Эти интерфейсы изначально отключены.
  • Ваше приложение запускается и выполняет специальный вызов CreateFile для " \\. \ Global \ GUID.tap " ;. Где GUID заменяется GUID, который описывает конкретный виртуальный интерфейс. Виртуальные интерфейсы могут быть повторены в разделе реестра, который определен как ADAPTER_KEY в " tap-win32 \ common.h " в исходном коде OpenVPN.
  • Ваше приложение может выполнять некоторые вызовы DeviceIoControl. OpenVPN использует это несколько раз, чтобы получить версию драйвера, получить MTU, установить режим TUN и другие разные вещи.
  • В этот момент интерфейс, вероятно, отображается как подключенный в Windows, и вы можете даже читать запросы DHCP, которые вы уже получаете от самой Windows. OpenVPN проходит через множество проблем для настройки интерфейса, используя другие части сетевых API-интерфейсов Windows, но это не относится к драйверу TAP.
  • Таким образом, хотя API на самом деле является просто специальным файлом и, следовательно, довольно простым, на самом деле есть много возможностей для управления интерфейсом. Но если вы просто для тестирования, этого вполне может быть достаточно. Затем вы можете вручную настроить тестовый интерфейс в Windows.

    Другие советы

    Функция набора номера MSDN Ras

    Может быть, это шаг в правильном направлении?

    Со страницы:

    Служба удаленного доступа (RAS) поддерживает подключения к виртуальной частной сети (VPN) в дополнение к обычным подключениям удаленного доступа, использующим протокол "Точка-точка" (PPP).При VPN-соединении VPN-пакеты инкапсулируются в IP-пакеты и отправляются по IP-сети, такой как Интернет.Таким образом, доступ к IP-сети является обязательным условием для установления VPN-соединения.Если клиентский компьютер имеет постоянное подключение к IP-сети, например, к IP-локальной сети, клиент может установить VPN-соединение, используя один вызов функции RasDial.

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top