ഒരു സ്വകാര്യ സബ്നെറ്റിന് പ്രവർത്തിക്കുന്ന strongSwan കണക്ഷൻ, ആരോ ഒരു വരി തിരുത്തിയതുകൊണ്ട് മാത്രം ഇന്റർനെറ്റ് ട്രാഫിക് കൊണ്ടുപോകില്ല. പൂർണ ടണൽ എന്നത് child SA ഏത് വിലാസങ്ങളെ സംരക്ഷിക്കുന്നു എന്നതിനെക്കുറിച്ചുള്ള രണ്ട് കക്ഷികൾ തമ്മിലുള്ള ഉടമ്പടിയാണ്, ഓരോ കക്ഷിയും മറ്റേതിനെ തന്നെ ആധാരമാക്കി വിളിക്കുന്നു. ഒരു വശം ശരിയാക്കി മറ്റേത് തെറ്റാക്കിയാൽ child SA ഉയരില്ല അല്ലെങ്കിൽ ഉദ്ദേശിച്ചതിലും ഇടുങ്ങിയതായി ഉയരും. താഴെയുള്ള അഞ്ച് പരിശോധനകൾ ആ ഉടമ്പടിയെ ക്ലൈന്റിൽ നിന്ന് ഗേറ്റ്വേയിലൂടെ ഇന്റർനെറ്റിലേക്ക് പിന്തുടരുന്നു.

ആദ്യം ക്ലൈന്റിന്റെ സെലക്ടർ പരിശോധിക്കുക

ക്ലൈന്റ് ദൂരെയുള്ള വശത്ത് സംരക്ഷിക്കാൻ ആഗ്രഹിക്കുന്നത് remote_ts എന്ന് വിവരിക്കുന്നു, അത് അയയ്ക്കുന്ന എല്ലാം അതിന് അനുവദിച്ച വിലാസത്തിൽ നിന്നാണ് വരുന്നത്. ഇന്റർനെറ്റ് ട്രാഫിക്കിന് ആ മൂല്യം ഉപയോക്താവ് യഥാർത്ഥത്തിൽ എത്തുന്ന ലക്ഷ്യങ്ങളെ ഉൾക്കൊള്ളണം, അതായത് പ്രായോഗികമായി മുഴുവൻ IPv4 സ്ഥലവും. ഇപ്പോഴും ഒരു സബ്നെറ്റ് പട്ടികപ്പെടുത്തുന്ന ക്ലൈന്റ് ഇന്റർഫേസിലെ പ്രൊഫൈൽ പേര് എന്തായാലും വിഭജിത ടണൽ അഭ്യർത്ഥിക്കുന്നു. ഉറവിട വശം സാധാരണയായി dynamic ആണ്, കണക്ട് ചെയ്യുമ്പോൾ വിലാസം അനുവദിക്കുന്നതിനാൽ. അവിടെ എഴുതിയ സ്ഥിര ഉറവിടം വിലാസക്കൂട്ടം മാറുന്ന ക്ഷണത്തിൽ തകരും.

children {
    net {
        local_ts  = dynamic
        remote_ts = 0.0.0.0/0
    }
}

ഈ ഭാഗം പൂർണ കണക്ഷൻ ഫയലല്ല, ഇത് പ്രാമാണീകരണം, ഐഡന്റിറ്റികൾ, വെർച്വൽ വിലാസക്കൂട്ടം എന്നിവ ഇതിനകം കോൺഫിഗർ ചെയ്തിട്ടുണ്ടെന്ന് അനുമാനിക്കുന്നു. ക്ലൈന്റിന്റെ ഉറവിട സെലക്ടറും സെർവർ അനുവദിക്കുന്ന വിലാസവും ഇപ്പോഴും യോജിക്കണം, അല്ലെങ്കിൽ child SA ഏത് വശവും പ്രതീക്ഷിക്കാത്ത പരിധിയോടെ ഉയരും. അത് swanctl --load-all ഉപയോഗിച്ച് ലോഡ് ചെയ്ത് വിജയം അനുമാനിക്കുന്നതിന് മുമ്പ് ഔട്ട്പുട്ട് വായിക്കുക. പാഴ്സ് ചെയ്യുന്ന ഫയലും മറ്റേ കക്ഷിയുടെ നിർദ്ദേശവുമായി ഒത്തുപോകാത്ത സെലക്ടർ കാരണം നിരസിക്കപ്പെടാം.

