ടണൽ ഉയരുന്നു, സർട്ടിഫിക്കറ്റ് സാധുതയുള്ളതാക്കുന്നു, പിന്നീട് DNS സെർവറോ ഡൊമെയ്‌നുകളോ സജ്ജമാക്കാനായില്ലെന്ന് ഒരു സംഭാഷണം പറയുന്നു. Linux-ൽ ഈ സംഭാഷണം സാധാരണയായി ഗേറ്റ്‌വേയെക്കുറിച്ചല്ല: ക്ലയന്റ് നാമ കോൺഫിഗറേഷൻ D-Bus വഴി systemd-resolved-ന് കൈമാറുന്നു, നിരസിക്കപ്പെട്ട കൈമാറ്റം ഇന്റർഫേസ് മുകളിൽ തന്നെ വിടുന്നു, നാമപരിഹാരം ഇപ്പോഴും പഴയ ലിങ്കിലേക്ക് ചൂണ്ടിക്കൊണ്ടിരിക്കെ. അതേ ലാപ്‌ടോപ്പ് പ്രൊഫൈലിന് സഫിക്സ് ലഭിക്കുന്നതിന് മുമ്പ് നാമങ്ങൾ കൃത്യമായി റിസോൾവ് ചെയ്യുന്നു, അതാണ് പിന്തുടരാൻ യോഗ്യമായ സൂചന. സംഭാഷണം പ്രത്യക്ഷപ്പെട്ട നിമിഷത്തിൽ ടണലിൽ ഒന്നും മാറിയിരുന്നില്ല.

സഫിക്സ് ഇല്ലാതെ ക്ലയന്റ് നെയിം സെർവറുകൾ മാത്രം അയയ്ക്കുന്നു. ഒരു തിരയൽ ഡൊമെയിൻ ചേർക്കുക, രണ്ടാമത്തെ കോൾ അതിൽ ചേരുന്നു, SetLinkDomains, സ്വന്തം അംഗീകാര പരിശോധനയോടെ, അതുകൊണ്ടാണ് അതേ പ്രൊഫൈൽ Windows-ൽ പ്രവർത്തിച്ച് ഇവിടെ പരാജയപ്പെടുന്നത്. ഗേറ്റ്‌വേ രണ്ടു സന്ദർഭങ്ങളിലും അതേ ക്രമീകരണങ്ങൾ അയയ്ക്കുന്നു, അവ നിരസിക്കുന്ന ഘടകം പ്രാദേശികമാണ്.

റിസോൾവർ systemd-resolved ആണെന്ന് ഉറപ്പാക്കുക

ഈ ക്ലയന്റ് systemd-resolved-നോട് മാത്രം സംസാരിക്കുന്നു, മറ്റാരോടുമല്ല. Arch ഉം മറ്റു ചില വിതരണങ്ങളും ഇത് പ്രവർത്തനരഹിതമായി നൽകുന്നു, കൂടാതെ /etc/resolv.conf പൂർണ്ണമായും മറ്റൊരു റിസോൾവറിന്റേതായിരിക്കാം, അതിനാൽ അനുമതികൾ നോക്കുന്നതിന് മുമ്പ് ഉടമയെ നിർണ്ണയിക്കുക.

മൂന്ന് കമാൻഡുകൾ അത് വ്യക്തമാക്കുന്നു:

systemctl status systemd-resolved
ls -l /etc/resolv.conf
resolvectl status

നിങ്ങൾ തിരയുന്നത് സജീവ സേവനം, /run/systemd/resolve/stub-resolv.conf ലേക്ക് ചൂണ്ടുന്ന സിംബോളിക് ലിങ്ക്, കൂടാതെ resolvectl-ൽ ഓരോ ലിങ്കിനുമുള്ള DNS എന്നിവയാണ്. പകരം NetworkManager-ന് ഉടമസ്ഥതയുണ്ടെങ്കിൽ, ക്ലയന്റുമായി തർക്കിക്കുന്നതിന് പകരം അത് resolved-ലേക്ക് മാറ്റുക; താഴെയുള്ള drop-in രണ്ട് കീകളും സജ്ജമാക്കുന്നു:

