പുതിയ കണ്ടെയ്നർ ലോഗുകൾ പലപ്പോഴും /proc/sys/net/ipv4/route/flush നെക്കുറിച്ചുള്ള Read-only file system പരാതിയിൽ അവസാനിക്കുന്നു, ആ വരിയാണ് പൂർണ്ണമായും ആരോഗ്യകരമായിരിക്കാവുന്ന ഒരു ടണലിന്റെ പേരിൽ കുറ്റപ്പെടുന്നത്. അതിന് പിന്നിലെ എഴുത്ത് IPv4 റൂട്ട് കാഷെ പോയതിനാൽ ഇനി ഉപയോഗപ്രദമായി ഒന്നും ചെയ്യാത്ത ഒരു കേർണൽ എൻട്രിയെ ലക്ഷ്യമിടുന്നു. കണ്ടെയ്നറിനുള്ളിൽ /proc/sys വായന-മാത്രയായി മൗണ്ട് ചെയ്യുന്നു, അതിനാൽ ഏതെങ്കിലും മൂല്യം എത്തുന്നതിന് മുമ്പ് തന്നെ റീഡയറക്ഷൻ നിരസിക്കപ്പെടുന്നു, ഷെൽ ആ നിരസിക്കൽ അച്ചടിക്കുന്നു. പ്രവർത്തിക്കുന്ന ടണലും പഴയ വരി സ്ക്രിപ്റ്റിൽ ഉള്ളിടത്തോളം ഈ മുന്നറിയിപ്പ് അച്ചടിച്ചേക്കാം, --privileged എഴുത്തിനെ ഒരിക്കലും അർത്ഥവത്താക്കുന്നില്ല.

സ്ക്രിപ്റ്റ് എന്താണ് ഫ്ലഷ് ചെയ്യാൻ ശ്രമിച്ചത്

പഴയ കണക്ഷൻ സ്ക്രിപ്റ്റുകൾ കാഷെ വൃത്തിയാക്കലോടെ അവസാനിച്ചിരുന്നു: കേർണൽ നിയന്ത്രണ ഫയലിൽ ഒരു മൂല്യം എഴുതി, IPv4 സ്റ്റാക്കിനോട് അതിന്റെ റൂട്ടിംഗ് കാഷെ ഉപേക്ഷിക്കാൻ ആവശ്യപ്പെടുക, അങ്ങനെ പഴയ എൻട്രികൾ കാലഹരണപ്പെടുന്നത് കാത്തിരിക്കാതെ പുതിയ ടണൽ റൂട്ട് തിരഞ്ഞെടുക്കപ്പെടും. ഫയൽ /proc/sys/net/ipv4/-ന് കീഴിൽ വിലാസപ്പെടുത്തിയിരുന്നു, അത് പ്രവർത്തനത്തെ റൂട്ടിംഗ് കമാൻഡിന് പകരം ഷെൽ റീഡയറക്ഷനാക്കി. കേർണൽ 3.6 ആ കാഷെ നീക്കം ചെയ്തു, അതോടൊപ്പം ഫ്ലഷ് ഉണ്ടായിരുന്നതിന്റെ കാരണവും. നിലവിലെ ഡാറ്റ പാതയിൽ ഒന്നും ആ എഴുത്തിനെ ആശ്രയിക്കുന്നില്ല.

എൻട്രി തന്നെ പഴയ എഴുത്ത്-മാത്ര ഫയലായി അവശേഷിച്ചു, അതിനാൽ ഇപ്പോഴും അതിലേക്ക് എഴുതുന്ന സ്ക്രിപ്റ്റ് യഥാർത്ഥ പാതയിലും യഥാർത്ഥ അനുമതി പരിശോധനയിലും എത്തുന്നു. ഹോസ്റ്റിൽ എഴുത്ത് വിജയം തിരികെ നൽകുന്നു, ഒന്നും മാറ്റുന്നില്ല. കണ്ടെയ്നറിൽ അതേ റീഡയറക്ഷൻ വായന-മാത്ര /proc/sys-ൽ തട്ടി EROFS-ൽ പരാജയപ്പെടുന്നു, ഷെൽ അത് വായന-മാത്ര ഫയൽസിസ്റ്റം സന്ദേശമായി അച്ചടിക്കുന്നു. പാത ശരിക്കും ഇല്ലാത്ത കേർണലുകളിൽ പദപ്രയോഗം No such file or directory ആകുന്നു, നിഗമനം മാറുന്നില്ല.

