Az alagút feljön, a tanúsítvány érvényesül, majd egy párbeszédablak közli, hogy a DNS-kiszolgálót vagy a tartományokat nem sikerült beállítani. Linuxon ez az ablak általában nem az átjáróról szól: a kliens a névkonfigurációt D-Buson keresztül átadja a systemd-resolvednek, és az elutasított átadás fent hagyja az interfészt, miközben a névfeloldás továbbra is a régi kapcsolatra mutat. Ugyanaz a laptop gond nélkül oldja fel a neveket, mielőtt a profil utótagot kapna, és ez az a nyom, amelyet érdemes követni. Az alagúton semmi sem változott abban a pillanatban, amikor az ablak megjelent.

Utótag nélkül a kliens csak névkiszolgálókat küld. Adjon hozzá egy keresési tartományt, és egy második hívás csatlakozik hozzá, SetLinkDomains, saját engedélyezési ellenőrzéssel, ezért ugyanaz a profil Windows alatt működik, itt pedig meghiúsul. Az átjáró mindkét esetben ugyanazokat a beállításokat küldi, és az őket elutasító komponens helyi.

Erősítse meg, hogy a feloldó a systemd-resolved

Ez a kliens a systemd-resolveddel beszél, és senki mással. Az Arch és több más disztribúció kikapcsolva szállítja, és a /etc/resolv.conf teljesen más feloldóhoz is tartozhat, ezért az engedélyek előtt állapítsa meg a tulajdonost.

Három parancs tisztázza:

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

Aktív szolgáltatást, a /run/systemd/resolve/stub-resolv.conf felé mutató szimbolikus hivatkozást és kapcsolatonkénti DNS-t keres a resolvectl parancsban. Amikor a tulajdonjog a NetworkManagernél van, tegye át resolvedre ahelyett, hogy a klienssel harcolna; az alábbi drop-in mindkét kulcsot beállítja:

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

Indítsa újra a NetworkManagert, amint ez a fájl létezik. Egy inaktív feloldó és egy kliens, amely továbbra is hívja annak D-Bus nevét, olyan hibát ad, amely egyiküket sem nevezi meg.

Figyelje a meghiúsuló D-Bus hívást

Ez a lépés konkrét válasszá alakítja a párbeszédablakot. Figyelje a feloldó interfészét az egyik terminálban, a naplót egy másikban, majd csatlakozzon újra:

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

Három hívásnak kell megjelennie: SetLinkDNS, SetLinkDomains és SetLinkDefaultRoute. Az, amelyik hibaválaszként jön vissza, az javítandó. Ez a válasz általában megnevezi az okát, például org.freedesktop.DBus.Error.AccessDenied ellen SetLinkDomains. Jegyezze fel, melyik hívás volt, mert a következő szakasz arról szól, hogyan engedjük át azt a hívást.

Adja meg a kliensnek szükséges polkit műveleteket

Olvassa el a házirendet, mielőtt szabályt ír. A szolgáltatásként futó kliens nem tud interaktív kérésre válaszolni, ezért az implicit auth_admin_keep zsákutca.

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

Ha a válasz auth_admin_keep, a kliensnek kifejezett szabályra van szüksége. Az alábbi részlet engedélyezi a négy resolve1 műveletet, amelyet a VPN kliens kapcsolat közben használ, és minden mást a következőn hagy: 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;
});

Tegye a /etc/polkit-1/rules.d/ könyvtárba olyan fájlként, amelyet később felismer, például 50-azurevpn.rules, és a kijelentkezés és újbóli bejelentkezés előtt cserélje ki a részletben szereplő csoportnevet a sajátjára. Tartsa szűken, mert minden resolve1 művelet engedélyezése minden fióknak szélesebb, mint amire ennek a kliensnek szüksége van, és később sokkal nehezebb auditálni.

Ellenőrizze a profil XML-jét, mielőtt a polkitot szerkeszti

Egy kézzel szerkesztett profil szó nélkül figyelmen kívül maradhat. A Microsoft lapos elrendezést dokumentál, amelyben a dnsserver bejegyzések közvetlenül a dnsservers belsejében vannak, az utótagok pedig a dnssuffixes belsejében. Egy extra burkolóelem minden cím körül nem ez a forma, és a kliens csendben visszaesik arra, amit az átjáró küld.

Végezze el az eltávolítási tesztet, mielőtt a polkithez nyúl. Távolítsa el az utótagblokkot, csatlakozzon újra, és nézze meg, változik-e a párbeszédablak. Ha igen, a meghiúsult hívás a tartományátadás volt, és a javítás engedélyezés, nem újabb XML-szerkesztés.

Ellenőrizze a tartományt az alagút kapcsolatán

Csatlakozzon újra, és olvassa el újra a resolvectl status kimenetét, ellenőrizve, hogy az alagút kapcsolata együtt hordozza a névkiszolgálót és a keresési tartományt. Rövid privát nevet oldjon fel nyilvános helyett. Ha a név feloldódik, de a mögötte lévő szolgáltatás nem válaszol, a DNS-átadás működött, és a fennmaradó probléma az útválasztás.

Írja be a jegybe a feloldó tulajdonosát, a meghiúsult D-Bus hívást, a szabályfájlt és a profil verzióját. Az a négy sor a következő Linux laptopot rövid javítássá teszi ismételt vizsgálat helyett.

Kapcsolódó cikkek