Azure VPN Client sistēmā Linux: DNS domēnus nevarēja iestatīt
Tunelis paceļas, un tad Linux klients nevar iestatīt DNS domēnus. Pārbaudiet systemd-resolved, novērojiet D-Bus izsaukumu un izlabojiet polkit darbību.
Tunelis paceļas, sertifikāts tiek validēts, un tad dialogs paziņo, ka DNS serveri vai domēnus nevarēja iestatīt. Linux šis dialogs parasti nav par vārteju: klients nodod nosaukumu konfigurāciju systemd-resolved, izmantojot D-Bus, un atteikta nodošana atstāj saskarni augšā, kamēr nosaukumu atrisināšana joprojām rāda uz veco savienojumu. Tas pats portatīvais dators nosaukumus atrisina labi, pirms profils iegūst sufiksu, un tas ir pavediens, kam ir vērts sekot. Tunelī nekas nemainījās tajā brīdī, kad parādījās dialogs.
Bez sufiksa klients nosūta tikai nosaukumu serverus. Pievienojiet meklēšanas domēnu, un tam pievienojas otrs izsaukums, SetLinkDomains, ar savu autorizācijas pārbaudi, tāpēc tas pats profils darbojas Windows un neizdodas šeit. Vārteja abos gadījumos nosūta tos pašus iestatījumus, un komponente, kas tos noraida, ir lokāla.
Pārliecinieties, ka atrisinātājs ir systemd-resolved
Šis klients runā tikai ar systemd-resolved un ne ar vienu citu. Arch un vairākas citas distribūcijas piegādā to izslēgtu, un /etc/resolv.conf var piederēt pavisam citam atrisinātājam, tāpēc nosakiet īpašnieku, pirms skatāties atļaujas.
Trīs komandas to noskaidro:
systemctl status systemd-resolved
ls -l /etc/resolv.conf
resolvectl status
Jūs meklējat aktīvu pakalpojumu, simbolisku saiti, kas norāda uz /run/systemd/resolve/stub-resolv.conf, un DNS katram savienojumam komandā resolvectl. Kad īpašumtiesības ir NetworkManager, pārvietojiet tās uz resolved, nevis cīnieties ar klientu; zemāk esošais drop-in iestata abas atslēgas:
[main]
dns=systemd-resolved
systemd-resolved=true
Restartējiet NetworkManager, tiklīdz šis fails pastāv. Neaktīvs atrisinātājs kopā ar klientu, kas turpina izsaukt tā D-Bus vārdu, rada kļūdu, kas nenosauc nevienu no tiem.
Novērojiet D-Bus izsaukumu, kas neizdodas
Šis solis pārvērš dialogu konkrētā atbildē. Novērojiet atrisinātāja saskarni vienā terminālī un žurnālu citā, pēc tam pievienojieties vēlreiz:
sudo dbus-monitor --system "interface='org.freedesktop.resolve1.Manager'"
journalctl -fu systemd-resolved
Jāparādās trim izsaukumiem: SetLinkDNS, SetLinkDomains un SetLinkDefaultRoute. Tas, kas atgriežas kā kļūdas atbilde, ir labojamais. Tā atbilde parasti nosauc iemeslu, piemēram org.freedesktop.DBus.Error.AccessDenied pret SetLinkDomains. Pierakstiet, kurš izsaukums tas bija, jo nākamā sadaļa ir tieši par šī izsaukuma caurlaišanu.
Piešķiriet klientam nepieciešamās polkit darbības
Izlasiet politiku, pirms rakstāt noteikumu. Klients, kas darbojas kā pakalpojums, nevar atbildēt uz interaktīvu uzvedni, tāpēc netiešs auth_admin_keep ir strupceļš.
pkaction --verbose --action-id org.freedesktop.resolve1.set-domains
pkaction --action-id org.freedesktop.resolve1.set-dns-servers --verbose
Ja atbilde ir auth_admin_keep, klientam vajag skaidru noteikumu. Zemāk esošais fragments atļauj četras resolve1 darbības, ko VPN klients izmanto savienojuma laikā, un atstāj visu pārējo pie 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;
});
Ievietojiet to /etc/polkit-1/rules.d/ kā failu, ko vēlāk atpazīsiet, piemēram 50-azurevpn.rules, un pirms izrakstīšanās un atkārtotas pierakstīšanās aizstājiet fragmentā esošo grupas nosaukumu ar savējo. Turiet to šauru, jo atļaut katru resolve1 darbību katram kontam ir plašāk, nekā šim klientam vajag, un daudz grūtāk vēlāk auditēt.
Pārbaudiet profila XML, pirms rediģējat polkit
Ar roku rediģēts profils var tikt ignorēts bez vārda. Microsoft dokumentē plakanu izkārtojumu, kurā dnsserver ieraksti atrodas tieši dnsservers iekšpusē, bet sufiksi dnssuffixes iekšpusē. Papildu ietvara elements ap katru adresi nav šī forma, un klients klusi atgriežas pie tā, ko nosūta vārteja.
Pirms aizskarst polkit, veiciet noņemšanas testu. Izņemiet sufiksa bloku, pievienojieties vēlreiz un paskatieties, vai dialogs mainās. Ja mainās, neizdevušais izsaukums bija domēna nodošana, un labojums ir autorizācija, nevis vēl viens XML labojums.
Pārbaudiet domēnu tuneļa savienojumā
Pievienojieties vēlreiz un vēlreiz izlasiet resolvectl status, pārbaudot, vai tuneļa savienojums nes nosaukumu serveri un meklēšanas domēnu kopā. Atrisiniet īsu privātu nosaukumu, nevis publisku. Kad nosaukums tiek atrisināts, bet pakalpojums aiz tā neatbild, DNS nodošana ir nostrādājusi, un atlikusī problēma ir maršrutēšana.
Ierakstiet biļetē atrisinātāja īpašnieku, neizdevušos D-Bus izsaukumu, noteikuma failu un profila versiju. Šīs četras rindas pārvērš nākamo Linux portatīvo datoru īsā labojumā, nevis atkārtotā izmeklēšanā.