Azure VPN Client í Linux: ekki tókst að stilla DNS-lén
Tunnillinn kemur upp og þá getur Linux-biðlarinn ekki stillt DNS-lén. Athugaðu systemd-resolved, fylgstu með D-Bus-kallinu og lagaðu polkit-aðgerðina.
Tunnillinn kemur upp, vottorðið staðfestist og þá segir gluggi að ekki hafi tekist að stilla DNS-þjóninn eða léni. Í Linux snýst þessi gluggi yfirleitt ekki um gáttina: biðlarinn afhendir nafnstillinguna systemd-resolved um D-Bus, og hafnaðri afhendingu lætur viðmótið standa uppi með upplausn sem bendir enn á gömlu tenginguna. Sami fartölva leysir nöfn vel áður en sniðið fær viðskeyti, og það er vísbendingin sem er þess virði að fylgja. Ekkert við tunnilinn breyttist á þeirri stundu þegar glugginn birtist.
Án viðskeytis ýtir biðlarinn aðeins nafnþjónum. Bættu við leitarléni og annað kall bætist við hann, SetLinkDomains, með eigin heimildarprófun, þess vegna virkar sama snið í Windows og bregst hér. Gáttin ýtir sömu stillingum í bæði skiptin, og íhluturinn sem hafnar þeim er staðbundinn.
Staðfestu að systemd-resolved sé leysirinn
Þessi biðlari talar við systemd-resolved og engan annan. Arch og nokkrar aðrar dreifingar senda hann óvirkan, og /etc/resolv.conf getur tilheyrt allt öðrum leysi, svo finndu eigandann áður en þú skoðar heimildir.
Þrjár skipanir skera úr um það:
systemctl status systemd-resolved
ls -l /etc/resolv.conf
resolvectl status
Þú ert að leita að virkri þjónustu, táknrænum hlekk sem bendir á /run/systemd/resolve/stub-resolv.conf, og DNS fyrir hverja tengingu í resolvectl. Þegar NetworkManager heldur eignarhaldinu í staðinn, færðu það yfir í resolved í stað þess að berjast við biðlarann; drop-in skráin hér að neðan stillir báða lyklana:
[main]
dns=systemd-resolved
systemd-resolved=true
Endurræstu NetworkManager þegar sú skrá er til. Óvirkur leysir ásamt biðlara sem heldur áfram að kalla á D-Bus-nafn hans framleiðir villu sem nefnir hvorugan.
Fylgstu með D-Bus-kallinu sem bregst
Þetta skref breytir glugganum í ákveðið svar. Fylgstu með viðmóti leysisins í einni skjáhermi og dagbókinni í annarri, tengdu svo aftur:
sudo dbus-monitor --system "interface='org.freedesktop.resolve1.Manager'"
journalctl -fu systemd-resolved
Þrjú köll ættu að birtast: SetLinkDNS, SetLinkDomains og SetLinkDefaultRoute. Það sem kemur til baka sem villusvar er það sem þarf að laga. Það svar nefnir yfirleitt ástæðu sína, til dæmis org.freedesktop.DBus.Error.AccessDenied gegn SetLinkDomains. Skrifaðu niður hvaða kall þetta var, því næsti hluti fjallar um að hleypa því kali í gegn.
Veittu biðlaranum polkit-aðgerðirnar sem hann þarf
Lestu stefnuna áður en þú skrifar reglu. Biðlari sem keyrir sem þjónusta getur ekki svarað gagnvirkri beiðni, svo óbeint auth_admin_keep er blindgata.
pkaction --verbose --action-id org.freedesktop.resolve1.set-domains
pkaction --action-id org.freedesktop.resolve1.set-dns-servers --verbose
Ef svarið er auth_admin_keep, þarf biðlarinn skýra reglu. Bútarinn hér að neðan leyfir fjórar resolve1-aðgerðir sem VPN-biðlari notar meðan á tengingu stendur og lætur allt annað vera á 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;
});
Settu hann í /etc/polkit-1/rules.d/ sem skrá sem þú þekkir síðar, til dæmis 50-azurevpn.rules, og skiptu hópnafninu í bútnum út fyrir þitt eigið áður en þú skráir þig út og aftur inn. Haltu honum þröngum, því að leyfa hverja resolve1-aðgerð fyrir hvern reikning er víðtækara en þessi biðlari þarf og miklu erfiðara að endurskoða síðar.
Athugaðu XML sniðsins áður en þú breytir polkit
Hægt er að hunsa snið sem breytt var handvirkt án orðs. Microsoft skjalfest flatt skipulag þar sem færslur dnsserver standa beint inni í dnsservers, og viðskeyti inni í dnssuffixes. Extra umbúðarþáttur utan um hvert vistfang er ekki þetta form, og biðlarinn dettur hljóðlega aftur í það sem gáttin ýtir.
Gerðu eyðingarprófið áður en þú snertir polkit. Fjarlægðu viðskeytisblokkina, tengdu aftur og sjáðu hvort glugginn breytist. Ef hann breytist var kallið sem brást afhending lénsins, og lagfæringin er heimild en ekki önnur XML-breyting.
Staðfestu lénið á tunniltengingunni
Tengdu aftur og lestu resolvectl status aftur, og athugaðu að tunniltengingin beri nafnþjóninn og leitarlénið saman. Leystu stutt einkanafn í stað opinbers. Þegar nafnið leysist en þjónustan bak við það svarar ekki, þá virkaði DNS-afhendingin og vandamálið sem eftir er leiðsögn.
Skrifaðu eiganda leysisins, D-Bus-kallið sem brást, regluskrána og útgáfu sniðsins í miðann. Þessar fjórar línur gera næstu Linux-fartölvu að stuttri lagfæringu í stað endurtekinnar rannsóknar.