Azure VPN Client Linuxon: nem sikerült beállítani a DNS-tartományokat
Az alagút feljön, majd a Linux kliens nem tudja beállítani a DNS-tartományokat. Ellenőrizze a systemd-resolvedet, figyelje a D-Bus hívást, és javítsa a polkit műveletet.
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.