Ang “Buhay ba ang VPN?” ay talagang tatlong tanong sa isang pangungusap. Alin sa mga ito ang kailangan ng code mo ang unang pasya, at iyon ang nilalaktawan ng karamihan ng implementasyon. May tunnel ba sa device na ito, lumalabas ba ang trapiko patungo sa destinasyong ito sa pamamagitan nito, o sumasagot ang malayong dulo sa identidad na inaasahan mo. Piliin ang katangian, pagkatapos ang senyales na sumusukat dito, at sa huli isulat sa log kung alin ang aktwal na sinukat mo.

Tatlong katangian, tatlong senyales

Kapag pinagsama sa isang linya ang bawat isa, may tatlong magkakaibang sagot ang tatlong tanong. Ang talahanayan sa ibaba ay ang pasya mismo, hindi ang buod nito.

PropertySignal that answers itWhat it still leaves open
ExistenceThe platform's own connection state: RAS on Windows, NetworkManager on D-Bus on Linux, scutil on macOSTunnels of a type the platform does not manage, which includes most third-party clients
PathA route lookup for the one destination, or a scoped proxy or interface key that names the tunnelWhether the far end is the peer you trust
IdentityAn authenticated response from the far end, or a source-address policy applied on the serverWhich local interface carried the packets

Basahin nang dahan-dahan ang huling hilera. Ang pribadong host na sumasagot ay nagpapatunay na may sumagot, hindi na dumaan ang sagot sa tunnel, at wala itong sinasabi tungkol sa kung sino ang nasa kabilang dulo. Kung ang katangiang kailangan mo ay ang landas, sukatin ang landas.

Pag-iral: ang sariling estado ng platform

Sinasagot ito ng Windows para sa mga katutubong profile sa pamamagitan ng Remote Access Service API. Inililista ng RasEnumConnections kung ano ang konektado, iniuulat ng RasGetConnectStatus ang estado ng isang entry, at idinadagdag ng RasGetLinkStatistics ang bilis, mga byte counter at edad ng koneksyon. Ang mga limitasyon ang punto: ang OpenVPN, WireGuard at mga kliyente ng vendor ay hindi kailanman nagrerehistro ng RAS connection, kaya ang isang malusog na tunnel ng ganoong uri ay nagpapakita ng walang laman na listahan at iniuulat ito ng naive na code bilang patay.

Inilalantad ng mga desktop ng Linux ang parehong katangian sa pamamagitan ng NetworkManager sa D-Bus, kung saan ang PropertiesChanged sa object ng koneksyon ng VPN ay ginagawang kaganapan ang pagsusuri at iniuulat ng katangiang State kung kailan naaabot ng link ang konektadong estado. Mula sa shell, binabasa ng nmcli connection show --active ang parehong impormasyon, at iyon ang gusto mo habang nagde-debug. Itinatago ng macOS ang listahang iyon sa framework na System Configuration, na ang scutil ang view nito sa command line. Ang tatlo ay naglalarawan ng koneksyong pinamamahalaan ng platform, at ang tatlo ay tahimik tungkol sa tunnel na hindi nito pinamamahalaan.

Landas: saan talaga pumupunta ang packet

Ang pagtutugma ng pangalan ang shortcut na unang hinahawakan ng lahat: ilista ang mga interface, subukan ang string laban sa tun, tap, ppp o ipsec, at kunin ang tugma bilang patunay. Heuristika ito, at ang set ng interface ay maaaring magmukhang pareho may dumadaan man dito o wala. Sumagot nang ganito ang mga lumang build ng iOS at tumigil ang mga bago, dahil hindi na nakikilala ng nakikitang mga interface ang dalawang estado.

Ang pumalit doon ay ang diksyunaryo ng proxy ng system. Habang konektado ang VPN, ibinabalik ng tawag sa mga setting ng proxy ang mga key na limitado sa mga interface na kaugnay ng tunnel, at kapag walang konektado ay bumabalik na walang laman ang diksyunaryo. Mas mahinang pahayag iyon kaysa sa tunog nito, dahil itinatala nito ang paniniwala ng system na may tunnel, hindi kung aling destinasyon ang gumagamit nito.

May sariling bersyon ng bitag ang Android: ang broadcast na vpn.connectivity ay umaabot sa mga receiver na idineklara sa manifest sa ilang build at sa mga receiver na nakarehistro sa runtime sa iba. Ituring itong pinakamabuting pagsisikap, at panatilihin ang direktang probe sa likod nito.

Kapag ang destinasyon ang mahalaga, tanungin ang routing table sa halip na ang listahan ng adapter. Nasisirain ang mga heuristika ng default gateway sa mga machine na may maraming network at sa mga tunnel na nag-iinstall ng sarili nilang gateway.

Identidad: subukan ang malayong dulo

Ang loop na nagpapadala ng ICMP echo sa malayong dulo tuwing ilang segundo ay ang pinakamurang pagsusuri ng ganitong uri, at nabibigo ito sa kapaki-pakinabang na direksyon. Itutok ito sa address na umiiral lamang sa loob ng pribadong network, dahil ang pampublikong address ay sumasagot sa anumang gumaganang uplink at wala itong pinatutunayan. Kung saan sinasala ang ICMP, ginagawa ng maikling TCP connection sa port ng serbisyo ang parehong trabaho.

Ang pagsusuri sa panig ng server ay may eksaktong isang senyales: ang source address sa koneksyon. Ang pagpapanatili ng imbentaryo ng mga saklaw ay gawaing maintenance, at hindi nito maihihiwalay ang tunnel mula sa anumang ibang network na nagkataong gumagamit ng parehong bloke.

Mabubuhay ang magaspang na patakaran kasama nito. Ang identidad ay hindi, kaya patunayan ang kliyente sa halip na magtiwala kung saan parang galing ang mga packet nito.

I-log ang kategorya, hindi ang hatol

Panatilihing hiwalay ang mga kategorya ng pagkabigo sa log: walang interface, may interface pero hindi maabot ang destinasyon, maabot ang destinasyon pero tinanggihan ang authentication. Tatlong magkakaibang may-ari ang mga ito, at bawat isa ay nagbubukas ng ibang imbestigasyon.

Ang pagsasama-sama ng mga ito sa isang “VPN down” ay nagpapadala ng ulat sa team na hindi ito maaayos. Ang kategorya ang kapaki-pakinabang na output; ang hatol ang gumagawa nitong mali.

Kaugnay na mga artikulo