Azure VPN Client Linuxis: DNS-domeene ei saanud määrata
Tunnel tõuseb ja siis ei saa Linuxi klient DNS-domeene määrata. Kontrollige systemd-resolvedi, jälgige D-Busi kutset ja parandage polkit toiming.
Tunnel tõuseb, sertifikaat valideeritakse ja siis teatab dialoog, et DNS-serverit või domeene ei saanud määrata. Linuxis ei ole see dialoog tavaliselt lüüsi kohta: klient annab nimekonfiguratsiooni D-Busi kaudu systemd-resolvedile üle ja tagasilükatud üleandmine jätab liidese üles, kusjuures nimede lahendamine osutab endiselt vanale ühendusele. Sama sülearvuti lahendab nimesid korralikult enne, kui profiil saab sufiksi, ja see on vihje, mida tasub jälgida. Tunnelis ei muutunud midagi hetkel, mil dialoog ilmus.
Sufiksita lükkab klient edasi ainult nimeservereid. Lisage otsingudomeen ja teine kutse liitub sellega, SetLinkDomains, oma autoriseerimiskontrolliga, mistõttu sama profiil töötab Windowsis ja ebaõnnestub siin. Lüüs lükkab mõlemal juhul edasi samad seaded ja komponent, mis need tagasi lükkab, on kohalik.
Kinnitage, et lahendaja on systemd-resolved
See klient räägib systemd-resolvediga ja mitte kellegi teisega. Arch ja mitmed teised distributsioonid tarnivad selle väljalülitatud kujul ja /etc/resolv.conf võib kuuluda hoopis teisele lahendajale, seega tehke kindlaks omanik enne, kui vaatate õigusi.
Kolm käsku selgitavad selle:
systemctl status systemd-resolved
ls -l /etc/resolv.conf
resolvectl status
Otsite aktiivset teenust, sümbolilinki, mis osutab /run/systemd/resolve/stub-resolv.conf, ja DNS-i iga ühenduse kohta käsus resolvectl. Kui omanik on hoopis NetworkManager, viige see üle resolvedile, selle asemel et kliendiga võidelda; allolev drop-in seab mõlemad võtmed:
[main]
dns=systemd-resolved
systemd-resolved=true
Taaskäivitage NetworkManager, kui see fail on olemas. Mitteaktiivne lahendaja koos kliendiga, mis jätkab tema D-Busi nime kutsumist, tekitab vea, mis ei nimeta kumbagi neist.
Jälgige D-Busi kutset, mis ebaõnnestub
See samm muudab dialoogi konkreetseks vastuseks. Jälgige lahendaja liidest ühes terminalis ja logi teises, seejärel ühenduge uuesti:
sudo dbus-monitor --system "interface='org.freedesktop.resolve1.Manager'"
journalctl -fu systemd-resolved
Peaks ilmuma kolm kutset: SetLinkDNS, SetLinkDomains ja SetLinkDefaultRoute. See, mis tuleb tagasi veavastusena, on parandamist vajav. See vastus nimetab tavaliselt põhjuse, näiteks org.freedesktop.DBus.Error.AccessDenied vastu SetLinkDomains. Pange kirja, milline kutse see oli, sest järgmine jaotis räägib just selle kutse läbilaskmisest.
Andke kliendile vajalikud polkit toimingud
Lugege poliitikat enne reegli kirjutamist. Teenusena töötav klient ei saa interaktiivsele küsimusele vastata, seega kaudne auth_admin_keep on ummiktee.
pkaction --verbose --action-id org.freedesktop.resolve1.set-domains
pkaction --action-id org.freedesktop.resolve1.set-dns-servers --verbose
Kui vastus on auth_admin_keep, vajab klient selgesõnalist reeglit. Allolev katkend lubab nelja resolve1 toimingut, mida VPN-klient ühenduse ajal kasutab, ja jätab kõik muu tasemele 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;
});
Pange see kausta /etc/polkit-1/rules.d/ failina, mille te hiljem ära tunnete, näiteks 50-azurevpn.rules, ja asendage katkendis olev grupiniimi enne välja- ja sisselogimist omaga. Hoidke see kitsas, sest iga resolve1 toimingu lubamine igale kontole on laiem, kui see klient vajab, ja hiljem palju raskem auditeerida.
Kontrollige profiili XML-i enne polkit muutmist
Käsitsi muudetud profiili võidakse sõnatult eirata. Microsoft dokumenteerib lameda paigutuse, kus dnsserver kirjed asuvad otse dnsservers sees ja sufiksid dnssuffixes sees. Iga aadressi ümber olev lisamähiseelement ei ole see kuju ja klient langeb vaikselt tagasi sellele, mida lüüs edasi lükkab.
Tehke eemaldamistest enne, kui polkiti puutute. Eemaldage sufiksiplokk, ühenduge uuesti ja jälgige, kas dialoog muutub. Kui muutub, oli ebaõnnestunud kutse domeeni üleandmine ja parandus on autoriseerimine, mitte veel üks XML-i muudatus.
Kontrollige domeeni tunnelil
Ühenduge uuesti ja lugege uuesti resolvectl status, kontrollides, et tunneli liides kannab nimeserverit ja otsingudomeeni koos. Lahendage lühike privaatnimi, mitte avalik. Kui nimi laheneb, aga teenus selle taga ei vasta, siis DNS-i üleandmine töötas ja ülejäänud probleem on marsruutimine.
Kirjutage piletisse lahendaja omanik, ebaõnnestunud D-Busi kutse, reeglifail ja profiili versioon. Need neli rida muudavad järgmise Linuxi sülearvuti lühikeseks paranduseks, mitte korduvaks uurimiseks.