2

Обновление 3: 22 января 2017 г.

Я сузил обновление, вызывающее эту проблему: KB3201845 OS Build 14393.479 от 9 декабря 2016 года. Я прошел все эти обновления шаг за шагом.

Глядя на манифест файлов изменений, эти файлы были изменены:

  • agilevpn.sys
  • vpnike.dll

Другие темы, которые я создал:

Форумы Microsoft Technet, еще 2 человека подтвердили ту же проблему.

Reddit / R / сети

Microsoft Feedback Hub

Обновить

  • Windows 10 pre-годовщины (версия 10.0.10586) работает нормально

  • Windows 10 после годовщины (версия 10.0.14393) падает, поэтому проблема с юбилейным обновлением.


Обновление 2

Я могу подключиться с помощью двух предновогодних хостов Windows нормально

Если я подключаю 1-й юбилейный хост Windows к VPN и поддерживаю его искусственно с помощью ping, я не могу подключить второй хост к VPN. В роутере "debug crypto ikev2" это происходит:

Jan 17 19:20:35.811: IKEv2:(SESSION ID = 25,SA ID = 2):Session present in ID PAIR TREE, but absent in TUPLE TREE
Jan 17 19:20:35.811: IKEv2:(SESSION ID = 25,SA ID = 2):: Failed to add new SA into session DB
Jan 17 19:20:35.811: IKEv2:(SESSION ID = 25,SA ID = 2):Queuing IKE SA delete request reason: unknown
Jan 17 19:20:35.811: IKEv2:(SESSION ID = 25,SA ID = 2):Sending DELETE INFO message for IPsec SA [SPI: 0x3DA95352]
Jan 17 19:20:35.811: IKEv2:(SESSION ID = 25,SA ID = 2):Check for existing IPSEC SA
Jan 17 19:20:35.811: IKEv2:(SESSION ID = 25,SA ID = 2):Delete all IKE SAs
Jan 17 19:20:35.811: IKEv2:(SESSION ID = 25,SA ID = 2):Sending DELETE INFO message for IKEv2 SA [ISPI: 0x3B52B7EBA8A353B1 RSPI: 0x16F36D79AAE675A5]

У меня есть маршрутизатор Cisco IOS, модель 892, который я настраиваю IKEv2 с EAP-MSCHAPv2 в качестве удаленной аутентификации (поддерживаемой сервером сетевой политики Windows 2012 Server) и аутентификации локального сертификата. Все работает, я могу подключиться к VPN и пинговать петлевой адрес на роутере. Windows 7 и 8.1 работают нормально, Android с Strongswan тоже.

Однако в Windows 10 (10.0.14393 - полностью обновленный 16 января 2017 г.), ровно через 60 секунд после последнего обмена данными (как пинг), Windows разрывает соединение. Так:

  • VPN-соединение T+0 открыто
  • T+60 VPN-соединение прерывается

  • VPN-соединение T+0 открыто
  • T+20 1 Ping на 172.16.0.5, ответ получен
  • T+80 VPN-соединение прерывается

VPN сбрасывается со следующим сообщением в журнале системных событий:

Источник: РасКлиент

Код события: 20226

CoId = {43121588-861C-447A-A510-C44C2BA86639}: пользователь LAPTOP-GLENN\Glenn набрал соединение с именем ikev2-test, которое было разорвано. Код причины, возвращаемый при прекращении, - 829.

Поэтому я начал копать и включил отладку RAS на клиенте:

netsh ras diagnostics * state=enabled

Единственный важный материал, который я смог найти, был в C:\Windows\tracing\rasman.log (20:11:51, когда происходит отключение - интересные биты с префиксом «***»):

