Azure VPN Client kwenye Linux: vikoa vya DNS havikuweza kuwekwa
Tuneli hupanda kisha mteja wa Linux hawezi kuweka vikoa vya DNS. Angalia systemd-resolved, fatilia wito wa D-Bus na urekebishe kitendo cha polkit.
Tuneli hupanda, cheti huthibitishwa, kisha kidirisha husema kuwa seva ya DNS au vikoa havikuweza kuwekwa. Kwenye Linux kidirisha hicho kwa kawaida hakihusu lango: mteja hukabidhi usanidi wa majina kwa systemd-resolved kupitia D-Bus, na ukabidhishaji uliokataliwa huiacha kiolesura juu ukiwa na azimio bado likielekea kiungo cha zamani. Laptop hiyo hiyo hutatua majina vizuri kabla profaili haijapata kiambishi, na hiyo ndiyo dokezo linalofaa kufuatwa. Hakuna kilichobadilika kwenye tuneli wakati kidirisha kilipotokea.
Bila kiambishi mteja husukuma seva za majina pekee. Ongeza kikoa cha utafutaji na wito wa pili hujiunga nacho, SetLinkDomains, na ukaguzi wake wa idhini, ndiyo sababu profaili hiyo hiyo hufanya kazi kwenye Windows na kushindwa hapa. Lango husukuma mipangilio ile ile katika hali zote mbili, na sehemu inayokataa ni ya ndani.
Thibitisha kuwa systemd-resolved ndiye kitatuzi
Mteja huyu huzungumza na systemd-resolved pekee na hakuna mwingine. Arch na usambazaji mwingine kadhaa huleta hii ikiwa imezimwa, na /etc/resolv.conf inaweza kuwa ya kitatuzi kingine kabisa, kwa hiyo tambua mmiliki kabla ya kuangalia ruhusa.
Amri tatu hufafanua hilo:
systemctl status systemd-resolved
ls -l /etc/resolv.conf
resolvectl status
Unatafuta huduma inayotumika, kiungo cha mfano kinachoelekea /run/systemd/resolve/stub-resolv.conf, na DNS kwa kila kiungo katika resolvectl. Wakati NetworkManager inashikilia umiliki, ihamishie resolved badala ya kugombana na mteja; faili ya drop-in hapa chini huweka funguo zote mbili:
[main]
dns=systemd-resolved
systemd-resolved=true
Washa upya NetworkManager mara faili hiyo inapokuwepo. Kitatuzi kisichotumika pamoja na mteja anayeendelea kuita jina lake la D-Bus hutoa hitilafu isiyomtaja yeyote wao.
Fatilia wito wa D-Bus unaoshindwa
Hatua hii hubadilisha kidirisha kuwa jibu mahususi. Fatilia kiolesura cha kitatuzi kwenye terminal moja na jarida kwenye nyingine, kisha unganishe upya:
sudo dbus-monitor --system "interface='org.freedesktop.resolve1.Manager'"
journalctl -fu systemd-resolved
Wito tatu unapaswa kuonekana: SetLinkDNS, SetLinkDomains na SetLinkDefaultRoute. Ule unaorudi kama jibu la hitilafu ndio unaopaswa kurekebishwa. Jibu hilo kwa kawaida hutaja sababu yake, kwa mfano org.freedesktop.DBus.Error.AccessDenied dhidi ya SetLinkDomains. Andika ni wito upi, kwa sababu sehemu inayofuata inahusu kuuruhusu wito huo upite.
Mpe mteja vitendo vya polkit anavyohitaji
Soma sera kabla ya kuandika kanuni. Mteja anayefanya kazi kama huduma hawezi kujibu ombi la mwingiliano, kwa hiyo auth_admin_keep isiyo ya wazi ni njia iliyofungwa.
pkaction --verbose --action-id org.freedesktop.resolve1.set-domains
pkaction --action-id org.freedesktop.resolve1.set-dns-servers --verbose
Ikiwa jibu ni auth_admin_keep, mteja anahitaji kanuni iliyo wazi. Kipande hapa chini huruhusu vitendo vinne vya resolve1 ambavyo mteja wa VPN hutumia wakati wa muunganisho na huacha kila kingine kwenye 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;
});
Weka kwenye /etc/polkit-1/rules.d/ kama faili utakayoijua baadaye, kwa mfano 50-azurevpn.rules, na badilisha jina la kikundi kwenye kipande na lako kabla ya kutoka na kuingia tena. Weka nyembamba, kwa sababu kuruhusu kila kitendo cha resolve1 kwa kila akaunti ni pana kuliko mteja huyu anavyohitaji na ni vigumu zaidi kukagua baadaye.
Angalia XML ya profaili kabla ya kuhariri polkit
Profaili iliyohaririwa kwa mkono inaweza kupuuzwa bila neno. Microsoft huandika mpangilio tambarare ambapo maingizo ya dnsserver hukaa moja kwa moja ndani ya dnsservers, na viambishi ndani ya dnssuffixes. Kipengele cha ziada cha kufunika karibu na kila anwani si umbo hilo, na mteja hurudi kimya kimya kwenye kile lango linachosukuma.
Fanya jaribio la kuondoa kabla ya kugusa polkit. Ondoa kizuizi cha kiambishi, unganishe upya na uone kama kidirisha kinabadilika. Ikibadilika, wito ulioshindwa ulikuwa ukabidhishaji wa kikoa, na suluhisho ni idhini, si uhariri mwingine wa XML.
Thibitisha kikoa kwenye kiungo cha tuneli
Unganishe upya na usome resolvectl status tena, ukikagua kuwa kiungo cha tuneli kinabeba seva ya majina na kikoa cha utafutaji pamoja. Tatua jina fupi la faragha badala ya la umma. Jina linapotatuliwa lakini huduma iliyo nyuma haijibu, ukabidhishaji wa DNS ulifanya kazi na tatizo lililobaki ni uelekezaji.
Andika kwenye tiketi mmiliki wa kitatuzi, wito wa D-Bus ulioshindwa, faili ya kanuni na toleo la profaili. Mistari hiyo minne huifanya laptop ijayo ya Linux kuwa marekebisho mafupi badala ya uchunguzi unaorudiwa.