രണ്ട് പിശകുകളും വ്യത്യസ്ത കാര്യങ്ങൾ പറയുന്നു, വ്യത്യാസം വ്യക്തമായി സൂക്ഷിക്കേണ്ടതാണ്. Read-only file system അർത്ഥം കേർണൽ ഒരു എൻട്രിയിൽ എത്തി എഴുത്ത് നിരസിച്ചു എന്നാണ്; No such file or directory അർത്ഥം എൻട്രി പോയി എന്നാണ്. ഒരു സന്ദേശവും ടണൽ ഉപകരണം, റൂട്ടുകൾ, പേര് വിശകലനം എന്നിവയെക്കുറിച്ച് റിപ്പോർട്ട് ചെയ്യുന്നില്ല, അതിനാൽ ഒന്നിനും കൂടുതൽ പ്രത്യേകാവകാശം ന്യായീകരിക്കാനാവില്ല.

സന്ദേശത്തെ കാരണജന്യമായി തോന്നിപ്പിക്കുന്നത് ക്രമമാണ്. ഒരു കണക്ഷൻ സ്ക്രിപ്റ്റ് അവസാനത്തെ വൃത്തിയാക്കലിൽ എത്തുന്നതിന് മുമ്പ് റൂട്ടുകൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നു, ഇന്റർഫേസ് അവസ്ഥ മാറ്റുന്നു, പേര് വിശകലനം വീണ്ടും എഴുതുന്നു, അതിനാൽ അവസാനം അച്ചടിച്ച വരിയാണ് ആളുകൾ ഉദ്ധരിക്കുന്നത്, പ്രധാനപ്പെട്ട ഓരോ ഘട്ടവും വിജയം തിരികെ നൽകിയാലും. ഈ മുന്നറിയിപ്പ് അച്ചടിച്ചുകൊണ്ട് സ്ഥാപിതമാകുകയും ട്രാഫിക് വഹിക്കുകയും ചെയ്യുന്ന ടണൽ മുകളിലെ സംവിധാനവുമായി കൃത്യമായി യോജിക്കുന്നു.

പ്രത്യേകാവകാശം ചേർക്കുന്നതിന് മുമ്പ് മൗണ്ടും റൂട്ടും പരിശോധിക്കുക

മൂന്ന് വായനകൾ ഉപരിപ്ലവമായ മുന്നറിയിപ്പിനെ യഥാർത്ഥ പരാജയത്തിൽ നിന്ന് വേർതിരിക്കുന്നു: ഇൻസ്റ്റാൾ ചെയ്ത സ്ക്രിപ്റ്റിൽ വരി ഇപ്പോഴുമുണ്ടോ, /proc/sys എങ്ങനെ മൗണ്ട് ചെയ്തിരിക്കുന്നു, അപ്ലിക്കേഷന്റെ ട്രാഫിക് യഥാർത്ഥത്തിൽ എവിടെ പോകുന്നു. മുന്നറിയിപ്പ് പ്രത്യക്ഷപ്പെട്ട അതേ കണ്ടെയ്നർ നെയിംസ്പേസിലോ ഹോസ്റ്റിലോ അവ ഓടിക്കുക, കാരണം ബന്ധമില്ലാത്ത ഒരു മെഷീനിലെ പരിശോധന മറ്റൊരു ചോദ്യത്തിനാണ് ഉത്തരം നൽകുന്നത്.

grep -n 'ipv4/route/flush' /usr/share/vpnc-scripts/vpnc-script
findmnt -no OPTIONS /proc/sys
ip -4 route get 10.20.5.10

