Azure VPN Client Linuxissa: DNS-verkkotunnuksia ei voitu asettaa
Tunneli nousee ja sitten Linux-asiakasohjelma ei voi asettaa DNS-verkkotunnuksia. Tarkista systemd-resolved, seuraa D-Bus-kutsua ja korjaa polkit-toiminto.
Tunneli nousee, varmenne vahvistetaan ja sitten valintaikkuna kertoo, ettei DNS-palvelinta tai verkkotunnuksia voitu asettaa. Linuxissa tuo ikkuna ei yleensä koske yhdyskäytävää: asiakasohjelma luovuttaa nimiasetukset systemd-resolvedille D-Busin kautta, ja hylätty luovutus jättää liitännän pystyyn, kun nimien selvitys osoittaa yhä vanhaan yhteyteen. Sama kannettava selvittää nimet kunnolla ennen kuin profiili saa liitteen, ja se on vihje, jota kannattaa seurata. Tunnelissa ei muuttunut mikään sinä hetkenä, jolloin ikkuna ilmestyi.
Ilman liitettä asiakasohjelma työntää vain nimipalvelimia. Lisää hakutoimialue ja toinen kutsu liittyy siihen, SetLinkDomains, omalla valtuutustarkistuksellaan, siksi sama profiili toimii Windowsissa ja epäonnistuu täällä. Yhdyskäytävä työntää samat asetukset kummassakin tapauksessa, ja komponentti, joka ne hylkää, on paikallinen.
Varmista, että systemd-resolved on selvittäjä
Tämä asiakasohjelma puhuu systemd-resolvedille eikä kenellekään muulle. Arch ja useat muut jakelut toimittavat sen poistettuna käytöstä, ja /etc/resolv.conf voi kuulua kokonaan toiselle selvittäjälle, joten selvitä omistaja ennen kuin katsot oikeuksia.
Kolme komentoa ratkaisee asian:
systemctl status systemd-resolved
ls -l /etc/resolv.conf
resolvectl status
Etsit käytössä olevaa palvelua, kohteeseen /run/systemd/resolve/stub-resolv.conf osoittavaa symbolista linkkiä ja liitäntäkohtaista DNS:ää komennossa resolvectl. Kun omistajuus on sen sijaan NetworkManagerilla, siirrä se resolvedille sen sijaan että taistelisit asiakasohjelman kanssa; alla oleva drop-in asettaa molemmat avaimet:
[main]
dns=systemd-resolved
systemd-resolved=true
Käynnistä NetworkManager uudelleen, kun tuo tiedosto on olemassa. Käytöstä poistettu selvittäjä ja asiakasohjelma, joka jatkaa sen D-Bus-nimen kutsumista, tuottavat virheen, joka ei nimeä kumpaakaan.
Seuraa D-Bus-kutsua, joka epäonnistuu
Tämä vaihe muuttaa valintaikkunan konkreettiseksi vastaukseksi. Seuraa selvittäjän rajapintaa yhdessä päätteessä ja lokia toisessa ja yhdistä sitten uudelleen:
sudo dbus-monitor --system "interface='org.freedesktop.resolve1.Manager'"
journalctl -fu systemd-resolved
Kolme kutsua pitäisi ilmestyä: SetLinkDNS, SetLinkDomains ja SetLinkDefaultRoute. Se, joka palaa virhevastauksena, on korjattava. Se vastaus kertoo yleensä syynsä, esimerkiksi org.freedesktop.DBus.Error.AccessDenied vastaan SetLinkDomains. Merkitse muistiin, mikä kutsu se oli, sillä seuraava osa käsittelee juuri sen kutsun läpipäästämistä.
Myönnä asiakasohjelman tarvitsemat polkit-toiminnot
Lue käytäntö ennen säännön kirjoittamista. Palveluna toimiva asiakasohjelma ei voi vastata vuorovaikutteiseen kehotteeseen, joten implisiittinen auth_admin_keep on umpikuja.
pkaction --verbose --action-id org.freedesktop.resolve1.set-domains
pkaction --action-id org.freedesktop.resolve1.set-dns-servers --verbose
Jos vastaus on auth_admin_keep, asiakasohjelma tarvitsee nimenomaisen säännön. Alla oleva katkelma sallii neljä resolve1-toimintoa, joita VPN-asiakasohjelma käyttää yhteyden aikana, ja jättää kaiken muun tasolle 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;
});
Laita se hakemistoon /etc/polkit-1/rules.d/ tiedostona, jonka tunnistat myöhemmin, esimerkiksi 50-azurevpn.rules, ja korvaa katkelman ryhmänimi omallasi ennen kirjautumista ulos ja takaisin sisään. Pidä se kapeana, sillä jokaisen resolve1-toiminnon salliminen jokaiselle tilille on laajempaa kuin tämä asiakasohjelma tarvitsee ja paljon vaikeampaa auditoida jälkeenpäin.
Tarkista profiilin XML ennen polkitin muokkaamista
Käsin muokattu profiili voidaan jättää huomiotta sanaakaan sanomatta. Microsoft dokumentoi litteän asettelun, jossa dnsserver -merkinnät ovat suoraan dnsservers sisällä ja liitteet dnssuffixes sisällä. Ylimääräinen kääre-elementti jokaisen osoitteen ympärillä ei ole tuo muoto, ja asiakasohjelma putoaa hiljaa siihen, mitä yhdyskäytävä työntää.
Tee poistotesti ennen kuin kosket polkitiin. Poista liiteosio, yhdistä uudelleen ja katso, muuttuuko valintaikkuna. Jos muuttuu, epäonnistunut kutsu oli toimialueen luovutus, ja korjaus on valtuutus eikä uusi XML-muokkaus.
Vahvista toimialue tunnelin liitännässä
Yhdistä uudelleen ja lue resolvectl status uudelleen ja tarkista, että tunnelin liitäntä kantaa nimipalvelimen ja hakutoimialueen yhdessä. Selvitä lyhyt yksityinen nimi julkisen sijaan. Kun nimi selviää mutta sen takana oleva palvelu ei vastaa, DNS-luovutus toimi ja jäljellä oleva ongelma on reititys.
Kirjoita tikettiin selvittäjän omistaja, epäonnistunut D-Bus-kutsu, sääntötiedosto ja profiilin versio. Ne neljä riviä tekevät seuraavasta Linux-kannettavasta lyhyen korjauksen toistuvan tutkimuksen sijaan.