“VPN ચાલુ છે?” વાસ્તવમાં એક જ વાક્યમાં ત્રણ પ્રશ્નો છે। તમારા કોડને તેમાંથી કયો જોઈએ તે પહેલો નિર્ણય છે, અને મોટાભાગના અમલીકરણો એ જ ચૂકી જાય છે। આ ઉપકરણ પર ટનલ છે કે નહીં, આ ગંતવ્ય તરફનો ટ્રાફિક તેમાંથી બહાર નીકળે છે કે દૂરનો છેડો તમે અપેક્ષા રાખો છો તે ઓળખ સાથે જવાબ આપે છે। ગુણધર્મ પસંદ કરો, પછી તેને માપતો સંકેત પસંદ કરો, અને અંતે લોગમાં લખો કે તમે ખરેખર કયો માપ્યો।

ત્રણ ગુણધર્મ, ત્રણ સંકેત

દરેકને એક લાઇનમાં સંકોચીને, ત્રણ પ્રશ્નોના ત્રણ અલગ જવાબો છે। નીચેનું કોષ્ટક નિર્ણય પોતે છે, તેનો સારાંશ નહીં।

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

છેલ્લી પંક્તિ ધીમે વાંચો। જવાબ આપતો ખાનગી હોસ્ટ સાબિત કરે છે કે કંઈકે જવાબ આપ્યો, એ નહીં કે જવાબ ટનલમાંથી આવ્યો, અને તે બીજી બાજુ કોણ છે તે વિશે કંઈ કહેતું નથી। જો તમને જોઈતો ગુણધર્મ માર્ગ હોય, તો માર્ગ માપો।

અસ્તિત્વ: પ્લેટફોર્મની પોતાની સ્થિતિ

Windows સ્થાનિક પ્રોફાઇલો માટે Remote Access Service API દ્વારા આનો જવાબ આપે છે। RasEnumConnections શું જોડાયેલું છે તેની યાદી આપે છે, RasGetConnectStatus એક એન્ટ્રીની સ્થિતિ જણાવે છે, અને RasGetLinkStatistics ઝડપ, બાઇટ કાઉન્ટર અને કનેક્શનની ઉંમર ઉમેરે છે। મર્યાદાઓ જ મુખ્ય મુદ્દો છે: OpenVPN, WireGuard અને વેન્ડર ક્લાયન્ટ ક્યારેય RAS કનેક્શન નોંધાવતા નથી, તેથી તે પ્રકારની સ્વસ્થ ટનલ ખાલી યાદી બતાવે છે અને ભોળો કોડ તેને બંધ હોવાનું જણાવે છે।

Linux ડેસ્કટોપ D-Bus પર NetworkManager દ્વારા એ જ ગુણધર્મ જાહેર કરે છે, જ્યાં VPN કનેક્શન ઑબ્જેક્ટ પરનો PropertiesChanged તપાસને ઘટનામાં ફેરવે છે અને State ગુણધર્મ જણાવે છે કે લિંક ક્યારે જોડાયેલ સ્થિતિમાં પહોંચે છે। શેલમાંથી nmcli connection show --active એ જ માહિતી વાંચે છે, અને ડિબગિંગ કરતી વખતે તમને એ જ જોઈએ। macOS એ યાદી System Configuration ફ્રેમવર્કમાં રાખે છે, અને scutil તેનું કમાન્ડ-લાઇન દૃશ્ય છે। ત્રણેય પ્લેટફોર્મ સંચાલિત કનેક્શનનું વર્ણન કરે છે, અને ત્રણેય એવી ટનલ માટે શાંત થઈ જાય છે જે તે સંચાલિત કરતું નથી।

માર્ગ: પેકેટ ખરેખર ક્યાં જાય છે

નામ મેળવવું એ સૌથી પહેલાં બધા તરફ જતો ટૂંકો રસ્તો છે: ઇન્ટરફેસની યાદી બનાવો, સ્ટ્રિંગને tun, tap, ppp કે ipsec સામે ચકાસો, અને મેળને પુરાવો ગણો। તે એક હ્યુરિસ્ટિક છે, અને ઇન્ટરફેસનો સમૂહ તેમાંથી કંઈ પસાર થાય કે ન થાય તેમ છતાં એકસરખો દેખાઈ શકે છે। જૂના iOS બિલ્ડ આ રીતે જવાબ આપતા હતા અને પછીના બંધ થઈ ગયા, કારણ કે દૃશ્યમાન ઇન્ટરફેસ હવે બે સ્થિતિઓને અલગ પાડતા ન હતા।

