P_CONTROL_HARD_RESET_CLIENT_V2 у дневнику: да ли је то грешка?
Хард-ресет опкод отвара сесију; то није квар. Читајте даље да пронађете грешку сертификата, акредитива или рутирања која вас је заиста зауставила.
Линија се понавља сваких неколико секунди и изгледа као узрок свега: пакет назван control hard reset, који долази од клијента који нигде не стиже. То није грешка. То је прва порука нове сесије, а понављање је симптом нечег другог што касније пада. Раздвајање онога што ознака каже од онога што је веза урадила после је цела дијагноза.
Опкод именује позицију у протоколу
OpenVPN мултиплексира неколико врста пакета преко једног сокета, а опкод говори примаоцу коју врсту држи. Хард-ресет пакети отварају сесију, контролни пакети носе материјал руковања, потврде потврђују пријем, а подаци носе терет тунела. Читање првог бајта показује где у тој размени пакет припада, а дефиниције пакета у изворном коду именују сваку фамилију изричито.
То је све што говори. Пакет означен као почетни ресет клијента доказује да је пакет стигао до ваше тачке посматрања и да друга страна жели да започне сесију. Не доказује да је клијент поверовао вашем сертификату, да су његови акредитиви прихваћени или да је податковни канал икада постао употребљив.
Суфикс V2 је ознака генерације протокола за ту фамилију пакета, а не верзија производа и не подешавање које инсталирате. Ништа у имену не односи се на ресетовање тунела, поновно покретање сервиса или чишћење кеша.
Шта клијент заиста ради у том тренутку
Клијент отвара идентификатор сесије на који ће обе стране прикачити следећи контролни саобраћај. Када је конфигурисана заштита контролног канала, тај први пакет већ носи HMAC који примаоцу омогућава да одлучи хоће ли уложити труд у остатак размене. Прималац који га не може проверити тихо одбацује пакет, због чега погрешан заједнички кључ изгледа као клијент који говори у празно.
Ништа видљиво кориснику још се није догодило. Ниједан сертификат није валидиран, ниједно корисничко име није понуђено и ниједна адреса тунела није додељена. Ресет је преамбула руковања, па је свака оцена везе у овом тренутку преурањена.
За празну петљу поновног повезивања занимљив детаљ је интервал. Клијент који покушава поново у фиксном циклусу без напретка обично се одбија пре него што може да напредује, а разлог је у дневнику друге стране, а не у имену пакета.
Где се крије прави квар након ресетовања
Прочитајте два дневника један уз други и пронађите први догађај који није ресет. Код клијента се неуспех валидације сертификата пријављује с конкретним разлогом: истекао сертификат, несклад имена или непознат издавалац. На серверу се одбијање акредитива пријављује као неуспех аутентификације с властитим разлогом. Оба су далеко конкретнија од поновљеног погледа сервера на нове покушаје.
Упарите један покушај по временској ознаци уместо читања сваког дневника изоловано, јер се исти неуспех појављује на оба места са различитом формулацијом и различитом тежином. Страна која одустаје обично наведе зашто.
Ако ниједна страна не пријављује одбијање, а размена и даље стаје, граница је достижност, а не поверење. Ватрозид који одбацује повратни смер, уређај за превођење мрежних адреса коме истиче мапирање или проблем с MTU-ом који убија веће пакете руковања сви стварају заглављену размену без икакве грешке аутентификације.
grep -nE 'VERIFY|AUTH_FAILED|TLS Error|SIGUSR1' /var/log/openvpn*.log
Та претрага није дијагноза сама по себи, али вас у једном кораку премешта из протоколног речника у стварну класу квара.
Зашто је укидање провере погрешан рефлекс
Када се ресет стално појављује, најбрже решење на изглед је искључити валидацију сертификата или одустати од заштите контролног канала да се нешто повеже. То мења дијагностикован квар за недијагностикован и оставља имплементацију да прихвата стране које је направљена да одбије.
Промените уместо тога границу која је заиста пала. Проблем поверења припада сертификационом телу и профилу који га референцира. Проблем времена припада сату. Проблем акредитива припада аутентификационом бекенду који их је одбио, а недостаupна страна припада путу између два хоста.
Опкод је у разговору с подршком користан за једну ствар: говори вам да је друга страна отишла довољно далеко да покуша. Оно што се догодило после требате знати, и то је записано у оном дневнику који бележи прво конкретно одбијање. Пођите одатле, и линија ресета престаје да изгледа као узрок и почиње да изгледа као временска ознака.