ഗേറ്റ്വേയുടെ സെലക്ടർ അതിന്റെ സ്വന്തം വശത്ത് പരിശോധിക്കുക

ഗേറ്റ്വേ അതേ ആശയം എതിർദിശയിൽ നിന്ന് വായിക്കുന്നു. ഇന്റർനെറ്റ് ലക്ഷ്യങ്ങൾ ഗേറ്റ്വേയ്ക്ക് പ്രാദേശികമാണ്, അതിനാൽ അതിന്റെ local_ts വീതിയുള്ളതാണ്, remote_ts ക്ലൈന്റ് കൂട്ടത്തെ വിവരിക്കുന്നു. ഈ വിപരീതം പൂർണ-ടണൽ കോൺഫിഗറേഷനിലെ ഏറ്റവും സാധാരണ തെറ്റാണ്, രണ്ട് വരികളും വെവ്വേറെ വിശ്വസനീയമായി തോന്നുന്നതിനാൽ ഇത് അവലോകനം കടക്കുന്നു.

children {
    rw {
        local_ts  = 0.0.0.0/0
        remote_ts = 10.77.0.0/24
    }
}

ക്ലൈന്റ് ഭാഗം ഗേറ്റ്വേ ഫയലിലേക്ക് പകർത്തുന്നത് ഉപയോഗപ്രദമായ ഒന്നും വിവരിക്കാത്ത സെലക്ടർ ജോടി സൃഷ്ടിക്കുന്നു, രണ്ട് വശവും ഒരേ പങ്ക് അവകാശപ്പെടുന്നതിനാൽ. strongSwan ഫോർവേഡിംഗ് ഗൈഡ് ക്ലൈന്റ്-ഗേറ്റ്വേ ജോടിയാക്കൽ വ്യക്തമായി രേഖപ്പെടുത്തുന്നു, അത് പരാജയത്തിന് ശേഷമല്ല, കണക്ഷൻ ഫയലിനൊപ്പം വായിക്കേണ്ടതാണ്. ഗേറ്റ്വേ ഫയലിന് remote_ts സൂചിപ്പിക്കുന്ന കൂട്ടത്തിന്റെ നിർവചനവും വേണം. നിലവിലില്ലാത്ത കൂട്ടത്തെ പേരിടുന്ന സെലക്ടർ പരാതിയില്ലാതെ ലോഡ് ചെയ്യപ്പെടുകയും കണക്ട് ചെയ്യുമ്പോൾ പരാജയപ്പെടുകയും ചെയ്യുന്നു.

പഴയ ipsec.conf വ്യത്യസ്ത കീകളുമായി ഇടത്, വലത് പങ്കുകൾ ഉപയോഗിക്കുന്നു, rightsubnet വരി swanctl മൂല്യത്തിന്റെ നേരിട്ടുള്ള പകരംവയ്പ്പല്ല. രണ്ട് വാക്യഘടനകളും ഒന്ന് മറ്റേതിലേക്ക് ഒട്ടിക്കുന്നതിന് പകരം വെവ്വേറെ ഫയലുകളിൽ സൂക്ഷിക്കുക. ഒരേ ഡയറക്ടറിയിൽ അവ കലർത്തുന്നതാണ് പ്രവർത്തിക്കുന്ന കണക്ഷൻ റീബൂട്ടിന് ശേഷം നിശബ്ദമായി പിന്നോട്ട് പോകുന്ന വഴി.

ഫയലല്ല, ചർച്ച ചെയ്ത child SA പരിശോധിക്കുക

സംരക്ഷിച്ച കോൺഫിഗറേഷൻ ഉദ്ദേശ്യം തെളിയിക്കുന്നു, അതിൽ കൂടുതലൊന്നുമില്ല. മറ്റേ കക്ഷിക്ക് ആവശ്യപ്പെട്ടത് ചുരുക്കാം, നിലവിലുള്ള child SA അതിനടിയിലെ ഫയൽ മാറിയതുകൊണ്ട് മാത്രം മാറ്റപ്പെടുന്നില്ല. മറ്റെന്തെങ്കിലും മാറ്റുന്നതിന് മുമ്പ് യഥാർത്ഥത്തിൽ എന്താണ് ഇൻസ്റ്റാൾ ചെയ്തിരിക്കുന്നതെന്ന് സ്ഥിരീകരിക്കുക.

