டனல் மேலெழுகிறது, சான்றிதழ் சரிபார்க்கப்படுகிறது, பின்னர் 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 மடிக்கணினியை மீண்டும் விசாரணைக்குப் பதிலாகச் சிறிய சரிசெய்தலாக மாற்றுகின்றன.

தொடர்புடைய கட்டுரைகள்