[main]
dns=systemd-resolved
systemd-resolved=true

ആ ഫയൽ നിലവിലുണ്ടായാൽ NetworkManager ഒരിക്കൽ പുനരാരംഭിക്കുക. നിഷ്ക്രിയ റിസോൾവറും അതിന്റെ D-Bus പേര് വിളിച്ചുകൊണ്ടിരിക്കുന്ന ക്ലയന്റും ചേർന്ന് രണ്ടിനെയും പേരെടുത്ത് പറയാത്ത ഒരു പിശക് ഉണ്ടാക്കുന്നു.

പരാജയപ്പെടുന്ന D-Bus കോൾ നിരീക്ഷിക്കുക

ഈ ഘട്ടം സംഭാഷണത്തെ കൃത്യമായ ഉത്തരമാക്കി മാറ്റുന്നു. ഒരു ടെർമിനലിൽ റിസോൾവർ ഇന്റർഫേസും മറ്റൊന്നിൽ ജേണലും നിരീക്ഷിച്ച ശേഷം വീണ്ടും കണക്ട് ചെയ്യുക:

sudo dbus-monitor --system "interface='org.freedesktop.resolve1.Manager'"
journalctl -fu systemd-resolved

മൂന്ന് കോളുകൾ ദൃശ്യമാകണം: SetLinkDNS, SetLinkDomains കൂടാതെ SetLinkDefaultRoute. പിശക് ഉത്തരമായി തിരികെ വരുന്നതാണ് ശരിയാക്കേണ്ടത്. ആ ഉത്തരം സാധാരണയായി അതിന്റെ കാരണം പറയുന്നു, ഉദാഹരണത്തിന് org.freedesktop.DBus.Error.AccessDenied നേരെ SetLinkDomains. ഏത് കോളായിരുന്നു എന്ന് എഴുതിവയ്ക്കുക, കാരണം അടുത്ത ഭാഗം ആ കോൾ കടത്തിവിടുന്നതിനെക്കുറിച്ചാണ്.

ക്ലയന്റിന് വേണ്ട polkit പ്രവർത്തനങ്ങൾ നൽകുക

നിയമം എഴുതുന്നതിന് മുമ്പ് നയം വായിക്കുക. സേവനമായി പ്രവർത്തിക്കുന്ന ക്ലയന്റിന് സംവേദനാത്മക അഭ്യർത്ഥനയ്ക്ക് ഉത്തരം നൽകാനാകില്ല, അതിനാൽ പരോക്ഷമായ auth_admin_keep ഒരു അവസാനമില്ലാത്ത വഴിയാണ്.

pkaction --verbose --action-id org.freedesktop.resolve1.set-domains
pkaction --action-id org.freedesktop.resolve1.set-dns-servers --verbose

ഉത്തരം auth_admin_keep ആണെങ്കിൽ, ക്ലയന്റിന് വ്യക്തമായ നിയമം വേണം. താഴെയുള്ള സ്നിപ്പെറ്റ് VPN ക്ലയന്റ് കണക്ഷൻ സമയത്ത് ഉപയോഗിക്കുന്ന നാല് resolve1 പ്രവർത്തനങ്ങൾ അനുവദിക്കുന്നു, ബാക്കിയെല്ലാം polkit.Result.NOT_HANDLED എന്ന നിലയിൽ വിടുന്നു:

polkit.addRule(function(action, subject) {
  var allowed = [
    "org.freedesktop.resolve1.set-dns-servers",
    "org.freedesktop.resolve1.set-domains",
    "org.freedesktop.resolve1.set-default-route",
    "org.freedesktop.resolve1.revert"
  ];
  if (allowed.indexOf(action.id) !== -1 &&
      subject.isInGroup("wheel")) {
    return polkit.Result.YES;
  }
  return polkit.Result.NOT_HANDLED;
});