swanctl --list-conns
swanctl --list-sas
ip xfrm policy list

ആദ്യ കമാൻഡ് ഡീമൺ എന്താണ് ലോഡ് ചെയ്തതെന്ന് കാണിക്കുന്നു, രണ്ടാമത്തേത് സ്ഥാപിച്ച child SA-കളെ, മൂന്നാമത്തേത് കേർണൽ പ്രയോഗിക്കുന്ന നയങ്ങളെ. ഫയൽ 0.0.0.0/0 എന്ന് പറയുകയും പട്ടിക ഒരു സബ്നെറ്റ് കാണിക്കുകയും ചെയ്താൽ, ചർച്ച പരിധി ചുരുക്കി, ഫയൽ വീണ്ടും വായിച്ചാൽ അത് വിശദീകരിക്കില്ല. child അവസാനിപ്പിച്ച് വീണ്ടും ആരംഭിച്ച് മൂന്ന് ഔട്ട്പുട്ടുകളും വീണ്ടും താരതമ്യം ചെയ്യുക. അതേ ഇടുങ്ങിയ പരിധിയോടെ മടങ്ങുന്ന child പ്രാദേശിക ഫയലല്ല, ദൂരെയുള്ള വശമാണ് ചുരുക്കുന്നത്, അത് പ്രാദേശിക തിരുത്തലല്ല, മറ്റൊരു അഡ്മിനിസ്ട്രേറ്ററുമായുള്ള സംഭാഷണമാണ്.

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

ഫോർവേഡിംഗും മടക്കപ്പാതയും പരിശോധിക്കുക

സെലക്ടർ ട്രാഫിക്കിനെ ഗേറ്റ്വേയിലേക്ക് അനുവദിക്കുന്നു, ഗേറ്റ്വേ അത് കൂടുതൽ റൂട്ട് ചെയ്യാൻ നിർബന്ധിക്കുന്നില്ല. ഫോർവേഡിംഗ് പ്രവർത്തനക്ഷമമാക്കണം, ഫയർവാൾ പ്രവാഹം അനുവദിക്കണം, മറുപടി ക്ലൈന്റ് കൂട്ടത്തിലേക്ക് മടങ്ങാനുള്ള വഴി കണ്ടെത്തണം. ഇവ മൂന്ന് വെവ്വേറെ ആവശ്യകതകളാണ്, ഓരോന്നും വ്യത്യസ്ത ലക്ഷണത്തോടെ പരാജയപ്പെടുന്നു. കാണാത്ത ഫോർവേഡ് നിയമം കറുത്ത കുഴി പോലെ പെരുമാറുന്നു, കാണാത്ത മടക്കപ്പാത ഏകദിശാ ടണൽ പോലെ.

sysctl net.ipv4.ip_forward
iptables -t nat -S | grep -i masq
ip route get 1.1.1.1

സ്വകാര്യ ക്ലൈന്റ് വിലാസങ്ങൾ സാധാരണയായി പൊതു ഇന്റർഫേസ് വിടുന്നതിന് മുമ്പ് ബോധപൂർവമായ ഉറവിട വിവർത്തനം ആവശ്യപ്പെടുന്നു, വ്യക്തമായി റൂട്ട് ചെയ്ത അനുവദനത്തിന് വേറെ സമീപനം വേണം. NAT ഉൾപ്പെട്ടാൽ, സുരക്ഷാ നയം പരിശോധിക്കേണ്ട ട്രാഫിക് അതിനെ കടന്ന് വിവർത്തനം ചെയ്യപ്പെടാതിരിക്കാൻ നടപ്പാക്കൽ പിന്തുണയ്ക്കുന്ന ഒഴിവുകൾ സൂക്ഷിക്കുക. മറ്റൊരു ഗേറ്റ്വേയിൽ നിന്ന് പകർത്തിയ വിശാലമായ masquerade നിയമം രചയിതാവ് ഉദ്ദേശിച്ചതിലും ഏറെ പ്രവാഹങ്ങൾ മാറ്റുന്നു. നിയമം ക്ലൈന്റ് കൂട്ടത്തിന് മാത്രം എഴുതുക, എന്തിന് നിലനിൽക്കുന്നു എന്ന് വിശദീകരിക്കുന്ന കുറിപ്പ് വിടുക.

