Папярэджанне OpenVPN AF_INET: бясшкодны адкат ці збой сокета?
Адрозніце адкат AF_INET ад пазнейшага збою стварэння сокета: прачытайце дакладны радок, затым праверце слухач і наступную памылку.
Два радкі журнала OpenVPN пачынаюцца аднолькавымі словамі, і толькі адзін з іх паведамляе пра праблему. Could not determine IPv4/IPv6 protocol. Using AF_INET — гэта паведамленне пра адкат: профіль пакінуў сямейства адрасоў адкрытым, таму дэман выбраў адно і працягнуў працу. Галіна збою паведамляе, што сокет не створаны, і патрабуе перазапуску. Усё пасля агульнага прэфікса адрознівае іх, таму чытайце далей, перш чым нешта змяняць.
Што паведамляе адкат
OpenVPN прымае яўнае сямейства праз proto udp4 або proto udp6, а таксама прымае proto udp, калі сямейства павінна вызначацца пры запуску. У другім выпадку дэман аглядае лакальныя даныя прывязкі і выбірае.
Калі гэта вызначэнне спрацоўвае, папярэджанне паказвае, у які бок яно пайшло, і працэс пераходзіць да стварэння сокета. Сервер з proto udp на двухстэкавым хосце часта трапляе такім чынам на IPv4. Нішто ў гэтым шляху не з'яўляецца памылкай, і нішто ў ім не намякае на атаку, адсутны вэб-сервер або адхілены акаўнт. Радок карысны толькі таму, што наступныя праверкі павінны параўноўвацца з сямействам, якое ён называе.
Стаўцеся да гэтага як да адказу на адно пытанне, а не як да дыягназу. Ён кажа, якое сямейства выбраў гэты працэс, і нічога не кажа пра тое, чаму кліент не можа падключыцца.
Як выглядае галіна збою
Пазней у тым жа кодзе сокета ёсць галіна, дзе сокета няма зусім. Яна запісвае больш кароткае паведамленне пра сямейства адрасоў і запытвае перазапуск, бо працягваць няма з чым. Пачатковыя словы супадаюць з адкатам, а вынік — не.
Адрознівайце іх па тым, што ідзе далей. Калі дэман працягвае працаваць і паведамляе пра свой слухач, радок быў інфармацыйным. Калі ён выходзіць або перазапускаецца ў цыкле, размова ўжо ідзе пра прывязку.
Знойдзены grep радок таксама не вызначае галіну. Фраза сустракаецца ў перакручаных зводках, у перанесеных радках і ў фрагментах журнала, якія людзі ўстаўляюць з другіх рук, таму чытайце суседнія радкі і парадак пазнак часу, а не адзінае супадзенне.
Праверце слухач замест папярэджання
Працуючы сервер адказвае на пытанне пра сямейства наўпрост, без здагадак па тэксце журнала.
ss -lunp | grep openvpn
ss -ltnp | grep openvpnСупастаўце сямейства, адрас і порт з профілем. Радок 0.0.0.0:1194 — гэта толькі IPv4, а радок [::]:1194 на двухстэкавым хосце можа прымаць абодва сямействы ў залежнасці ад налады bindv6only. Калі профіль кажа udp, а сокет — IPv4, кліенты, чый рэзалвер вяртае толькі запіс AAAA, пацерпяць збой яшчэ да таго, як тунель будзе ўзгоднены.
Затым праверце з кліента, падобнага да вашых карыстальнікаў: той жа шлях рэзалвера, той жа тып сеткі. Лакальнае злучэнне з сервера мала што даказвае пра трафік, які праходзіць праз прыладу NAT або правіла міжсеткавага экрана, напісанае для іншага сямейства.
Калі прымусовае сямейства апраўданае
Фіксацыя proto udp4 падыходзіць для разгортвання толькі з IPv4: DNS-імя толькі з A, правілы міжсеткавага экрана для аднаго адраса v4, кліенты за аператарамі, якія выдаюць толькі адрасы v4. Гэта здымае неадназначнасць і робіць наступны набор радкоў журнала прадказальным.
Тое ж меркаванне дзейнічае ў адваротны бок для асяроддзя з прыярытэтам IPv6, а udp6 перад базай кліентаў толькі з A — гэта самастойна створаны збой. Прымусовае сямейства толькі дзеля таго, каб заглушыць бясшкоднае папярэджанне, — класічная версія гэтай памылкі, бо вы змянілі, хто можа падключыцца, у абмен на спакайнейшы журнал.
Выбірайце зыходзячы з канчатковых пунктаў і кліентаў, якія павінны да іх дабрацца. Кіраўніцтва OpenVPN 2.6 апісвае формы транспарту, і паведамленне з'яўляецца вынікам гэтага выбару, а не яго ўваходам.
Трымайце запіс вузкім
Запішыце дакладны радок з ягонай пазнакай часу, эфектыўную наладу транспарту з працоўнага профілю, сокет у тым выглядзе, як яго паведамляе ядро, і наступны этап, які збаіў. Гэтыя чатыры пункты вырашаюць амаль кожнае пытанне, якое ўздымае паведамленне, і ніводзін з іх не патрабуе здагадак пра непаўязаныя службы. Яны таксама перажываюць перадачу справы, чаго не робіць здымак экрана з grep.
Прапановы пакетаў, якія прыходзяць разам з гэтым папярэджаннем, непаўязаныя, пакуль памылка не назаве адсутны выканальны файл.
Калі ifconfig сапраўды адсутнічае, дэман называе гэта па імені, калі скрыпт выклікае яго, і гэта заслугоўвае асобнага расследавання. Радок AF_INET і адсутная ўтыліта — розныя збоі, і ўсталёўка рэчаў, каб паглядзець, ці зменіцца папярэджанне, — гэта шлях ад чыстага хоста да заблытанага.