imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Интернет, Глобальные и Локальные сети > Сети
Опции темы
Старый 19.11.2018, 16:21     # 1
Plague
Administrator
 
Аватар для Plague
 
Регистрация: 06.05.2003
Адрес: Московская Подводная Лодка
Пол: Male
Сообщения: 12 026

Plague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague Демиург
Plague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague ДемиургPlague Демиург
OpenVPN Tap Device идентифицирует сеть как неопознанную/общественную

Столкнулся недавно с проблемой того, что соединение на OpenVPN Tap Device идентифицируется Windows (от Vista и далее) как неопознанная/общественная сеть со всеми вытекающими. Например, правильно настроенный виндовый фаер блочит пинги, SMB и прочие плюшки, открытые для внутренних сетей, и во имя которых как раз VPN зачастую и мутится.
Происходит это из-за того, что пока винда не видит шлюз для сети, она почему-то за нормальную сеть это не считает. Существует вариант прописать шлюз с какой-нибудь адской метрикой, но лично мне он не понравился.

Более изящный способ:
В ветке реестра
Цитата:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\
находим раздел, отвечающий за нужный Tap-Device (признаки: ProductName - TAP-Windows Adapter Vx) и пишем туда параметр DWORD *NdisDeviceType (звёздочку не пропускаем, это не опечатка) со значением 1.
После перезагрузки соединение из "Центра управления сетями и общим доступом" пропадает вообще (остается как адаптер в "Панель управления\Сеть и Интернет\Сетевые подключения") но начинает работать как частная сеть.
Через этот же параметр реализован, например, виртуальный сетевой адаптер у VirtualBox, только там все это делается автоматом.

Если влом искать раздел адаптера в рукопашную, есть пара скриптов: один - cmd, второй - powershell:

tapfix.cmd
Код:
FOR /F "USEBACKQ" %%A IN (`REG QUERY HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318} /K /F "*"`) DO (REG QUERY %%A /V DriverDesc | (FIND "TAP-Win" && REG ADD %%A /V *NdisDeviceType /T REG_DWORD /D 1 /F))
fix-vmnet-adapters.ps1
Код:
# see http://msdn2.microsoft.com/en-us/library/bb201634.aspx
#
# *NdisDeviceType
#
# The type of the device. The default value is zero, which indicates a standard
# networking device that connects to a network.
#
# Set *NdisDeviceType to NDIS_DEVICE_TYPE_ENDPOINT (1) if this device is an
# endpoint device and is not a true network interface that connects to a network.
# For example, you must specify NDIS_DEVICE_TYPE_ENDPOINT for devices such as
# smart phones that use a networking infrastructure to communicate to the local
# computer system but do not provide connectivity to an external network.
#
# Usage: run in an elevated shell (vista/longhorn) or as adminstrator (xp/2003).
#
# PS> .\fix-vmnet-adapters.ps1

# boilerplate elevation check

$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = new-object Security.Principal.WindowsPrincipal $identity
$elevated = $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

if (-not $elevated) {
	$error = "Sorry, you need to run this script"
	if ([System.Environment]::OSVersion.Version.Major -gt 5) {
		$error += " in an elevated shell."
	} else {
		$error += " as Administrator."
	}
	throw $error
}

function confirm {
$host.ui.PromptForChoice("Continue", "Process adapter?", [Management.Automation.Host.ChoiceDescription[]]@("&No", "&Yes"), 0) -eq $true}

# adapters key
pushd 'hklm:\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}'

# ignore and continue on error
dir -ea 0 | % {
	$node = $_.pspath
	$desc = gp $node -name driverdesc
	if ($desc -like "*TAP-Win*") {
		write-host ("Found adapter: {0} " -f $desc.driverdesc)
		if (confirm) {
			new-itemproperty $node -name '*NdisDeviceType' -propertytype dword -value 1
		}
	}
}
popd

# disable/enable network adapters
gwmi win32_networkadapter | ? {$_.name -like "*TAP-Win*" } | % {

	# disable
	write-host -nonew "Disabling $($_.name) ... "
	$result = $_.Disable()
	if ($result.ReturnValue -eq -0) { write-host " success." } else { write-host " failed." }

	# enable
	write-host -nonew "Enabling $($_.name) ... "
	$result = $_.Enable()
	if ($result.ReturnValue -eq -0) { write-host " success." } else { write-host " failed." }
}
нарыл у майкрософта

ps. и не забываем установить высокий приоритет для сервиса OpenVPN:
Код:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\OpenVPN]
"priority"="HIGH_PRIORITY_CLASS"
__________________
все "спасибы" - в приват и в репутацию! не засоряйте форум!!!!
~~~~~~~~~~~~~~~~~~~~~~

The time has come it is quite clear, our antichrist is almost already here.
M.M.
Plague вне форума  

Теги (метки)
openvpn, tap, tap-device, vpn

Опции темы

Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 16:34.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.