[1384] 01-16 20:11:51:216: FreeInterfaceLuidIndex: Luid = 0
[1384] 01-16 20:11:51:216: RasUpdateVpnLuidCache: Luid: 17000000000000, fAddLuid:0
[1384] 01-16 20:11:51:216: RasUpdateVpnLuidCache: Removed Luid 17000000000000 from cache
[1384] 01-16 20:11:51:216: FreeInterfaceLuidIndex: done 0
[1384] 01-16 20:11:51:216: DeallocateRouteRequestCommon: pBundle=0xa50adde0, type=0x800
[1384] 01-16 20:11:51:232: DeActivated Route , bundlehandle 0x4, prottype = 2048
[1384] 01-16 20:11:51:232: DeAllocateRoute: PI_Type=0x800, PI_AdapterName=\DEVICE\{93A76D72-2010-45BB-9096-244B06735879}, PI_Allocated=-1
[3524] 01-16 20:11:51:248: SendProtocolResultToRasman: msgid=1, hPort: 6.
*** [3524] 01-16 20:11:51:248: Setting last error for port VPN2-1 to ppp error 0x3635
[3524] 01-16 20:11:51:248: SetProtocolResultAvailableEvent: Notification handle event for port 6 is not registered.
[2640] 01-16 20:11:51:248: WorkerThread: Disconnect event signaled on port: VPN2-1
[2640] 01-16 20:11:51:248: OVEVT_DEV_STATECHANGE. pOverlapped = 0xa4611940
[2640] 01-16 20:11:51:248: onecoreuap\net\rras\ras\rasman\rasman\worker.c, 2031: Disconnecting port 6, connection 0xa6af47e0, reason 1
[2640] 01-16 20:11:51:248: Disconnecting Port 0xVPN2-1, reason 1
[2640] 01-16 20:11:51:248: DisconnectPort: Saving Bundle stats for port VPN2-1
[2640] 01-16 20:11:51:263: RevertPostConnectionActions
[2640] 01-16 20:11:51:263: RasImpersonateUser. 0x0
[2640] 01-16 20:11:51:263: DeleteCredentialsFromCredMan
[2640] 01-16 20:11:51:263: DeleteCredentialsFromCredMan Done: 0
[2640] 01-16 20:11:51:263: RasRevertToSelf. 0x0
[2640] 01-16 20:11:51:263: QueueCloseConnections: no dependent connections
[2640] 01-16 20:11:51:263: 10. Throwing away handle 0x0!
[2640] 01-16 20:11:51:263: onecoreuap\net\rras\ras\rasman\rasman\util.c, 2315:Setting port 6 for autoclosure...
[2640] 01-16 20:11:51:263: onecoreuap\net\rras\ras\rasman\rasman\util.c 2327: Disconnected Port 6, reason 1. rc=0x0
[2640] 01-16 20:11:51:263: FreeBundle: freeing pBundle=0xa50adde0
[2640] 01-16 20:11:51:263: onecoreuap\net\rras\ras\rasman\rasman\util.c: 2443: port 6 state chg: prev=2, new=3
[2640] 01-16 20:11:51:263: onecoreuap\net\rras\ras\rasman\rasman\util.c: 2459: port 6 state chg: prev=3, new=4
[2640] 01-16 20:11:51:263: 5. Notifying of disconnect on port 6
[2640] 01-16 20:11:51:263: SignalPortDisconnect: Notification handle event for port 6 is not registered.
[2640] 01-16 20:11:51:263: onecoreuap\net\rras\ras\rasman\rasman\util.c: 2573: port 6 async reqtype chg: prev=0, new=0
[2640] 01-16 20:11:51:263: ***** DisconnectType=1,DisconnectReason=4,pConn=0xa6af47e0,cbports=1,signaled=1,hEvent=0xffffffff,fRedial=0
[2640] 01-16 20:11:51:263: Calling DwQueueRedial
[2640] 01-16 20:11:51:263: DwQueueRedial
[2640] 01-16 20:11:51:263: DwQueueRedial returned 0x0
[2640] 01-16 20:11:51:263: onecoreuap\net\rras\ras\rasman\rasman\util.c, 2634: Autoclosing port 6
[2640] 01-16 20:11:51:263: PortClose: port (6). OpenInstances = 1
[2640] 01-16 20:11:51:263: Freeing the notifier list for port 6
[2640] 01-16 20:11:51:263: PortClose (6). OpenInstances = 0
[2640] 01-16 20:11:51:263: onecoreuap\net\rras\ras\rasman\rasman\request.c: 3845: port 6 async reqtype chg: prev=0, new=0
[2640] 01-16 20:11:51:263: onecoreuap\net\rras\ras\rasman\rasman\request.c: 3848: port 6 state chg: prev=4, new=4
[2640] 01-16 20:11:51:263: PortClose: Resetting PCB_OpenedUsage for port: 6.
[2640] 01-16 20:11:51:263: RemoveConnectionPort: port 6, fOwnerClose=0, pConn=0xa6af47e0, pConn->CB_Ports=0

