Windows 10 porzuca połączenie IKEv2 VPN z routerem Cisco w dokładnie 60 sekund po ostatniej wymianie danych

2

Aktualizacja 3: 22 stycznia 2017 r

Zawęziłem aktualizację, która powoduje ten problem: KB3201845 Kompilacja systemu operacyjnego 14393.479 od 9 grudnia 2016 r . Przejrzałem wszystkie te aktualizacje krok po kroku.

Patrząc na manifest plików zmian, pliki te zostały zmienione:

  • agilevpn.sys
  • vpnike.dll

Inne tematy, które utworzyłem:

Microsoft Technet Forums, 2 inne osoby potwierdziły ten sam problem .

Reddit / r / networking

Microsoft Feedback Hub

Aktualizacja

  • Przed rocznica Windows 10 (wersja 10.0.10586) działa dobrze

  • Upada rocznica Windows 10 (wersja 10.0.14393), więc problem dotyczy aktualizacji rocznicowej.


Aktualizacja 2

Mogę połączyć się przy użyciu dwóch pre-rocznicowych hostów Windows

Jeśli podłączę hosta Windows z rocznicą 1 do sieci VPN i utrzymam go przy życiu sztucznie przez pingowanie, nie będę mógł podłączyć drugiego hosta do sieci VPN. W przypadku „debugowania krypto ikev2” routera dzieje się tak:

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]

Mam router Cisco IOS, model 892, który konfiguruję IKEv2 z EAP-MSCHAPv2 jako zdalne uwierzytelnianie (wspierane przez serwer zasad sieciowych systemu Windows 2012 Server) i uwierzytelnianie lokalne. Wszystko działa, mogę połączyć się z VPN i wysłać ping na adres routera. Windows 7 i 8.1 działają dobrze, Android z Strongswan.

Jednak w systemie Windows 10 (10.0.14393 - w pełni aktualny 16 stycznia 2017 r.), Dokładnie 60 sekund po ostatniej wymianie danych (jak ping), system Windows przerywa połączenie. Więc:

  • Połączenie T + 0 VPN otwarte
  • Zerwane połączenie T + 60 VPN

  • Połączenie T + 0 VPN otwarte
  • T + 20 1 Ping do 172.16.0.5, otrzymano odpowiedź
  • Zerwane połączenie T + 80 VPN

Sieć VPN jest usuwana z następującym komunikatem w dzienniku zdarzeń systemu:

Źródło: RasClient

Identyfikator zdarzenia: 20226

CoId = {43121588-861C-447A-A510-C44C2BA86639}: Użytkownik LAPTOP-GLENN \ Glenn wybrał połączenie o nazwie ikev2-test, które zostało zakończone. Kod przyczyny zwracany po zakończeniu to 829.

Zacząłem więc kopać i włączyć debugowanie RAS na kliencie:

netsh ras diagnostics * state=enabled

Jedyne istotne rzeczy, jakie mogłem znaleźć, to C: \ Windows \ tracing \ rasman.log (20:11:51 dzieje się, gdy następuje rozłączenie - ciekawe bity poprzedzone „***”):

