റൂട്ടിംഗ് നിയമം വായിക്കുന്നത് പാക്കറ്റ് മാർക്ക് ആണ്, conntrack അല്ല
പോളിസി റൂട്ടിംഗ് പാക്കറ്റ് മാർക്ക് വായിക്കുന്നു; conntrack കൂടുതൽ ആയുസ്സുള്ള മറ്റൊരു മൂല്യം സൂക്ഷിക്കുന്നു. രണ്ടിനുമിടയിൽ പകർത്തുന്നത് ആരെങ്കിലും എഴുതേണ്ട ഒരു ഘട്ടമാണ്.
നാല് പരിശോധനകൾ പ്രവർത്തിക്കുന്ന മാർക്ക് നിയമത്തെ പ്രവർത്തിക്കുന്ന റൂട്ടിൽ നിന്ന് വേർതിരിക്കുന്നു: നിയമം ഏത് മാർക്ക് വായിക്കുന്നു, തിരച്ചിലിന്റെ സമയത്ത് പാക്കറ്റ് അത് ഇപ്പോഴും വഹിക്കുന്നുണ്ടോ, പിന്നീടുള്ള പാക്കറ്റുകളിൽ കണക്ഷൻ മാർക്ക് പുനഃസ്ഥാപിച്ചിട്ടുണ്ടോ, എന്നിവയും ഒത്തുപോകുന്ന നിയമത്തിന്റെ മാസ്കും മുൻഗണനയും അതിനെ പ്രവർത്തിക്കാൻ അനുവദിക്കുന്നുണ്ടോ. വർദ്ധിക്കുന്ന കൗണ്ടർ എന്തെങ്കിലും ഒരു നിയമം എന്തോ ഒന്നുമായി ഒത്തുപോയി എന്ന് മാത്രം തെളിയിക്കുന്നു. കേർണൽ അതിന്റെ വഴി തിരഞ്ഞെടുത്തപ്പോൾ പാക്കറ്റ് എന്താണ് വഹിച്ചിരുന്നത് എന്നതിനെക്കുറിച്ച് അത് ഒന്നും പറയുന്നില്ല.
രണ്ട് മാർക്കുകളും വ്യത്യസ്ത സ്ഥലങ്ങളിൽ ജീവിക്കുന്നു, വ്യത്യസ്ത ഷെഡ്യൂളുകൾ പ്രകാരം കാലഹരണപ്പെടുന്നു.
രണ്ട് മാർക്ക്, രണ്ട് ആയുസ്സ്
പാക്കറ്റ് മാർക്ക് ഒരു skb-യുടേതാണ്, അതിനൊപ്പം ഹൂക്കുകളിലൂടെ സഞ്ചരിക്കുന്നു, പോളിസി റൂട്ടിംഗിന്റെ fwmark തിരഞ്ഞെടുക്കൽ അത് ഉപഭോഗം ചെയ്യുന്നു. കണക്ഷൻ മാർക്ക് conntrack എൻട്രിയുടേതാണ്, ആ ഫ്ലോയുടെ പാക്കറ്റുകളിലുടനീളം നിലനിൽക്കുന്നു, എന്തെങ്കിലും അത് തിരികെ പകർത്തുന്നതുവരെ റൂട്ടിംഗ് നിയമത്തിന് അദൃശ്യമാണ്. പാക്കറ്റ് മാർക്ക് കണക്ഷനിൽ സംഭരിക്കുന്നത് ഒരു സംഭരണമാണ്; അത് പുനഃസ്ഥാപിക്കുന്നത് വേറിട്ട പ്രവർത്തിയാണ്. രണ്ടും സ്വയമേവ സംഭവിക്കുന്നില്ല.
അതുകൊണ്ട് ഒരു നിയമക്കൂട്ടം സ്ഥിരതയുള്ളതായി തോന്നാം, എന്നാൽ റൂട്ടിംഗ് തീരുമാനം പൂജ്യം കാണുന്നു: മൂല്യം സംഭരിച്ചിരുന്നു, ഒന്നും അത് പുനഃസ്ഥാപിച്ചില്ല.
രണ്ടിനുമിടയിൽ പകർത്തുന്നത് നിങ്ങൾ എഴുതുന്ന ഘട്ടമാണ്
പ്രധാനമായ രണ്ട് പ്രസ്താവനകൾ വിപരീത ദിശകളിലേക്ക് പോകുന്നു: ഒന്ന് പാക്കറ്റിന്റെ മാർക്ക് കണക്ഷനിൽ സംഭരിക്കുന്നു, മറ്റൊന്ന് കണക്ഷന്റെ മാർക്ക് പാക്കറ്റിലേക്ക് ലോഡ് ചെയ്യുന്നു. ഏതാണ് വേണ്ടത് എന്നത് ഫ്ലോയുമായി ബന്ധപ്പെട്ട് വർഗ്ഗീകരണം എപ്പോൾ നടക്കുന്നു എന്നതിനെ ആശ്രയിച്ചിരിക്കുന്നു. ഒരു രൂപകൽപ്പനയ്ക്ക് പാക്കറ്റ് മാർക്ക് മാത്രം മതിയാകാം, ഏതോ ഒരു പകരവഴി രണ്ടും ഉപയോഗിച്ചതിനാൽ conntrack അടയാളപ്പെടുത്തൽ കൂട്ടിച്ചേർക്കുന്നതാണ് ലളിതമായ ഒരു പോളിസി രണ്ടാമത്തെ പരാജയരീതി നേടുന്ന വഴി.
ct mark set meta mark meta mark set ct mark
നിയമത്തിന് അടുത്തായി ദിശ എഴുതിവയ്ക്കുക, കാരണം ഒറ്റനോട്ടത്തിൽ വാക്യഘടനയിൽ നിന്ന് അത് വ്യക്തമല്ല. ആദ്യ വരി സംഭരിക്കുന്നു, രണ്ടാം വരി പുനഃസ്ഥാപിക്കുന്നു, ഒന്നും മറ്റൊന്നിനെ അർത്ഥമാക്കുന്നില്ല.
അത് ഉപഭോഗിക്കുന്ന തിരച്ചിലിന് മുമ്പ് വർഗ്ഗീകരിക്കുക
പ്രാദേശികമായി ഉത്പാദിപ്പിക്കുന്ന ട്രാഫിക്കും LAN-ൽ നിന്ന് കൈമാറ്റം ചെയ്യുന്ന ട്രാഫിക്കും വ്യത്യസ്ത ഹൂക്കുകളിലൂടെ കടന്ന് വ്യത്യസ്ത നിമിഷങ്ങളിൽ റൂട്ടിംഗ് തീരുമാനങ്ങളിൽ എത്തുന്നു. റൗട്ടറിന്റെ സ്വന്തം കണക്ഷനുകൾക്ക് പ്രവർത്തിക്കുന്ന ഔട്ട്പുട്ട് നിയമം, കൈമാറ്റം ചെയ്ത ക്ലയന്റിന്റെ പാക്കറ്റ് അതിന്റെ തിരച്ചിലിന് മുമ്പ് അടയാളപ്പെടുത്തിയിരുന്നു എന്ന് തെളിയിക്കുന്നില്ല. അത് ഉപഭോഗിക്കുന്ന തിരച്ചിൽ ഇനിയും നടന്നിട്ടില്ലാത്തിടത്ത് വർഗ്ഗീകരണം വയ്ക്കുക, അതേ ചെയിനിലെ പിന്നീടുള്ള നിയമങ്ങൾ മൂല്യം മേലെഴുതുന്നുണ്ടോ എന്ന് പരിശോധിക്കുക. ചെയിനിനുള്ളിലെ ക്രമം കോൺഫിഗറേഷന്റെ ഭാഗമാണ്, നടപ്പാക്കലിന്റെ വിശദാംശമല്ല.
കണക്ഷൻ-അവസ്ഥയുടെ നിലനിൽപ്പിനും വ്യക്തമായ പദ്ധതി വേണം. ഒരു ഫ്ലോയുടെ ആദ്യ പാക്കറ്റ് മാത്രം വർഗ്ഗീകരിച്ചാൽ, പിന്നീടുള്ള പാക്കറ്റുകൾക്ക് സംഭരിച്ച മാർക്ക് പുനഃസ്ഥാപിക്കേണ്ടതുണ്ട്, അല്ലെങ്കിൽ അവ മാർക്കില്ലാത്ത വഴി സ്വീകരിക്കും. കണക്ഷനെ വിവരിക്കുന്ന മാർക്കും പാക്കറ്റിനെ വിവരിക്കുന്ന മാർക്കും തമ്മിലുള്ള വ്യത്യാസം അതാണ്.
റൂട്ടിനോട് മാർക്കുള്ള ചോദ്യം ചോദിക്കുക
ip route get 10.77.0.10 mark 0x2
നിയമങ്ങളും പട്ടികയും പരിശോധിക്കുക, തുടർന്ന് മാർക്ക് ഉൾപ്പെടുത്തി റൂട്ടിനോട് ചോദിക്കുക, പോളിസിയെ ബാധിക്കുന്നെങ്കിൽ ഉറവിടമോ വരവ് ഇന്റർഫേസോ കൂടി ചേർക്കുക. മാർക്കില്ലാത്ത സാധാരണ തിരച്ചിൽ മറ്റൊരു ചോദ്യത്തിന് ഉത്തരം നൽകുന്നു, നിങ്ങൾ ആഗ്രഹിക്കാത്ത വഴി സന്തോഷത്തോടെ റിപ്പോർട്ട് ചെയ്യും. നിയമത്തിന്റെ മൂല്യത്തോടൊപ്പം അതിന്റെ മാസ്കും മുൻഗണനയും പരിശോധിക്കുക, തിരഞ്ഞെടുത്ത പട്ടികയിൽ ഉപയോഗയോഗ്യമായ റൂട്ട് ഉണ്ടെന്ന് ഉറപ്പാക്കുക.
വർദ്ധിക്കുന്ന കൗണ്ടർ എന്തോ ഒരു നിയമം എന്തോ ഒരു പാക്കറ്റുമായി ഒത്തുപോയി എന്നതിന് തെളിവാണ്. അന്തിമ പാക്കറ്റ് ശരിയായ തീരുമാനബിന്ദുവിൽ ഉദ്ദേശിച്ച മാർക്ക് വഹിച്ചിരുന്നു എന്നതിന് അത് തെളിവല്ല.
മാർക്ക്, ദിശ, സമയം, മാസ്ക് എന്നിവ വായിക്കുക. നാല് പരിശോധനകൾ, റൂട്ട് ഇനി ഒരു നിഗൂഢതയല്ല.