Tailscale Serve vs Funnel: ലിങ്ക് യഥാർത്ഥത്തിൽ ആർക്ക് തുറക്കാം?
Serve സേവനം നിങ്ങളുടെ tailnet-മായി പങ്കിടുന്നു, Funnel അത് തുറന്ന ഇന്റർനെറ്റിലേക്ക് വെളിപ്പെടുത്തുന്നു. പ്രേക്ഷകരെ, ഐഡന്റിറ്റി ഹെഡറുകളെ, Funnel അനുവദിക്കുന്ന പോർട്ടുകളെ എന്നിവ താരതമ്യം ചെയ്യുക.
രണ്ട് കമാൻഡുകളും ഒരു ലോക്കൽ സേവനം Tailscale HTTPS നാമത്തിലൂടെ പ്രസിദ്ധീകരിക്കുന്നു, അവ പ്രവർത്തിപ്പിക്കുന്ന മെഷീനിൽ നിന്ന് അവ മിക്കവാറും ഒരുപോലെ കാണപ്പെടുന്നു. വ്യത്യാസം എന്നത് പിന്നീട് URL-ൽ എത്താൻ ആർക്ക് കഴിയും എന്നതാണ്, ആ വ്യത്യാസമാണ് നിങ്ങളുടെ അപ്ലിക്കേഷന് ഇനിയും ഏത് നിയന്ത്രണങ്ങൾ വേണമെന്ന് തീരുമാനിക്കുന്നത്. Serve പ്രേക്ഷകരെ tailnet-നുള്ളിൽ നിർത്തുന്നു, Funnel അവരെ തുറന്ന ഇന്റർനെറ്റിലേക്ക് മാറ്റുന്നു. ആദ്യം പ്രേക്ഷകരെ തിരഞ്ഞെടുക്കുക, പിന്നീട് അവരുമായി പൊരുത്തപ്പെടുന്ന കമാൻഡ് തിരഞ്ഞെടുക്കുക.
Serve നിങ്ങളുടെ tailnet-നുള്ളിലെ ഒരു ചോദ്യത്തിന് ഉത്തരം നൽകുന്നു
Serve ഒരു ലോക്കൽ പോർട്ട് പ്രോക്സി ചെയ്യുന്നു അല്ലെങ്കിൽ നിങ്ങളുടെ tailnet-ലെ ഉപകരണങ്ങൾക്ക് ലോക്കൽ ഉള്ളടക്കം നൽകുന്നു, tailnet-ന്റെ ആക്സസ് നിയമങ്ങൾ ഓരോ അഭ്യർത്ഥനയ്ക്കും ഇപ്പോഴും ബാധകമാണ്. പോർട്ട് 3000-ലെ ഒരു ഡാഷ്ബോർഡ് നിങ്ങളുടെ ഉപകരണങ്ങൾക്ക് മാത്രം പരിഹരിക്കാനും ബന്ധിപ്പിക്കാനും കഴിയുന്ന HTTPS നാമത്തിൽ എത്താവുന്നതാകുന്നു. ആന്തരിക ഉപകരണങ്ങൾക്ക് ഇതാണ് ശരിയായ സ്ഥിരസ്ഥിതി, കാരണം പ്രേക്ഷകർ ഇതിനകം tailnet പ്രാമാണീകരിച്ചിട്ടുണ്ട്, നിങ്ങൾ പൊതു ഉപരിതലം ചേർക്കുന്നുമില്ല. URL ഒരു സാധാരണ വെബ്സൈറ്റ് പോലെ തോന്നുന്നു, അതുകൊണ്ടാണ് ആളുകൾ അതിനെ അങ്ങനെ തന്നെ കരുതുന്നത്.
Serve താൻ കൈമാറുന്ന അഭ്യർത്ഥനകളിൽ tailnet ഉപയോക്താവിനെ വിവരിക്കുന്ന ഐഡന്റിറ്റി ഹെഡറുകളും ചേർക്കാം. നിങ്ങളുടെ അപ്ലിക്കേഷൻ ആ ഹെഡറുകളെ പ്രാമാണീകരണമായി വിശ്വസിക്കുന്നെങ്കിൽ, ബാക്കെൻഡ് localhost-ലേക്ക് ബന്ധിക്കുക, അങ്ങനെ മറ്റൊന്നും നേരിട്ട് അതിൽ എത്താനാകില്ല; റൂട്ട് ചെയ്യാവുന്ന വിലാസത്തിൽ കേൾക്കുന്ന ബാക്കെൻഡിന് പ്രോക്സിയിലൂടെ ഒരിക്കലും കടന്നുപോകാത്ത അഭ്യർത്ഥനകൾ ലഭിക്കാം.
Funnel പ്രേക്ഷകരെ തുറന്ന ഇന്റർനെറ്റിലേക്ക് മാറ്റുന്നു
Funnel തിരഞ്ഞെടുത്ത സേവനം URL ഉള്ള ഏവർക്കും പ്രസിദ്ധീകരിക്കുന്നു, സന്ദർശകർക്ക് ക്ലയന്റോ അക്കൗണ്ടോ നിങ്ങളുടെ tailnet-ലെ അംഗത്വമോ ആവശ്യമില്ല. അതിനാൽ വിഭവത്തിന് ഏത് പൊതു സേവനത്തിനും പ്രയോഗിക്കുന്ന പ്രാമാണീകരണം, നിരക്ക് പരിധി, പാച്ചുകൾ എന്നിവ ആവശ്യമാണ്. പൊതു അഭ്യർത്ഥനകൾ Serve-ന്റെ tailnet ഐഡന്റിറ്റി ഹെഡറുകൾ വഹിക്കുന്നില്ല, അതിനാൽ അവയെ ആശ്രയിച്ച അപ്ലിക്കേഷന് Funnel-ന് കീഴിൽ ഉപയോക്തൃ ഐഡന്റിറ്റിയേ ഇല്ല. മറ്റൊരു പ്രസിദ്ധീകരണ കമാൻഡ് തിരഞ്ഞെടുക്കുന്നത് പ്രാമാണീകരണ ചോദ്യത്തിന് നിങ്ങൾക്കുപകരം ഉത്തരം നൽകുന്നില്ല.
Funnel-ന് പഴയ റിലീസിലെ ട്യൂട്ടോറിയൽ പരാമർശിച്ചേക്കാത്ത പരിമിതികളുമുണ്ട്. നാമത്തിനായി Tailscale നേടുന്ന സർട്ടിഫിക്കറ്റ് ഉപയോഗിച്ച് അത് TLS അവസാനിപ്പിക്കുന്നു, കൂടാതെ നിർദ്ദിഷ്ട ശ്രവണ പോർട്ടുകൾ മാത്രം പിന്തുണയ്ക്കുന്നു, Funnel ഡോക്യുമെന്റേഷൻ വിവരിക്കുന്നതുപോലെ. നിങ്ങളുടെ സേവനം ആ പോർട്ടുകളിൽ ഒന്നിൽ HTTPS അല്ലാത്ത ഒരു പ്രോട്ടോക്കോൾ പ്രതീക്ഷിക്കുന്നെങ്കിൽ, Funnel കോൺഫിഗറേഷൻ പസിലല്ല, തെറ്റായ ഉപകരണമാണ്.
മോഡ് പോർട്ടിൽ നിന്നല്ല, ക്ലയന്റിൽ നിന്ന് വായിക്കുക
എന്തെങ്കിലും പങ്കിടുന്നതിന് മുമ്പ് നിലവിലെ അവസ്ഥ പരിശോധിക്കുക, കാരണം രണ്ട് മോഡുകളും ഒരേ ലോക്കൽ പോർട്ടിനായി വ്യത്യസ്ത സമയങ്ങളിൽ കോൺഫിഗർ ചെയ്യാം. സ്റ്റാറ്റസ് കമാൻഡുകൾ യഥാർത്ഥത്തിൽ എന്ത് പ്രസിദ്ധീകരിച്ചു, ആർക്കുവേണ്ടി എന്ന് റിപ്പോർട്ട് ചെയ്യുന്നു. URL പ്രതികരിക്കുന്നു എന്ന വസ്തുതയിൽ നിന്ന് പ്രേക്ഷകരെ അനുമാനിക്കരുത്.
tailscale serve status
tailscale funnel status
tailscale status --json | head -40
ക്ലയന്റ് പതിപ്പുകൾക്കിടയിൽ കമാൻഡ് സിന്താക്സ് മാറിയിട്ടുണ്ട്, അതിനാൽ പകർത്തിയ ഒരു വിളി നിങ്ങൾ ഉദ്ദേശിച്ചതിൽ നിന്ന് വ്യത്യസ്ത മോഡ് തിരഞ്ഞെടുത്തേക്കാം. നിങ്ങൾ പ്രവർത്തിപ്പിക്കുന്ന പതിപ്പിനുള്ള രേഖപ്പെടുത്തിയ രൂപം മുൻഗണന നൽകുക, അനുമാനിക്കുന്നതിനുപകരം ക്ലയന്റ് അച്ചടിക്കുന്ന സ്ഥിരീകരണം വായിക്കുക. Serve-ഉം Funnel-ഉം കോൺഫിഗറേഷനുകൾ ഉണ്ടെങ്കിൽ, വെളിപ്പെടുത്തലിന് പ്രധാനമായത് പൊതുവായതാണ്. ഉദ്ദേശിക്കാത്ത കോൺഫിഗറേഷൻ അതിന് മുകളിൽ ചേർക്കുന്നതിനുപകരം പുനഃസജ്ജമാക്കുക.
ഔട്ട്പുട്ട് പ്രേക്ഷകരെ പേരിടുന്നില്ലെങ്കിൽ നിർത്തി സ്റ്റാറ്റസ് വീണ്ടും വായിക്കുക. പ്രഖ്യാപിത പ്രേക്ഷകരില്ലാതെ പ്രസിദ്ധീകരിച്ച URL ഒരു ഊഹമാണ്, ആ ഊഹങ്ങളാണ് ആന്തരിക ഡാഷ്ബോർഡുകളെ തുറന്ന ഇന്റർനെറ്റിലെത്തിക്കുന്നത്.
യഥാർത്ഥത്തിൽ ഉദ്ദേശിച്ച പ്രേക്ഷകരുമായി പരീക്ഷിക്കുക
സേവനം പ്രസിദ്ധീകരിച്ച മെഷീനിൽ നിന്നല്ല, tailnet-ന് പുറത്തുനിന്ന് പരീക്ഷിക്കുക. tailnet ഉപകരണത്തിൽ നിന്നുള്ള അഭ്യർത്ഥന പ്രോക്സി പ്രവർത്തിക്കുന്നുവെന്ന് തെളിയിക്കുന്നു, പക്ഷേ ഒരു അപരിചിതൻ ഒഴിവാക്കപ്പെട്ടുവെന്ന് തെളിയിക്കുന്നില്ല. Tailscale ക്ലയന്റില്ലാത്തതും tailnet-ലേക്ക് റൂട്ടില്ലാത്തതുമായ ഒരു നെറ്റ്വർക്ക് ഉപയോഗിക്കുക.
curl -sI https://host.tailnet-name.ts.net
curl -sI https://host.tailnet-name.ts.net --resolve host.tailnet-name.ts.net:443:203.0.113.10
ആന്തരിക ഡാഷ്ബോർഡിന് പുറം അഭ്യർത്ഥന കണക്ട് ചെയ്യുന്നതിൽ പരാജയപ്പെടണം അല്ലെങ്കിൽ അധികാരപ്പെടുത്തുന്നതിൽ പരാജയപ്പെടണം, ആന്തരിക അഭ്യർത്ഥന നിങ്ങൾ പ്രതീക്ഷിക്കുന്ന ഐഡന്റിറ്റിയോടെ വിജയിക്കണം. പൊതു സേവനത്തിന് പുറം അഭ്യർത്ഥന വിജയിക്കണം, അപ്ലിക്കേഷൻ സ്വന്തം ക്രെഡൻഷ്യലുകൾ ആവശ്യപ്പെടണം. ഈ രണ്ട് ഫലങ്ങളിൽ ഏതാണ് നിങ്ങൾ നിരീക്ഷിച്ചതെന്ന് രേഖപ്പെടുത്തുക, കാരണം URL മാത്രം അത് പറയുന്നില്ല. ഫലം ഉദ്ദേശ്യത്തിന് വിരുദ്ധമാണെങ്കിൽ, ആദ്യം പൊതു കോൺഫിഗറേഷൻ നീക്കം ചെയ്ത് പിന്നീട് അന്വേഷിക്കുക.
ഒരു സേവനം പ്രസിദ്ധീകരിക്കുന്നത് നിങ്ങളുടെ പുറത്തേക്കുള്ള ട്രാഫിക് എവിടെനിന്ന് പുറത്തുപോകുന്നു എന്ന് നിയന്ത്രിക്കുന്ന എക്സിറ്റ് നോഡ് തിരഞ്ഞെടുക്കുന്നതിന് തുല്യമായ തീരുമാനമല്ല. Serve-ഉം Funnel-ഉം നിങ്ങൾ പ്രവർത്തിപ്പിക്കുന്ന എന്തിലേക്ക് ആർക്ക് എത്താം എന്നതിന് ഉത്തരം നൽകുന്നു, എക്സിറ്റ് നോഡ് നിങ്ങളുടെ സ്വന്തം കണക്ഷനുകൾ എവിടെനിന്ന് വരുന്നതായി തോന്നുന്നു എന്നതിന് ഉത്തരം നൽകുന്നു. രണ്ട് ചോദ്യങ്ങളും വേർതിരിച്ച് നിർത്തുക, താരതമ്യം ലളിതമായി തുടരും.