[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.
  • Uruchomiłem tę samą konfigurację na routerze Cisco CSR1000v i dokładnie tak samo się stało.
  • Utworzono REG_DWORD o nazwie „InactivityIdleSeconds” pod HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Class {4d36e972-e325-11ce-bfc1-08002be10318} \ 0012 (WAN Miniport (IKEv2)) i grał z jego wartością, ale to nic nie zmieniło ( zobacz tutaj, dlaczego tego spróbowałem )
  • Grałem z Dead Peer Detection, ale to też nic nie zmieniło

Nie mogę znaleźć kryteriów, które należy spełnić, aby system Windows 10 uznał połączenie IKEv2 za nieaktualne lub jakie zmiany stanu powodują, że system Windows 10 uważa, że ​​VPN musi zostać odłączony.

Soooo ... jakieś wskazówki?

Microsoft Technet: Błąd 829 oznacza ERROR_LINK_FAILURE Modem (lub inne urządzenie łączące) został odłączony z powodu awarii łącza.

Microsoft Technet: 0x3635 oznacza 13877 ERROR_IPSEC_IKE_RPC_DELETE „Usunięto przez wywołanie RPC”.

Konfiguracja routera Cisco IOS.

Dzienniki debugowania IKEv2 routera COS IOS

Plik zip pełnego katalogu C: \ Windows \ tracing

Przesunięcie ku czerwieni
źródło
Wygląda na to, że coś się rozłączy po 60 latach. Nie jest to jednak ustawienie sesji routera. Możesz sprawdzić, czy jest to serwer AAA DC1, prawdopodobnie tam jest skonfigurowany.
Overmind
1
Przejrzałem ustawienia Network Policy Server i żadne takie ustawienie nie jest skonfigurowane. Nie wyjaśniłbym również, dlaczego widzę to zachowanie tylko w systemie Windows 10 i dlaczego kończy się ono z powodu awarii łącza.
RedShift,
Różne protokoły szyfrowania mogą mieć różne zachowania. Upewnij się, że stacja W10 używa tych samych dokładnych protokołów, co W7 do połączenia. Spróbuj przełączyć między SSTP, L2TP / IPsec i ustaw PPTP jako ostateczność.
Overmind
2
Próbuję odejść od starszych protokołów, więc nie, nie mogę obniżyć wersji ...
RedShift
1
Mam dokładnie ten sam problem, twoje dzienniki są w zasadzie dosłowne moich dzienników. Jedyną różnicą jest to, że mam serwer Ubuntu z serwerem StrongSwan 5.1 zamiast routera Cisco. Mój numer kompilacji Win10 jest również taki sam. PPTP działa, ale ma inne problemy, dlatego przejście na IPSec. Android StrongSwan również.
jnovacho

Odpowiedzi:

0

Byłem w stanie obejść ten problem, ponieważ sam skonfigurowałem serwer VPN na moim serwerze. Serwer StrongSwan VPN umożliwia zarejestrowanie skryptu aktualizacji, który jest uruchamiany przy każdej zmianie połączenia klienta.

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

I script.shwygląda to tak:

#!/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

Musisz edytować ścieżki, aby odzwierciedlić konfigurację.

To podejście jest trochę hack, ale działa idealnie. Niestety jest to możliwe tylko wtedy, gdy możesz stworzyć taki skrypt. Jeśli nie masz dostępu do zdalnego serwera VPN, to ci nie pomoże.

jnovacho
źródło
Wydaje się, że jest to spowodowane przez kompilację 14393.479 systemu operacyjnego KB3201845 z 9 grudnia 2016 r. Zobacz aktualizację w głównym tekście tematu.
RedShift,
0

Wygląda na to, że to peer usuwa sesję ..;

* 16 stycznia 20: 12: 10.655: IKEv2: (ID SESJI = 12, ID SA = 1): Odebrany pakiet [Od 192.168.0.107:4500/To 192.168.0.200:4500/VRF i0: f0] SPI inicjatora: 598D998BFD1C9FFB - Interfejs SPI obiektu odpowiadającego: 6ADF174B54D76AA1 Identyfikator komunikatu: 6 IKEv2 INFORMACJA O WYMIANIE Treść ładunku: USUŃ

więc musisz t / strzelać do klienta Windows (przepraszam, jeśli już tam jesteś ..)

też jesteś fanem, jakby grał ...

* 16 stycznia 20: 11: 24.243:% ENVMON-3-FAN_FAILED: Wentylator działa nieprawidłowo

użytkownik690701
źródło
Tak, już rozwiązałem problemy z klientem Windows, patrz aktualizacja 3 powyżej. Tak, wiem, że FAN jest „zepsuty”, włączyłem wolniejszy, ponieważ domyślnie był zbyt głośny :-).
RedShift,