Azure VPN Client në Linux: domenet DNS nuk mund të vendoseshin
Tuneli ngrihet dhe më pas klienti Linux nuk mund të vendosë domenet DNS. Kontrolloni systemd-resolved, ndiqni thirrjen D-Bus dhe rregulloni veprimin polkit.
Tuneli ngrihet, certifikata validohet dhe më pas një dialog thotë se serveri DNS ose domenet nuk mund të vendoseshin. Në Linux ai dialog zakonisht nuk ka të bëjë me portën: klienti ia dorëzon konfigurimin e emrave systemd-resolved përmes D-Bus, dhe një dorëzim i refuzuar e lë ndërfaqen lart me rezolucionin që vazhdon të tregojë lidhjen e vjetër. I njëjti laptop i zgjidh emrat mirë përpara se profili të marrë një prapashtesë, dhe kjo është e dhëna që ia vlen të ndiqet. Asgjë në tunel nuk ndryshoi në momentin kur u shfaq dialogu.
Pa prapashtesë klienti shtyn vetëm serverë emrash. Shtoni një domen kërkimi dhe një thirrje e dytë i bashkohet, SetLinkDomains, me kontrollin e vet të autorizimit, prandaj i njëjti profil funksionon në Windows dhe dështon këtu. Porta në të dyja rastet shtyn të njëjtat cilësime, dhe komponenti që i refuzon është lokal.
Konfirmoni që rezoluesi është systemd-resolved
Ky klient flet vetëm me systemd-resolved dhe me askënd tjetër. Arch dhe disa shpërndarje të tjera e ofrojnë të çaktivizuar, dhe /etc/resolv.conf mund t'i përkasë një rezoluesi krejt tjetër, prandaj përcaktoni pronarin përpara se të shikoni lejet.
Tre komanda e sqarojnë këtë:
systemctl status systemd-resolved
ls -l /etc/resolv.conf
resolvectl status
Po kërkoni një shërbim aktiv, një lidhje simbolike që tregon te /run/systemd/resolve/stub-resolv.conf, dhe DNS për çdo lidhje në resolvectl. Kur pronësia është e NetworkManager, kalojeni te resolved në vend që të ziheni me klientin; skedari drop-in më poshtë vendos të dy çelësat:
[main]
dns=systemd-resolved
systemd-resolved=true
Rinisni NetworkManager sapo ai skedar të ekzistojë. Një rezolues joaktiv bashkë me një klient që vazhdon të thërrasë emrin e tij D-Bus prodhojnë një gabim që nuk emërton asnjërin prej tyre.
Ndiqni thirrjen D-Bus që dështon
Ky hap e kthen dialogun në një përgjigje konkrete. Ndiqni ndërfaqen e rezoluesit në një terminal dhe ditarin në një tjetër, pastaj rilidhuni:
sudo dbus-monitor --system "interface='org.freedesktop.resolve1.Manager'"
journalctl -fu systemd-resolved
Duhet të shfaqen tre thirrje: SetLinkDNS, SetLinkDomains dhe SetLinkDefaultRoute. Ajo që kthehet si përgjigje gabimi është ajo që duhet rregulluar. Ajo përgjigje zakonisht tregon arsyen, për shembull org.freedesktop.DBus.Error.AccessDenied kundër SetLinkDomains. Shënoni cila thirrje ishte, sepse pjesa tjetër flet pikërisht për kalimin e asaj thirrjeje.
Jepini klientit veprimet polkit që i nevojiten
Lexoni politikën përpara se të shkruani një rregull. Një klient që ekzekutohet si shërbim nuk mund t'i përgjigjet një kërkese interaktive, prandaj një auth_admin_keep i nënkuptuar është një rrugë pa krye.
pkaction --verbose --action-id org.freedesktop.resolve1.set-domains
pkaction --action-id org.freedesktop.resolve1.set-dns-servers --verbose
Nëse përgjigjja është auth_admin_keep, klienti ka nevojë për një rregull të shprehur. Fragmenti më poshtë lejon katër veprimet resolve1 që një klient VPN përdor gjatë lidhjes dhe lë gjithçka tjetër në 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;
});
Vendoseni në /etc/polkit-1/rules.d/ si një skedar që do ta njihni më vonë, për shembull 50-azurevpn.rules, dhe zëvendësoni emrin e grupit në fragment me tuajin përpara se të dilni dhe të hyni përsëri. Mbajeni të ngushtë, sepse lejimi i çdo veprimi resolve1 për çdo llogari është më i gjerë sesa i nevojitet këtij klienti dhe shumë më i vështirë për t'u audituar më pas.
Kontrolloni XML-në e profilit përpara se të modifikoni polkit
Një profil i modifikuar me dorë mund të injorohet pa asnjë fjalë. Microsoft dokumenton një strukturë të sheshtë ku hyrjet dnsserver qëndrojnë drejtpërdrejt brenda dnsservers, dhe prapashtesat brenda dnssuffixes. Një element shtesë mbështjellës rreth çdo adrese nuk është ajo formë, dhe klienti kthehet në heshtje te ajo që shtyn porta.
Bëni testin e heqjes përpara se të prekni polkit. Hiqni bllokun e prapashtesës, rilidhuni dhe shikoni nëse dialogu ndryshon. Nëse ndryshon, thirrja që dështonte ishte dorëzimi i domenit, dhe rregullimi është autorizimi, jo një tjetër modifikim XML.
Verifikoni domenin në lidhjen e tunelit
Rilidhuni dhe lexoni resolvectl status përsëri, duke kontrolluar që lidhja e tunelit mbart serverin e emrave dhe domenin e kërkimit bashkë. Zgjidhni një emër privat të shkurtër në vend të një publik. Kur emri zgjidhet por shërbimi pas tij nuk përgjigjet, dorëzimi DNS funksionoi dhe problemi i mbetur është rrugëtimi.
Shkruani në tiketë pronarin e rezoluesit, thirrjen D-Bus që dështoi, skedarin e rregullit dhe versionin e profilit. Ato katër rreshta e kthejnë laptopin e ardhshëm Linux në një rregullim të shkurtër në vend të një hetimi të përsëritur.