ക്ലൈന്റിൽ, നിങ്ങൾ അനുമാനിച്ച റൂട്ടുകളല്ല, ബാക്കെൻഡ് ഇൻസ്റ്റാൾ ചെയ്ത റൂട്ടുകൾ സ്ഥിരീകരിക്കുക. റൂട്ട് ഇൻസ്റ്റലേഷൻ അപ്രാപ്തമാക്കിയ മാനേജർക്ക് കൈകൊണ്ട് പരിപാലിക്കുന്ന റൂട്ടിംഗ് രൂപകൽപ്പന വേണം, ടണൽ മാറുമ്പോഴെല്ലാം ആ രൂപകൽപ്പന പുതുക്കണം. വീണ്ടും കണക്ട് ചെയ്തതിന് ശേഷം റൂട്ടിംഗ് പട്ടിക പരിശോധിക്കുക, പുതിയ ബൂട്ടിന് ശേഷം മാത്രമല്ല.

ടണൽ ഇപ്പോഴും എന്താണ് ഉൾക്കൊള്ളാത്തതെന്ന് പരിശോധിക്കുക

സെലക്ടർ ജോടി IPv4 മാത്രം ഉൾക്കൊള്ളുന്നു, മറ്റൊന്നുമില്ല. IPv6, DNS, ഏതെങ്കിലും ആപ്ലിക്കേഷൻ-തല നയം എന്നിവ വെവ്വേറെ തീരുമാനങ്ങളാണ്, വിശാലമായ IPv4 സെലക്ടർ അവ നിശബ്ദമായി അവഗണിക്കുന്നു. ഓരോ IPv4 പാക്കറ്റും കൊണ്ടുപോകുന്ന ടണലും ഓരോ പേരന്വേഷണവും ചോരാൻ ഇടയാക്കാം.

ഉദ്ദേശിച്ച DNS പാത വ്യക്തമായി പറയുക, പ്രാദേശിക റിസോൾവർ വഴി പേരുകൾ ഇപ്പോഴും പരിഹരിക്കുന്ന പൂർണ ടണൽ ചോദ്യങ്ങൾ ടണലിന് പുറത്തേക്ക് ചോരുന്നു, സ്വകാര്യ പേരുകൾ തകർക്കുന്നു. ക്ലൈന്റിന് IPv6 വിലാസം അനുവദിച്ചാൽ ആ വിലാസ കുടുംബത്തിനും അതേ സമീപനം വേണം, അല്ലെങ്കിൽ ഹോസ്റ്റ് ടണൽ സംരക്ഷിക്കാത്ത പാതയ്ക്ക് മുൻഗണന നൽകും. സ്വകാര്യ വശത്തിന് മാത്രം ഉത്തരം നൽകാനാകുന്ന ഒരു പേര് ഉപയോഗിച്ച് പരിശോധിക്കുക, പൊതു ഉത്തരം ചോർച്ചയായി കണക്കാക്കുക.

resolvectl query intranet.example.internal
traceroute -n 1.1.1.1

മുകളിലെ പട്ടികയിൽ നിന്ന് ചർച്ച ചെയ്ത സെലക്ടറുകളോടൊപ്പം ആ രണ്ട് കമാൻഡുകളിലൂടെ ശൃംഖല സ്ഥിരീകരിക്കുക. traceroute പ്രാദേശിക റൂട്ടറെ ആദ്യ ഹോപ്പായി കാണിച്ചാൽ, സെലക്ടറുകൾ എന്ത് അവകാശപ്പെട്ടാലും ട്രാഫിക് ടണൽ ഉപയോഗിക്കുന്നില്ല. ഇന്റർനെറ്റ് ആക്സസ് പൂർണമാകുന്നത് തിരഞ്ഞെടുത്ത ട്രാഫിക് രൂപകൽപ്പന ചെയ്ത ഗേറ്റ്വേയിലൂടെ അനുവദിക്കപ്പെട്ട്, ഫോർവേഡ് ചെയ്യപ്പെട്ട്, തിരികെ എത്തുമ്പോഴാണ്. പ്രൊഫൈലിൽ 0.0.0.0/0 കണ്ടെത്തുന്നത് ആ ശൃംഖലയുടെ തുടക്കമാണ്, അതിന്റെ തെളിവല്ല.

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