അത് /etc/polkit-1/rules.d/-ൽ പിന്നീട് തിരിച്ചറിയാവുന്ന ഫയലായി വയ്ക്കുക, ഉദാഹരണത്തിന് 50-azurevpn.rules, കൂടാതെ ലോഗ് ഔട്ട് ചെയ്ത് വീണ്ടും ലോഗിൻ ചെയ്യുന്നതിന് മുമ്പ് സ്നിപ്പെറ്റിലെ ഗ്രൂപ്പ് പേര് നിങ്ങളുടേതാക്കി മാറ്റുക. ഇത് ഇടുങ്ങിയതായി സൂക്ഷിക്കുക, കാരണം ഓരോ അക്കൗണ്ടിനും ഓരോ resolve1 പ്രവർത്തനവും അനുവദിക്കുന്നത് ഈ ക്ലയന്റിന് ആവശ്യമായതിനേക്കാൾ വിശാലമാണ്, പിന്നീട് ഓഡിറ്റ് ചെയ്യാൻ വളരെ ബുദ്ധിമുട്ടും.

polkit എഡിറ്റ് ചെയ്യുന്നതിന് മുമ്പ് പ്രൊഫൈൽ XML പരിശോധിക്കുക

കൈകൊണ്ട് എഡിറ്റ് ചെയ്ത പ്രൊഫൈൽ ഒരു വാക്കും പറയാതെ അവഗണിക്കപ്പെടാം. Microsoft പരന്ന ലേയൗട്ട് രേഖപ്പെടുത്തുന്നു അതിൽ dnsserver എൻട്രികൾ നേരിട്ട് dnsservers ഉള്ളിൽ വരുന്നു, സഫിക്സുകൾ dnssuffixes ഉള്ളിൽ. ഓരോ വിലാസത്തിനും ചുറ്റും അധിക റാപ്പർ എലമെന്റ് ആ രൂപമല്ല, ക്ലയന്റ് ഗേറ്റ്‌വേ അയയ്ക്കുന്നതിലേക്ക് നിശബ്ദമായി മടങ്ങുന്നു.

polkit തൊടുന്നതിന് മുമ്പ് നീക്കം ചെയ്യൽ പരിശോധന നടത്തുക. സഫിക്സ് ബ്ലോക്ക് എടുത്തുമാറ്റി വീണ്ടും കണക്ട് ചെയ്ത് സംഭാഷണം മാറുന്നുണ്ടോ നോക്കുക. മാറുന്നുവെങ്കിൽ, പരാജയപ്പെട്ട കോൾ ഡൊമെയിൻ കൈമാറ്റമായിരുന്നു, പരിഹാരം അംഗീകാരമാണ്, മറ്റൊരു XML എഡിറ്റല്ല.

ടണൽ ലിങ്കിൽ ഡൊമെയിൻ പരിശോധിക്കുക

വീണ്ടും കണക്ട് ചെയ്ത് resolvectl status വീണ്ടും വായിക്കുക, ടണൽ ലിങ്ക് നെയിം സെർവറും തിരയൽ ഡൊമെയ്നും ഒരുമിച്ച് വഹിക്കുന്നുണ്ടെന്ന് പരിശോധിക്കുക. പൊതു നാമത്തിന് പകരം ചെറിയ സ്വകാര്യ നാമം റിസോൾവ് ചെയ്യുക. നാമം റിസോൾവ് ചെയ്യുന്നുവെങ്കിലും അതിന് പിന്നിലെ സേവനം ഉത്തരം നൽകുന്നില്ലെങ്കിൽ, DNS കൈമാറ്റം പ്രവർത്തിച്ചു, ബാക്കിയുള്ള പ്രശ്നം റൂട്ടിംഗാണ്.

ടിക്കറ്റിൽ റിസോൾവർ ഉടമ, പരാജയപ്പെട്ട D-Bus കോൾ, നിയമ ഫയൽ, പ്രൊഫൈൽ പതിപ്പ് എന്നിവ എഴുതുക. ആ നാല് വരികൾ അടുത്ത Linux ലാപ്‌ടോപ്പിനെ ആവർത്തിച്ചുള്ള അന്വേഷണത്തിന് പകരം ചെറിയ പരിഹാരമാക്കി മാറ്റുന്നു.

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