ત્યાં તેનું સ્થાન સિસ્ટમ પ્રોક્સી શબ્દકોશે લીધું છે। જ્યારે VPN જોડાયેલ હોય ત્યારે પ્રોક્સી સેટિંગ્સનો કૉલ ટનલ સંબંધિત ઇન્ટરફેસ સુધી મર્યાદિત કી પરત આપે છે, અને જ્યારે કંઈ જોડાયેલ ન હોય ત્યારે શબ્દકોશ ખાલી પાછો આવે છે। તે સંભળાય તેનાથી નબળું વિધાન છે, કારણ કે તે ટનલ હોવાની સિસ્ટમની માન્યતા નોંધે છે, કયું ગંતવ્ય તેનો ઉપયોગ કરે છે તે નહીં।

Android પાસે આ જાળનું પોતાનું સંસ્કરણ છે: vpn.connectivity પ્રસારણ કેટલાક બિલ્ડમાં મેનિફેસ્ટમાં ઘોષિત રિસીવર સુધી પહોંચે છે અને અન્યમાં રનટાઇમ નોંધાયેલ રિસીવર સુધી। તેને શ્રેષ્ઠ પ્રયાસ તરીકે લો, અને તેની પાછળ સીધી પ્રોબ રાખો।

જ્યારે ગંતવ્ય જ મહત્ત્વનું હોય, ત્યારે એડેપ્ટર યાદીને બદલે રૂટિંગ કોષ્ટકને પૂછો। ડિફોલ્ટ-ગેટવે હ્યુરિસ્ટિક બહુ-નેટવર્ક મશીનો પર અને પોતાનું ગેટવે સ્થાપિત કરતી ટનલ પર તૂટી પડે છે।

ઓળખ: દૂરના છેડાની તપાસ કરો

દર થોડી સેકંડે દૂરના છેડે ICMP પડઘો મોકલતું લૂપ આ પ્રકારની સૌથી સસ્તી તપાસ છે, અને તે ઉપયોગી દિશામાં નિષ્ફળ જાય છે। તેને એવા સરનામે દિશામાન કરો જે ફક્ત ખાનગી નેટવર્કની અંદર જ અસ્તિત્વમાં હોય, કારણ કે જાહેર સરનામું કોઈપણ કાર્યરત અપલિંક પર જવાબ આપે છે અને કંઈ સાબિત કરતું નથી। જ્યાં ICMP ફિલ્ટર થાય છે, ત્યાં સેવા પોર્ટ પર ટૂંકું TCP કનેક્શન એ જ કામ કરે છે।

સર્વર-સાઇડ તપાસ પાસે બરાબર એક જ સંકેત ઉપલબ્ધ છે: કનેક્શન પરનું સ્રોત સરનામું। શ્રેણીઓની યાદી જાળવવી એ જાળવણીનું કામ છે, અને તે ટનલને એ જ બ્લોક વાપરતા અન્ય કોઈપણ નેટવર્કથી અલગ કરી શકતું નથી।

જાડી નીતિ આ સાથે જીવી શકે છે। ઓળખ નહીં, તેથી તેના પેકેટ ક્યાંથી આવતા લાગે છે તેના પર ભરોસો કરવાને બદલે ક્લાયન્ટને પ્રમાણિત કરો।

શ્રેણીની નોંધ કરો, ચુકાદાની નહીં

નિષ્ફળતાની શ્રેણીઓ લોગમાં અલગ રાખો: કોઈ ઇન્ટરફેસ જ નથી, ઇન્ટરફેસ છે પણ ગંતવ્ય પહોંચની બહાર છે, ગંતવ્ય પહોંચી શકાય તેવું છે પણ પ્રમાણીકરણ નકારાયું છે। આ ત્રણ અલગ માલિકો છે, અને દરેક અલગ તપાસ ખોલે છે।

એમને એક જ “VPN બંધ” માં સમાવી દેવાથી રિપોર્ટ એવી ટીમ પાસે જાય છે જે તેને સુધારી શકતી નથી। શ્રેણી એ ઉપયોગી આઉટપુટ છે; ચુકાદો એ છે જે તેને ખોટું બનાવે છે।

સંબંધિત લેખો