Die bediener herbegin, OpenVPN begin, en RRAS kom op terwyl die adapter of roete waarvan dit afhanklik is, nog ontbreek. Om RRAS ’n minuut later met die hand te herbegin, maak dit reg, wat die probleem opgelos laat lyk en die werklike een verberg. Twee verskillende toestande word hier verwar: die voorvereiste diens loop, en die netwerkhulpbron wat RRAS werklik nodig het, het bruikbaar geword. ’n Windows-diensafhanklikheid kan die eerste toestand uitdruk en nooit die tweede nie, so om een by te voeg sonder om die hulpbron te definieer, koop vir jou ’n netjieser opstart en dieselfde fout.

Hoe die simptoom op ’n koue opstart lyk

Die aanduiding is die verskil tussen ’n koue begin en ’n herbegin. By ’n koue begin rapporteer RRAS dat hy loop terwyl die tonneladapter afwesig is, die roete ontbreek, of die eweknie-adres nog nie oplos nie. ’n Handmatige herbegin slaag dan omdat die hulpbron teen daardie tyd bestaan, en die diens lees bloot ’n wêreld weer wat hy ’n minuut vroeër nie kon sien nie. Die dienslog sal in beide gevalle ’n skoon begin wys, en daarom verduidelik die gebeurteniskyker alleen dit selde.

Neem albei toestande vas voordat jy iets verander: wat RRAS by die opstart rapporteer, en wat bestaan op die oomblik dat die handmatige herbegin slaag. As daardie twee waarnemings identies is, is opstartorde nie jou verklaring nie en sal ’n afhanklikheid nie help nie. Die vergelyking kos tien minute en spaar ’n week se raai.

’n Afhanklikheid wat bygevoeg is op grond van “dit werk ná ’n herbegin” vertraag net dieselfde fout met die tyd wat die voorvereiste diens neem om RUNNING te rapporteer. Dit maak ook die opstart moeiliker om te beredeneer, want die ordeningsbeperking lyk nou na ’n verklaring. Vra watter objek die afhanklikheid waarborg en of daardie objek die een is wat RRAS nie kon sien nie.

Noem die hulpbron, nie net die diens nie

Skryf die spesifieke ding neer wat ontbreek. Dit kan ’n tonneladapter met ’n adres wees, ’n roete na ’n eweknie-subnet, ’n DNS-antwoord, of ’n sertifikaat wat nog voorsien word. “Die VPN-diens loop” is nie ’n hulpbronbeskrywing nie, en ’n groen ikoon in ’n kliënt ook nie. Totdat jy die objek en ’n opdrag kan noem wat dit wys, het jy nie die toestand gedefinieer waarop jy probeer wag nie.

Stel ook vas hoe hierdie OpenVPN-instansie begin word. ’n Tonnel wat deur ’n GUI bestuur word en een wat deur ’n diens bestuur word, het verskillende opstartlewensiklusse, en die diensnaam moet van die masjien voor jou kom, nie uit ’n voorbeeld vir ’n ander installeerder nie. Lys die kandidate eerder as om ’n onthoude naam te vertrou.

Get-Service | Where-Object Name -match 'vpn|openvpn' | Select-Object Name, Status, StartType

Lees die afhanklikheidsketting voordat jy iets byvoeg

Die Diensbeheerder rapporteer toestande soos START_PENDING en RUNNING, en die SERVICE_STATUS reference definieer presies wat elke veld beteken. Nie een van daardie toestande belowe dat ’n eweknie, ’n DNS-naam of ’n stroomaf-toepassing bereikbaar is nie. Daardie gaping is die hele rede waarom hierdie fout ’n korrek gekonfigureerde afhanklikheid oorleef.

Get-Service -Name RemoteAccess | Select-Object Status, StartType
sc.exe qc RemoteAccess
Get-Service -Name RemoteAccess | Select-Object -ExpandProperty DependentServices

Die DEPENDENCIES-reël uit sc.exe qc is die lys wat jy moet bewaar, want sc.exe config RemoteAccess depend= vervang die hele lys in plaas daarvan om daarby te voeg. Om ’n onverwante voorvereiste te laat val terwyl jy ’n VPN-diens byvoeg, skep ’n tweede fout wat op ’n ander opstart verskyn, en dit is baie moeiliker om te diagnoseer as die oorspronklike. Kopieer die bestaande lys in jou veranderingsrekord voordat jy dit aanraak.

Afhanklikhede verander ook die afskakelgedrag, want om ’n voorvereiste te stop, stop die dienste wat daarvan afhanklik is. Kyk wat tydens instandhouding gebeur voordat jy RRAS aan iets koppel wat gereeld herbegin.

Maak die herbegin voorwaardelik, nie tydgebaseer nie

’n Vaste wagtyd aanvaar dat die tonnel altyd binne daardie venster gereed sal wees, en dit is juis die aanname wat faal op die opstart waar ’n sertifikaat stadig is of ’n skakel af is. Kontroleer die hulpbron self, met ’n sperdatum, en laat die kontrole besluit of ’n herbegin hoegenaamd nodig is.

Get-NetAdapter | Where-Object Status -eq 'Up'
Get-NetRoute -DestinationPrefix 0.0.0.0/0
Get-WinEvent -LogName System -MaxEvents 40 |
  Where-Object ProviderName -eq 'Service Control Manager'

’n Geskeduleerde taak by die opstart wat daardie kontroles uitvoer en RRAS net herbegin wanneer die adapter of roete nog ontbreek, is begrens, ouditeerbaar en maklik om te verwyder. Die alternatief, om RRAS by elke herverbinding te herbegin, onderbreek gesonde sessies en verander ’n onstabiele skakel in ’n herbegin-lus. Daardie lus is erger as die oorspronklike fout, want dit raak nou gebruikers wat heeltemal reg was.

Gee die kontrole ’n maksimum wagtyd wat ooreenstem met hoe lank die tonnel op jou hardeware redelikerwys neem, en laat die taak met ’n nie-nul status eindig wanneer dit opgee. ’n Stille taak wat bloot ophou probeer, is nie te onderskei van een wat geslaag het nie.

Teken die oorgang aan sodat die volgende opstart homself verduidelik

Teken drie tydstempels op dieselfde reël aan: wanneer die afhanklikheidsdiens RUNNING bereik het, wanneer die vereiste hulpbron verskyn het, en wanneer RRAS dit uiteindelik aanvaar het. Daardie enkele reël beantwoord die vraag wat die volgende ingenieur sal vra, en dit kos byna niks om te produseer nie. Sonder dit begin die volgende ondersoek by dieselfde raaiwerk as hierdie een.

Stop die outomatisering na ’n vasgestelde aantal pogings en rapporteer mislukking eerder as om vir ewig te herprobeer. ’n Opstart wat eindig met ’n duidelike “hulpbron het nooit verskyn nie”-boodskap is meer werd as een wat ’n diens in die duister bly herbegin. Wanneer daardie boodskap wel verskyn, is die hulpbronnaam wat jy in die tweede afdeling neergeskryf het, wat die volgende persoon sal soek.

Verwante artikels