OpenVPN സർവർ തയ്യാറാണെന്ന് nc -uz-ന് തെളിയിക്കാൻ കഴിയാത്തത് എന്തുകൊണ്ട്
ഒന്നും കേൾക്കാത്തപ്പോഴും UDP netcat പരിശോധന വിജയം റിപ്പോർട്ട് ചെയ്യുന്നു, അതിനാൽ OpenVPN സർവർ തയ്യാറാണെന്ന് അതിന് തെളിയിക്കാനാവില്ല. പ്രക്രിയ, ലോഗ്, ശ്രോതാവ്, യഥാർത്ഥ ക്ലയന്റ് എന്നിവ പരിശോധിക്കുക.
പ്രവർത്തിപ്പിക്കുന്നത് nc -uz ഒരു OpenVPN സർവറിനെതിരെ ഏതാണ്ട് ഒന്നും അളക്കുന്നില്ല, കൂടാതെ OpenBSD കൈപ്പുസ്തകം അതിന്റെ മുൻകരുതലുകളിൽ ഇത് പറയുന്നു: ആ മോഡിലെ UDP സ്കാനുകൾ എന്തെങ്കിലും കേൾക്കുന്നുണ്ടെങ്കിലും ഇല്ലെങ്കിലും വിജയം റിപ്പോർട്ട് ചെയ്യുന്നു. എക്സിറ്റ് നില അകലെയുള്ള അവസ്ഥയല്ല, പ്രാദേശിക അയയ്ക്കൽ പ്രതിഫലിപ്പിക്കുന്നു, അതിനാൽ അതിൽ വിശ്വസിക്കുന്ന മേൽനോട്ടക്കാരൻ പ്രക്രിയ പട്ടിക വിശ്വസനീയമായി തോന്നുന്നിടത്തോളം മരിച്ച സർവറിനെ ആരോഗ്യമുള്ളതായി അടയാളപ്പെടുത്തി നിലനിർത്തുന്നു. അത് മാറ്റിസ്ഥാപിക്കുന്നത് പരിശോധന ഏത് ചോദ്യത്തിന് ഉത്തരം നൽകണം എന്ന് തീരുമാനിക്കുന്നതിൽ നിന്നാണ് തുടങ്ങുന്നത്, കാരണം പ്രക്രിയ, ശ്രോതാവ്, പ്രാമാണീകരണം, അപ്ലിക്കേഷന്റെ എത്തിച്ചേരൽ എന്നിവ നാല് വ്യത്യസ്ത നിരീക്ഷണങ്ങളാണ്. അവയിലൊന്നിനെ പേരെടുത്ത് പറയുന്ന പരിശോധന ഉപകാരപ്രദമാണ്; നാലിനെയും സൂചിപ്പിക്കുന്ന പരിശോധന ഭാരമാണ്.
UDP പരിശോധന എന്ത് നിരീക്ഷിക്കാം, എന്ത് നിരീക്ഷിക്കാനാവില്ല
nc -uz ഒരു ഡാറ്റാഗ്രാം അയച്ച് പുറത്തുപോകുന്നു, തിരികെ നൽകുന്ന നില പ്രാദേശിക അയയ്ക്കൽ വിവരിക്കുന്നു. അടച്ച പോർട്ട് ICMP port unreachable ഉപയോഗിച്ച് മറുപടി നൽകിയേക്കാം, പക്ഷേ ഈ സ്കാൻ മോഡിന്റെ രേഖപ്പെടുത്തിയ സ്വഭാവം അതിനെ പരാജയമാക്കി മാറ്റുന്നില്ല, ഫിൽട്ടർ ചെയ്ത പോർട്ട് ഒട്ടും മറുപടി നൽകുന്നുമില്ല. അതിനാൽ മൗനവും വിജയവും വിളിക്കുന്നയാൾക്ക് ഒരേ അർത്ഥമാണ്.
അത് പരിശോധനയെ സർവറിന്റേതല്ല, പ്രാദേശിക സ്റ്റാക്കിന്റെ പരീക്ഷണമാക്കുന്നു. ഹോസ്റ്റ് എത്തിച്ചേരാവുന്നതാണോ, പോർട്ട് ബന്ധിച്ചിട്ടുണ്ടോ, OpenVPN പ്രക്രിയ പ്രവർത്തിക്കുന്നുണ്ടോ, ക്ലയന്റിന് പ്രാമാണീകരിക്കാനാകുമോ എന്നിവ ഇത് സ്ഥാപിക്കുന്നില്ല. TCP കണക്ഷൻ പരീക്ഷണം കൂടുതൽ ശക്തമാണ്, കാരണം ഹാൻഡ്ഷേക്ക് വ്യക്തമായ ഉത്തരം നൽകുന്നു, പക്ഷേ വിന്യാസം യഥാർത്ഥത്തിൽ TCP-യിൽ കേൾക്കുമ്പോൾ മാത്രം. അതേ നമ്പറിൽ പരിശോധന TCP-യിലേക്ക് മാറ്റുന്നത് ഇല്ലായിരിക്കാവുന്ന ഒരു ശ്രോതാവിനെ പരീക്ഷിക്കുന്നു, UDP മാത്രമുള്ള സർവറിനെതിരെ അത് ആരോഗ്യമുള്ള സേവനത്തെ പരാജയപ്പെടുത്തും.
പരിശോധന ക്രമീകരിച്ച ട്രാൻസ്പോർട്ടുമായി ചേർക്കുന്നത് രണ്ട് ഫലങ്ങളിൽ ഏതിലും വിശ്വസിക്കുന്നതിന് മുൻപാണ് വരുന്നത്. UDP വിന്യാസത്തിന് വേറെ സിഗ്നൽ വേണം, വേറെ പ്രോട്ടോക്കോൾ അല്ല.
മൂന്ന് വിളിക്കുന്നവർ, മൂന്ന് വ്യത്യസ്ത ചോദ്യങ്ങൾ
തയ്യാറാണോ എന്നത് ആര് ചോദിക്കുന്നു എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു. തകർന്ന പ്രക്രിയ പുനരാരംഭിക്കുന്ന സേവന മാനേജർക്ക്, ഇൻസ്റ്റൻസ് ആരംഭിച്ചു എന്നും അതിന്റെ ശ്രോതാവിനെ ബന്ധിച്ചു എന്നും അറിയണം. ലോഡ് ബാലൻസറിന്, ഇപ്പോൾ എത്തുന്ന ക്ലയന്റ് സ്വീകരിക്കപ്പെടും എന്ന് അറിയണം. നിരീക്ഷണ സംവിധാനത്തിന്, യഥാർത്ഥ നെറ്റ്വർക്കിൽ നിന്നുള്ള പാത ഇപ്പോഴും അനുവദിച്ച വിഭവത്തിലേക്ക് സെഷൻ കൊണ്ടുപോകുന്നു എന്ന് അറിയണം.
ഇവ ഒരേ പരിശോധനയല്ല, ഒരു പരിശോധനയ്ക്ക് മൂന്നിനെയും സത്യസന്ധമായി ഉൾക്കൊള്ളാനാവില്ല. ആദ്യം വിളിക്കുന്നയാളെ തിരഞ്ഞെടുക്കുക, പിന്നെ തെളിവ്.
നിലവിലെ ഇൻസ്റ്റൻസിൽ നിന്ന് പരിശോധന നിർമ്മിക്കുക
ഇൻസ്റ്റൻസ് ഇനിഷ്യലൈസേഷൻ പൂർത്തിയാക്കുമ്പോൾ OpenVPN ഒരു സ്റ്റാർട്ടപ്പ് വരി എഴുതുന്നു, ആ വരി പ്രാദേശിക ആരംഭത്തെക്കുറിച്ചുള്ള ഉപകാരപ്രദമായ തെളിവാണ്. ചേർക്കപ്പെടുന്ന ഫയലിന്റെ അവസാനത്തിൽ നിന്നല്ല, നിലവിലെ ആരംഭത്തിൽ നിന്ന് അത് വായിക്കുക, കാരണം കഴിഞ്ഞ ആഴ്ചയിലെ വിജയം ഒരു മിനിറ്റ് മുൻപത്തെ വിജയം പോലെ തന്നെ വായിക്കപ്പെടുന്നു. ഒരു ക്ലയന്റും ഒരിക്കലും ബന്ധിപ്പിക്കുന്നതിന് മുൻപ് തന്നെ സർവറിന് ഇനിഷ്യലൈസേഷൻ പൂർത്തിയാക്കാം, അതിനാൽ വരി പ്രാമാണീകരണത്തെക്കുറിച്ച് ഒന്നും പറയുന്നില്ല.
സ്റ്റാർട്ടപ്പ് പരിശോധനയ്ക്ക്, പ്രക്രിയയുടെ അവസ്ഥ നിലവിലെ ലോഗ് തെളിവുമായും ക്രമീകരിച്ച ട്രാൻസ്പോർട്ടുമായി ചേരുന്ന ശ്രോതാവുമായും ജോടിയാക്കുക. പ്രക്രിയ പ്രവർത്തിക്കുന്നുണ്ടെങ്കിലും ഇനിഷ്യലൈസേഷൻ പൂർത്തിയാക്കിയിട്ടില്ലെങ്കിൽ പരിശോധന പരാജയപ്പെടണം, അതായത് ലോഗ് ചോദ്യം ഈ ബൂട്ടിലേക്കും ഈ യൂണിറ്റിലേക്കും പരിമിതപ്പെടുത്തണം.
systemctl is-active openvpn@server
sudo journalctl -u openvpn@server -b --no-pager | grep "Initialization Sequence Completed"
ss -lunp | grep 1194
മൂന്ന് ഔട്ട്പുട്ടുകൾ, മൂന്ന് അവകാശവാദങ്ങൾ: യൂണിറ്റ് സജീവമാണ്, ഈ ബൂട്ട് ഇനിഷ്യലൈസേഷൻ വരി സൃഷ്ടിച്ചു, എന്തോ UDP പോർട്ട് പിടിച്ചിരിക്കുന്നു. അവയൊന്നും ക്ലയന്റിന് ബന്ധിപ്പിക്കാമെന്ന് പറയുന്നില്ല. സ്റ്റാറ്റസ് പേജിൽ അവ വേർതിരിച്ച് സൂക്ഷിക്കുക, സംഭവം ഒരു പച്ച ബിന്ദുവിലേക്ക് ചുരുങ്ങാതിരിക്കാൻ.
അത് ബോധപൂർവ്വം തകർത്ത് പരിശോധന നിരീക്ഷിക്കുക
പരിശോധന പരാജയപ്പെടുന്നത് കണ്ടതിന് ശേഷം മാത്രമേ അത് വിശ്വസനീയമാകൂ. സർവർ നിർത്തുക, പരിശോധന പ്രവർത്തിപ്പിക്കുക, പ്രതീക്ഷിക്കുന്ന ഫലം സ്ഥിരീകരിക്കുക. തുടർന്ന് അത് വീണ്ടും ആരംഭിച്ച് മറ്റ് മാറ്റങ്ങളൊന്നുമില്ലാതെ പരിശോധന വീണ്ടെടുക്കുന്നുവെന്ന് സ്ഥിരീകരിക്കുക.
sudo systemctl stop openvpn@server
nc -uz 203.0.113.10 1194; echo "exit=$?"
ss -lunp | grep 1194
sudo systemctl start openvpn@server
ss -lunp | grep 1194
ബ്ലോക്ക് വരി വരിയായി വായിക്കുക. netcat കമാൻഡ് exit=0 എന്ന് പ്രിന്റ് ചെയ്യുന്നു, അപ്പോൾ ഒന്നും ബന്ധിച്ചിട്ടില്ല, അതാണ് ഒരു വരിയിലെ മുഴുവൻ പ്രശ്നം. ആദ്യത്തെ ss ഒന്നും പ്രിന്റ് ചെയ്യുന്നില്ല, പുനരാരംഭം വിജയിക്കുന്നു, രണ്ടാമത്തേത് ss വീണ്ടും ശ്രോതാവിനെ കാണിക്കുന്നു. നിർത്തിയ സർവറിനെതിരെ നിങ്ങളുടെ പരിശോധന വിജയിക്കുകയാണെങ്കിൽ, അത് പ്രാദേശിക സ്റ്റാക്ക് അളക്കുന്നു, മറ്റൊന്നുമല്ല.
വിപരീത പരാജയവും പ്രധാനമാണ്. ആരോഗ്യമുള്ള സർവറിനെതിരെ പരാജയപ്പെടുന്ന പരിശോധന ഒരിക്കലും ആവശ്യമില്ലാത്ത പുനരാരംഭങ്ങൾക്ക് കാരണമാകുന്നു, പുനരാരംഭ ലൂപ്പ് തന്നെ ഒരു തടസ്സമാണ്. പരിശോധന അതിന്റെ അടിസ്ഥാനത്തിൽ പ്രവർത്തിക്കാനാകുന്ന എന്തിനോടും ബന്ധിപ്പിക്കുന്നതിന് മുൻപ് രണ്ട് ദിശകളും പരീക്ഷിക്കുക.
സ്റ്റാറ്റസ് വരി എന്ത് പറയണം
ഓരോ പരിശോധനയും ഏത് അതിർത്തിയാണ് ഉൾക്കൊള്ളുന്നതെന്ന് രേഖപ്പെടുത്തുക: പ്രക്രിയ, ശ്രോതാവ്, പ്രാമാണീകരണം അല്ലെങ്കിൽ അപ്ലിക്കേഷൻ. ഒരു പരിശോധന ഒന്നിൽ കൂടുതൽ അപൂർവ്വമായി ഉൾക്കൊള്ളുന്നു, അവയെ “up” ആയി ചുരുക്കുന്ന സ്റ്റാറ്റസ് പേജ് സംഭവസമയത്ത് പ്രധാനമായ വ്യത്യാസം മറയ്ക്കുന്നു. നെറ്റ്വർക്ക് പാതയ്ക്ക് സമർപ്പിത ഐഡന്റിറ്റിയുള്ള യഥാർത്ഥ ക്ലയന്റ് ഉപയോഗിക്കുക, അത് ഹാൻഡ്ഷേക്കും ഒരു നിരുപദ്രവകരമായ അനുവദിച്ച പ്രവർത്തനവും പൂർത്തിയാക്കട്ടെ, തുടർന്ന് വിച്ഛേദിക്കുക. ഇത് ഒരു ഘട്ടത്തിൽ നിയന്ത്രണ ചാനലും പ്രാമാണീകരണ നയവും ശ്രോതാവിനെയും പരിശീലിപ്പിക്കുന്നു.
ആ ഐഡന്റിറ്റി യഥാർത്ഥ ഉപയോക്താക്കളിൽ നിന്ന് വേർതിരിച്ച് സൂക്ഷിക്കുക, പരിശോധനയ്ക്ക് ആവശ്യമായ ഏറ്റവും കുറഞ്ഞ അനുമതികൾ നൽകുക. വിശാലമായ പ്രവേശനമുള്ള തയ്യാറെടുപ്പ് പരിശോധന സൗകര്യത്തിനായി ചേർത്ത പുതിയ ആക്രമണ ഉപരിതലമാണ്. മറ്റേതെങ്കിലും അക്കൗണ്ട് പോലെ അതിന്റെ ക്രെഡൻഷ്യലുകൾ കറക്കുക, കാരണം പ്രാമാണീകരണം നിർത്തുന്ന പരിശോധന ക്ലയന്റുകളെ സ്വീകരിക്കുന്നത് നിർത്തിയ സർവറിനെപ്പോലെ തന്നെ കാണപ്പെടുന്നു.
മുന്നറിയിപ്പ് ടെക്സ്റ്റിൽ അതിർത്തി പേരെടുത്ത് പറയുക, ആദ്യം പ്രതികരിക്കുന്നയാൾക്ക് യൂണിറ്റ്, സോക്കറ്റ്, സർട്ടിഫിക്കറ്റ് അല്ലെങ്കിൽ റൂട്ട് ഏതാണ് നോക്കേണ്ടതെന്ന് അറിയാനാകട്ടെ. എന്താണ് തെളിയിച്ചതെന്ന് പറയാനാകാത്ത പരിശോധന തെറ്റായ കാരണത്താൽ വിശ്വസിക്കപ്പെടും, netcat പരിശോധന ആദ്യം അതിജീവിച്ചതും അങ്ങനെയാണ്.