*** [2640] 01-16 20:11:51:263: Completely disconnected connection: Reason: ERROR_LINK_FAILURE (829)
[2640] 01-16 20:11:51:263: SendSensNotification(_RAS_DISCONNECT) for 0x00040000 returns 0x00000000
[2640] 01-16 20:11:51:263: Successfully notified event(128, C:\Users\Glenn\AppData\Roaming\Microsoft\Network\Connections\Pbk\rasphone.pbk, ikev2-test) to the caller.
[2640] 01-16 20:11:51:263: SignalNetman: IRasEventNotify::RasEvent returned S_FALSE
[2640] 01-16 20:11:51:263: DwSendNotificationInternal(ENTRY_DISCONNECTED) rc=0x1
[2640] 01-16 20:11:51:263: RemoveConnectionPort: FreeConnection hconn=0x40000, pconn=0xa6af47e0, AutoClose=1
[2640] 01-16 20:11:51:263: FreeConnection: pConn=0xa6af47e0, 1
[2640] 01-16 20:11:51:263: onecoreuap\net\rras\ras\rasman\rasman\request.c, 3918: Clearing the autoclose flag for port 6
[2640] 01-16 20:11:51:263: fAnyConnectedPorts: 0
[2640] 01-16 20:11:51:263: SetRasmanServiceStopControl: Enabled 1
[2640] 01-16 20:11:51:263: PortClose: DisableAutoWPPTracing failed with error 0x2 
[2640] 01-16 20:11:51:263: DisconnectPort Complete
[2640] 01-16 20:11:51:263: onecoreuap\net\rras\ras\rasman\rasman\worker.c: 2077: port 6 state chg: prev=4, new=4
[2640] 01-16 20:11:51:263: onecoreuap\net\rras\ras\rasman\rasman\worker.c: 2081: port 6 async reqtype chg: prev=0, new=0
[1276] 01-16 20:11:51:263: The specified notification entry with cookie 2 found.
[1276] 01-16 20:11:51:263: Dequed notification entry: (128, C:\Users\Glenn\AppData\Roaming\Microsoft\Network\Connections\Pbk\rasphone.pbk, ikev2-test) from the queue.
  • Запустил ту же конфигурацию на маршрутизаторе Cisco CSR1000v, и произошло то же самое.
  • Создал REG_DWORD с именем "InactivityIdleSeconds" в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class {4d36e972-e325-11ce-bfc1-08002be10318}\0012 (минипорт WAN (IKEv2)) и воспроизводился со своим значением, но это ничего не изменило, но это не изменилось смотри вот почему я это попробовал)
  • Поиграл с Dead Peer Detection, но это тоже ничего не изменило

Я не могу найти критерии, по которым Windows 10 считает подключение IKEv2 разорванным или какие изменения состояния приводят к тому, что Windows 10 считает, что VPN необходимо отключить.

Тааак ... какие-нибудь указатели?

Microsoft Technet: Ошибка 829 означает, что ERROR_LINK_FAILURE Модем (или другое подключаемое устройство) был отключен из-за сбоя соединения.

Microsoft Technet: 0x3635 означает 13877 ERROR_IPSEC_IKE_RPC_DELETE "Удалено через вызов RPC".

Конфигурация маршрутизатора Cisco IOS.

Журналы отладки маршрутизатора Cisco IOS IKEv2

Zipfile полного каталога C:\Windows\tracing

2 ответа2

0

Похоже, что это одноранговый узел, который удаляет сессию.;

* 16 января 20: 12: 10.655: IKEv2:(идентификатор сессии = 12, идентификатор SA = 1): полученный пакет [от 192.168.0.107:4500/To 192.168.0.200:4500/VRF i0: f0] Инициатор SPI: 598D998BFD1C9FFB - SPI ответчика: 6ADF174B54D76AA1 Идентификатор сообщения: 6 IKEv2 INFORMATIONAL Exchange REQUEST Содержимое полезной нагрузки: DELETE

так что вам нужно т / стрелять в клиент Windows (извините, если вы уже там ..)

Кроме того, вы фанат выглядит, как будто он играет ..

* 16 января 20: 11: 24.243:% ENVMON-3-FAN_FAILED: Вентилятор неисправен

0

Я смог обойти эту проблему, потому что я сам настроил VPN-сервер на своем сервере. Сервер StrongSwan VPN позволяет зарегистрировать скрипт обновления, который запускается при изменении клиентского соединения.

conn %default
    ...
    leftupdown=/absolute/path/to/keepalive/script.sh
    ...

И script.sh выглядит так:

#!/bin/bash
/usr/lib/ipsec/_updown $* # call original updown script, just to be sure

# PLUTO_VERB - name of the event
# PLUTO_PEER_SOURCEIP - IP of the client

PLUTO_IPSTRING="${PLUTO_PEER_SOURCEIP//./}" # strip client IP of dots, to create unique name for pidfile
PID_PATH="/absolute/path/to/writable/location"

if [ "up-client" == "$PLUTO_VERB" ]; then # when new client connects
        ping $PLUTO_PEER_SOURCEIP -i 30 >/dev/null 2>/dev/null & echo $! > "$PID_PATH/pluto$PLUTO_IPSTRING.pid" # launch ping in background, send packets every 30 seconds. Store the PID in given file.
fi

if [ "down-client" == "$PLUTO_VERB" ]; then # when client disconnects
        kill -9 $(cat "$PID_PATH/pluto$PLUTO_IPSTRING.pid") # kill the ping process
        rm -rf "$PID_PATH/pluto$PLUTO_IPSTRING.pid" # remove the associated PID file
fi

Вы должны редактировать пути, чтобы отразить ваши настройки.

Этот подход немного взломан, но работает отлично. К сожалению, это возможно, только если вы можете создать такой скрипт. Если у вас нет доступа к удаленному VPN-серверу, это вам не поможет.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .