ഓരോ പ്രൊഫൈലിനും പ്രത്യേക പരിശോധനയോടെ ഒന്നിലധികം vpnc ടണലുകൾ നിലനിർത്തുക
പാക്കേജിലുള്ള വീണ്ടും-ബന്ധിപ്പിക്കൽ സ്ക്രിപ്റ്റ് ഒരു ടണൽ മാത്രം അനുമാനിക്കുന്നു. ഓരോ vpnc പ്രൊഫൈലിനും സ്വന്തം പോർട്ട് നൽകി, യഥാർത്ഥ സേവനം പരിശോധിച്ച്, പരിശോധനകൾ ഒരു നിശ്ചിത ക്രമത്തിൽ ചേർക്കുക.
ഒരു vpnc പ്രൊഫൈൽ റോമിംഗിന് ശേഷം വൃത്തിയായി വീണ്ടും ബന്ധിപ്പിക്കുന്നു; മൂന്നെണ്ണം മാറിമാറി പരസ്പരം സോക്കറ്റുകളും റൂട്ടുകളും റിസോൾവർ നിലയും തകർക്കുന്നു. പാക്കേജിലുള്ള വീണ്ടും-ബന്ധിപ്പിക്കൽ സ്ക്രിപ്റ്റ് ഒരു ടണലിനായി എഴുതിയതാണ്, അതിനാൽ അവയിലൊന്ന് താഴെയിരിക്കുമ്പോഴെല്ലാം അത് ഓരോ പ്രൊഫൈലും പുനരാരംഭിക്കുന്നു. ഇത് ശരിയാക്കാൻ മൂന്ന് കാര്യങ്ങൾ വേണം: വേറിട്ട ലോക്കൽ പോർട്ടുകൾ, ഓരോ പ്രൊഫൈലിനും യഥാർത്ഥ സേവനം പരീക്ഷിക്കുന്ന ഒരു പരിശോധന, കൂടാതെ ഒരിക്കലും രണ്ട് കണക്ഷനുകൾ ഒരുമിച്ച് പ്രവർത്തിപ്പിക്കാത്ത ഒരു ക്രമീകരിച്ച ശൃംഖല.
ഓരോ പ്രൊഫൈലിനും സ്വന്തം ലോക്കൽ പോർട്ട് നൽകുക
സ്ഥിരസ്ഥിതി ലോക്കൽ പോർട്ടിൽ വിട്ടിരിക്കുന്ന vpnc പ്രൊഫൈൽ ഇതിനകം പ്രവർത്തിക്കുന്ന പ്രൊഫൈലുമായി മത്സരിക്കുന്നു. ആദ്യത്തേത് പോർട്ട് പിടിച്ചിരിക്കുമ്പോൾ രണ്ടാമത്തെ കണക്ഷൻ പരാജയപ്പെടുന്നു, ലോഗ് വരി ലോക്കൽ സംഘർഷത്തേക്കാൾ ഗേറ്റ്വേ പ്രശ്നം പോലെ തോന്നുന്നു. പകരം ഓരോ പ്രൊഫൈൽ ഫയലിനും ഒരു വരി ഇടുക:
Local Port 0പൂജ്യം കേർണലിന് താൽക്കാലിക പോർട്ട് തിരഞ്ഞെടുക്കാൻ അനുവദിക്കുന്നു, അതിനാൽ രണ്ട് പ്രൊഫൈലുകൾ ഒരേസമയം സ്ഥാപിക്കാം. ഓരോ ഫയലും അത് സേവിക്കുന്ന ഗേറ്റ്വേയുടെയും ഗ്രൂപ്പിന്റെയും പേരിൽ അറിയപ്പെടട്ടെ, അത് root-ന് മാത്രം വായിക്കാവുന്നതായി സൂക്ഷിക്കുക, കൂടാതെ പങ്കിട്ട സ്ഥിരസ്ഥിതിക്ക് പകരം യോജിക്കുന്ന പ്രൊഫൈലുമായി എപ്പോഴും ബന്ധിപ്പിക്കുക. ആരെങ്കിലും പ്രൊഫൈലിന്റെ പേര് മാറ്റിയതിന് ശേഷം സ്ക്രിപ്റ്റ് തെറ്റായ ടണലിൽ വീണ്ടും ബന്ധിപ്പിക്കുന്ന വഴിയാണ് പങ്കിട്ട സ്ഥിരസ്ഥിതി ഫയൽ.
പ്രൊഫൈൽ ഫയലുകളിൽ ലോഗിൻ വിവരങ്ങൾ അടങ്ങിയിരിക്കുന്നു, അതിനാൽ അനുമതികൾ രൂപകൽപ്പനയുടെ ഭാഗമാണ്, വീട്ടുജോലിയുടെയല്ല. /etc/vpnc-ന് കീഴിൽ എല്ലാവർക്കും വായിക്കാവുന്ന ഒരു ഫയൽ ഗ്രൂപ്പിന്റെ രഹസ്യം ഓരോ ലോക്കൽ ഉപയോക്താവിനും നൽകുന്നു. മോഡ് 0600 ആക്കി ഉടമസ്ഥൻ root ആക്കുക, രഹസ്യങ്ങൾ ആർഗ്യുമെന്റുകളിലേക്ക് പകർത്തുന്നതിന് പകരം സ്ക്രിപ്റ്റുകൾ ഫയൽ root ആയി വായിക്കട്ടെ. അതുകൊണ്ടുതന്നെ പരിശോധനാ സ്ക്രിപ്റ്റ് ഒരിക്കലും ഫയലിന്റെ ഉള്ളടക്കം ലോഗിലേക്ക് എഴുതരുത്.
ഓരോ പ്രൊഫൈലിനും ഒരു സേവനം പരിശോധിക്കുക, ടണലിന്റെ വിലാസമല്ല
ടണലിന്റെ സ്വന്തം വിലാസത്തിലേക്കുള്ള എക്കോ അഭ്യർത്ഥന പ്രധാനമായും ഇന്റർഫേസ് ഉണ്ടെന്ന് മാത്രം തെളിയിക്കുന്നു. അതിന് പിന്നിലെ ഹോസ്റ്റ് ടണലിനെ ന്യായീകരിക്കുന്ന ആപ്ലിക്കേഷനിൽ ഇപ്പോഴും എത്തുന്നുണ്ടോ എന്ന് അത് ഒന്നും പറയുന്നില്ല. ഇന്റർഫേസ് മുകളിൽ ഇരിക്കുമ്പോൾ അതിനപ്പുറത്തുള്ള റൂട്ട് ഇതിനകം പോയിരിക്കാം.
ഓരോ പ്രൊഫൈലിനും ഒരു സേവനം ചെറിയ TCP സമയപരിധിയോടെ പരിശോധിച്ച്, പരിശോധന പരാജയപ്പെട്ട പ്രൊഫൈൽ മാത്രം വീണ്ടും ബന്ധിപ്പിക്കുക. രണ്ട് സെക്കൻഡ് മരിച്ച വഴിയെ വേഗത കുറഞ്ഞ വഴിയിൽ നിന്ന് വേർതിരിക്കുന്നു, TCP പരിശോധന വഴിയിൽ എവിടെയെങ്കിലും ICMP അനുവദിച്ചിട്ടുണ്ടോ എന്നതിനെ ആശ്രയിക്കുന്നില്ല. പ്രൊഫൈലുകൾക്കിടയിൽ ലക്ഷ്യവും കോൺഫിഗ് പേരും മാത്രം മാറ്റുക:
#!/bin/bash
set -eu
if ! nc -z -w 2 10.63.7.20 8443; then
/usr/sbin/vpnc-connect ops.conf
fiഅത് /usr/local/bin/ensure-vpn-ops.sh ആയി സംരക്ഷിക്കുക, പ്രവർത്തിപ്പിക്കാവുന്നതാക്കുക, പരിശോധനയുടെ ലക്ഷ്യവും കോൺഫിഗ് പേരും മാത്രം മാറ്റി ഓരോ പ്രൊഫൈലിനും ആവർത്തിക്കുക. പ്രോട്ടോക്കോൾ ചോദ്യത്തിന് ഉത്തരം നൽകുന്ന പരിശോധന, എക്കോ വലിച്ചെറിയുമ്പോഴും ഉപയോക്താക്കൾക്ക് പ്രധാനമായ സേവനങ്ങൾ കൈമാറുന്ന ഗേറ്റ്വേകളെ അതിജീവിക്കുന്നു.
പരിശോധനകൾ ഒരിക്കലും മത്സരിക്കാതിരിക്കാൻ അവ ശൃംഖലയിൽ ചേർക്കുക
പാക്കേജിലുള്ള വീണ്ടും-ബന്ധിപ്പിക്കൽ സ്ക്രിപ്റ്റിന് നിങ്ങളുടെ പരിശോധനകളെ ക്രമത്തിൽ വിളിക്കാം, ക്രമമാണ് മുഴുവൻ കാര്യം. ഒരുമിച്ച് പ്രവർത്തിക്കുന്ന രണ്ട് vpnc-connect വിളികൾ ആരും നിയന്ത്രിക്കാത്ത ക്രമത്തിൽ റൂട്ടിംഗ് പട്ടിക വീണ്ടും എഴുതുന്നു, അങ്ങനെയാണ് ആരോഗ്യമുള്ള ഒരു പ്രൊഫൈൽ അതിന്റെ റൂട്ട് നഷ്ടപ്പെടുന്നത്.
വിളികൾ മുൻവശത്ത് നിർത്തുക, താഴെയുള്ള ഇന്റർഫേസിന് ചെറിയ സ്ഥിരത കാലതാമസം ചേർക്കുക, ശൃംഖല root-ന്റെ cron പട്ടികയിൽ നിന്ന് ഷെഡ്യൂൾ ചെയ്യുക, കാരണം ടണൽ റൂട്ടുകൾ വീണ്ടും എഴുതാൻ root-ന് മാത്രമേ കഴിയൂ:
#!/bin/bash
sleep 20
/usr/local/bin/ensure-vpn-ops.sh
/usr/local/bin/ensure-vpn-lab.shബൂട്ട് സ്ക്രിപ്റ്റും cron എൻട്രിയും തമ്മിൽ ക്രമം ഒരേപോലെ സൂക്ഷിക്കുക, കാരണം ബൂട്ട് സമയത്ത് വേറെ ക്രമത്തിൽ പ്രവർത്തിക്കുന്ന ശൃംഖല യഥാർത്ഥത്തിൽ മറ്റൊരു പ്രോഗ്രാമാണ്. ഒരു പ്രൊഫൈൽ മറ്റൊന്നിന്റെ റൂട്ടുകളെ ആശ്രയിക്കുമ്പോൾ ആശ്രിതത്വം ആദ്യം വയ്ക്കുക, മുൻ ടണൽ ഇപ്പോഴും കയറുന്നതിനിടയിൽ പിന്നീടുള്ള പരിശോധന നിരുപദ്രവമായി പരാജയപ്പെടട്ടെ.
ലോഗ് നിരീക്ഷിക്കുക, പിന്നെ ഒന്ന് കരുതിക്കൂട്ടി തകർക്കുക
ഓരോ പ്രവർത്തനത്തിനും ഒരു വരി രേഖപ്പെടുത്തുക: പ്രൊഫൈൽ, പരിശോധനാ ലക്ഷ്യം, ഫലം, സ്വീകരിച്ച നടപടി. അതില്ലാതെ ഓരോ മിനിറ്റിലും ചാഞ്ചാടുന്ന ടണൽ ഒരിക്കലും വീണിട്ടില്ലാത്ത ടണലിനെപ്പോലെ തോന്നും, പരിശോധനാ തകരാർ ഗേറ്റ്വേ തടസ്സത്തിൽ നിന്ന് വേർതിരിച്ചറിയാനും കഴിയില്ല. ശൃംഖല പരാജയപ്പെട്ട പ്രൊഫൈലിൽ മാത്രം തൊട്ടു എന്നും ലോഗ് തെളിയിക്കുന്നു. റീബൂട്ടിനെ അതിജീവിക്കുന്ന ഇടത്ത് അത് എഴുതുക, അല്ലെങ്കിൽ തെളിവ് പ്രോസസ്സിനൊപ്പം പോകും.
പിന്നെ ഒരു ടണൽ കരുതിക്കൂട്ടി തകർത്ത് എന്ത് സംഭവിക്കുന്നു എന്ന് നോക്കുക. ഒരു പ്രൊഫൈൽ മാത്രം നിർത്തി ഏത് പ്രോസസ്സുകളും റൂട്ടുകളും ഇപ്പോഴും ഉണ്ടെന്ന് ഉറപ്പാക്കുക:
pgrep -a vpnc
ip -4 route show | grep -E '10[.]63|10[.]90'
tail -n 5 /var/log/ensure-vpn.logനിർത്തിയ പ്രൊഫൈൽ മാത്രം വീണ്ടും ബന്ധിപ്പിക്കപ്പെടണം, മറ്റ് സെഷനുകൾ അവയുടെ പ്രോസസ്സുകളും റൂട്ടുകളും രണ്ടും നിലനിർത്തണം. രണ്ട് പ്രൊഫൈലുകൾ പുനരാരംഭിക്കുന്നുവെങ്കിൽ, നിങ്ങളുടെ ശൃംഖല നിങ്ങൾ പ്രതീക്ഷിക്കാത്ത എവിടെയോ സമാന്തരമായി പ്രവർത്തിക്കുന്നു.
കാവൽക്കാരൻ ചെയ്യരുതാത്തത്
എന്തെങ്കിലും പരാജയപ്പെടുമ്പോഴെല്ലാം എല്ലാം പുനരാരംഭിക്കുന്ന കാവൽക്കാരൻ പരിശോധനയിൽ ആരോഗ്യമുള്ളതായി തോന്നുകയും പരിപാലന വിൻഡോയിൽ തടസ്സം സൃഷ്ടിക്കുകയും ചെയ്യുന്നു. പ്രൊഫൈൽ അനുസരിച്ച് പുനരാരംഭിക്കുക, ഒരിക്കലും ആഗോളമായി അല്ല.
അതേ പ്രോട്ടോക്കോളിന് ഗേറ്റ്വേ പരിപാലിച്ച ക്ലയന്റ് വാഗ്ദാനം ചെയ്യുമ്പോൾ അത് തിരഞ്ഞെടുക്കുക, സ്ക്രിപ്റ്റിൽ പാസ്വേഡ് ഒരിക്കലും ഹാർഡ്കോഡ് ചെയ്യരുത്, കമാൻഡ് ലൈനിൽ നൽകരുത്, കാരണം പ്രൊഫൈൽ ഫയലിൽ രഹസ്യം ഇതിനകം ഉണ്ട്. ടണൽ കയറിയ ശേഷം ഒരു ജോലി സാധാരണ ഉപയോക്താവായി പ്രവർത്തിപ്പിക്കേണ്ടിവന്നാൽ, മുഴുവൻ ശൃംഖലയും ആ അക്കൗണ്ടിന് കീഴിൽ പ്രവർത്തിപ്പിക്കുന്നതിന് പകരം സ്ക്രിപ്റ്റിനുള്ളിൽ നിന്ന് തന്നെ അധികാരങ്ങൾ കുറയ്ക്കുക. അവസാനമായി, വീണ്ടും ബന്ധിപ്പിച്ചതിന് ശേഷം റൂട്ടുകൾ വീണ്ടും വായിക്കുക, കാരണം പ്രൊഫൈൽ മറ്റൊരു അനുവദിച്ച വിലാസത്തോടെ തിരികെ വന്ന്, ടണൽ വിലാസത്തിലേക്കുള്ള ഏത് പരിശോധനയും ഒരിക്കലും ശ്രദ്ധിക്കാത്ത ഒരു പഴയ റൂട്ട് വിട്ടേക്കാം.