grep-ന്റെ ഉത്തരം കാണുന്നതിനേക്കാൾ ദുർബലമാണ്, കാരണം കണ്ടെത്തൽ വരി നിലവിലുണ്ടെന്ന് തെളിയിക്കുന്നു, സംരക്ഷണമില്ലാതെ പ്രവർത്തിക്കുന്നു എന്നല്ല; പരിപാലിക്കുന്ന സ്ക്രിപ്റ്റിന് എഴുത്തിനെ അത് ഒഴിവാക്കുന്ന ഒരു കാവലിനുള്ളിൽ വയ്ക്കാം. findmnt -no OPTIONS /proc/sys മൗണ്ട് നേരിട്ട് തീർപ്പാക്കുന്നു, ആ ഔട്ട്പുട്ടിലെ ro അർത്ഥം ആ ബിന്ദുവിന് താഴെയുള്ള എല്ലാ എഴുത്തും നിരസിക്കപ്പെടും, സ്ക്രിപ്റ്റ് എന്ത് ചെയ്താലും. തുടർന്ന് റൂട്ട് തിരയൽ അപ്ലിക്കേഷന് ആവശ്യമായ ലക്ഷ്യം ടണൽ ഇന്റർഫേസിലൂടെയാണോ കണ്ടെയ്നറിന്റെ സ്ഥിരസ്ഥിതി ഗേറ്റ്വേയിലൂടെയാണോ പരിഹരിക്കപ്പെടുന്നതെന്ന് കാണിക്കുന്നു. സ്ഥിരസ്ഥിതി ഗേറ്റ്വേ തിരഞ്ഞെടുക്കുന്ന തിരയൽ അർത്ഥം ടണൽ ഉയർന്നു, അതിലേക്ക് ഒന്നും റൂട്ട് ചെയ്യുന്നില്ല, അത് റൂട്ടിംഗ് പ്രശ്നമാണ്, പ്രത്യേകാവകാശ പ്രശ്നമല്ല.

തിരുത്തൽ യഥാർത്ഥത്തിൽ എവിടെ നിന്ന് വരുന്നു

പരിപാലിക്കുന്ന തിരുത്തൽ കണ്ടെയ്നർ ഫ്ലാഗുകളിലല്ല, സ്ക്രിപ്റ്റിലാണ് ജീവിക്കുന്നത്. upstream vpnc-script ഈ പ്രവർത്തനം എങ്ങനെ കൈകാര്യം ചെയ്യുന്നു എന്നത് മാറ്റിയിട്ടുണ്ട്, അതിനാൽ ഇമേജിനുള്ളിലെ പകർപ്പ് നിലവിലെ upstream-മായി താരതമ്യം ചെയ്ത് അത് നൽകുന്ന പാക്കേജ് അല്ലെങ്കിൽ ഇമേജ് ബിൽഡിലൂടെ അപ്ഡേറ്റ് ചെയ്യുക. പ്രവർത്തിക്കുന്ന കണ്ടെയ്നറിനുള്ളിൽ കൈകൊണ്ട് തിരുത്തിയ ഫയൽ അവലോകനയോഗ്യമല്ല, അടുത്ത ബിൽഡ് വരെ നിലനിൽക്കില്ല.

--privileged എല്ലാ കഴിവുകളും വിശാലമായ ഉപകരണ പ്രവേശനവും നൽകുന്നതായി രേഖപ്പെടുത്തിയിരിക്കുന്നു, ഒന്നും മാറ്റാത്ത ഒരു സന്ദേശത്തിന് ഇത് വലിയ വിട്ടുവീഴ്ചയാണ്, അതിനാൽ യഥാർത്ഥത്തിൽ ഒരു കഴിവ് ഇല്ലെങ്കിൽ അത് പേരെടുത്ത് പറയുക. അപ്ഡേറ്റിന് ശേഷം റൂട്ട് തിരയൽ ആവർത്തിക്കുക, അപ്ലിക്കേഷനെ ടണൽ ഉപയോഗിക്കാൻ അനുവദിക്കുക, കാരണം ശാന്തമായ ലോഗും പ്രവർത്തിക്കുന്ന കണക്ഷനും വെവ്വേറെ ഫലങ്ങളാണ്.

അനുബന്ധ ലേഖനങ്ങൾ