Mae'r twnnel yn codi, mae'r dystysgrif yn dilysu, ac yna mae deialog yn dweud na ellid gosod y gweinydd DNS na'r parthau. Ar Linux nid yw'r ddeialog hon fel arfer yn ymwneud â'r giât: mae'r cleient yn trosglwyddo ffurfwedd enwau i systemd-resolved dros D-Bus, ac mae trosglwyddiad a wrthodwyd yn gadael y rhyngwyneb i fyny gyda datrysiad yn dal i bwyntio at yr hen gyswllt. Mae'r un gliniadur yn datrys enwau'n iawn cyn i'r proffil gael goddefiad, a dyna'r cliw sy'n werth ei ddilyn. Ni newidiodd unrhyw beth am y twnnel ar y foment y daeth y ddeialog i'r golwg.

Heb oddefiad, dim ond gweinyddwyr enwau y mae'r cleient yn eu gwthio. Ychwanegwch barth chwilio ac mae ail alwad yn ymuno ag ef, SetLinkDomains, gyda'i wiriad awdurdodi ei hun, a dyna pam mae'r un proffil yn gweithio ar Windows ac yn methu yma. Mae'r giât yn gwthio'r un gosodiadau naill ffordd neu'r llall, ac mae'r gydran sy'n eu gwrthod yn lleol.

Cadarnhewch mai systemd-resolved sy'n datrys

Mae'r cleient hwn yn siarad â systemd-resolved ac â neb arall. Mae Arch a sawl dosbarthiad arall yn ei gludo'n anabl, a gall /etc/resolv.conf berthyn i ddatrysiwr hollol wahanol, felly sefydlwch y perchennog cyn edrych ar ganiatadau.

Mae tair gorchymyn yn setlo'r mater:

systemctl status systemd-resolved
ls -l /etc/resolv.conf
resolvectl status

Rydych chi'n chwilio am wasanaeth gweithredol, dolen symbolaidd wedi'i hanelu at /run/systemd/resolve/stub-resolv.conf, a DNS fesul cyswllt yn resolvectl. Pan fo NetworkManager yn dal y berchnogaeth yn lle hynny, symudwch hi i resolved yn hytrach na chweryla â'r cleient; mae'r drop-in isod yn gosod y ddau allwedd:

[main]
dns=systemd-resolved
systemd-resolved=true

Ailgychwynnwch NetworkManager unwaith y bydd y ffeil honno'n bod. Mae datrysiwr anweithredol ynghyd â chleient sy'n dal i alw ei enw D-Bus yn cynhyrchu gwall nad yw'n enwi'r naill na'r llall.

Gwyliwch yr alwad D-Bus sy'n methu

Mae'r cam hwn yn troi'r ddeialog yn ateb penodol. Gwyliwch ryngwyneb y datrysiwr mewn un terfynell a'r journal mewn un arall, yna ailgysylltwch:

sudo dbus-monitor --system "interface='org.freedesktop.resolve1.Manager'"
journalctl -fu systemd-resolved

Dylai tair alwad ymddangos: SetLinkDNS, SetLinkDomains a SetLinkDefaultRoute. Yr un sy'n dod yn ôl fel ateb gwall yw'r un i'w thrwsio. Mae'r ateb hwnnw fel arfer yn enwi ei reswm, er enghraifft org.freedesktop.DBus.Error.AccessDenied yn erbyn SetLinkDomains. Nodwch pa alwad oedd hi, oherwydd mae'r adran nesaf yn ymwneud â gadael i'r alwad honno fynd trwodd.

Caniatáu'r gweithredoedd polkit sydd eu hangen ar y cleient

Darllenwch y polisi cyn ysgrifennu rheol. Ni all cleient sy'n rhedeg fel gwasanaeth ateb anogwr rhyngweithiol, felly mae auth_admin_keep ymhlyg yn fyrbwll.

pkaction --verbose --action-id org.freedesktop.resolve1.set-domains
pkaction --action-id org.freedesktop.resolve1.set-dns-servers --verbose

Os mai'r ateb yw auth_admin_keep, mae ar y cleient angen rheol benodol. Mae'r darn isod yn caniatáu'r pedair gweithred resolve1 y mae cleient VPN yn eu defnyddio wrth gysylltu ac yn gadael popeth arall ar 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;
});

Rhowch ef yn /etc/polkit-1/rules.d/ fel ffeil y byddwch yn ei hadnabod yn nes ymlaen, megis 50-azurevpn.rules, a disodli enw'r grŵp yn y darn â'ch un chi cyn allgofnodi a mewngofnodi eto. Cadwch ef yn gul, oherwydd mae caniatáu pob gweithred resolve1 i bob cyfrif yn fwy na'r hyn sydd ei angen ar y cleient hwn ac yn llawer anos i'w archwilio wedyn.

Gwiriwch XML y proffil cyn i chi olygu polkit

Gall proffil a olygwyd â llaw gael ei anwybyddu heb air. Mae Microsoft yn dogfennu cynllun gwastad lle mae cofnodion dnsserver yn eistedd yn syth y tu mewn i dnsservers, a goddefiadau y tu mewn i dnssuffixes. Nid yw elfen lapio ychwanegol o amgylch pob cyfeiriad yn y siâp hwnnw, ac mae'r cleient yn syrthio'n dawel yn ôl i'r hyn y mae'r giât yn ei wthio.

Gwnewch y prawf tynnu cyn cyffwrdd â polkit. Tynnwch y bloc goddefiad, ailgysylltwch, a gwyliwch a yw'r ddeialog yn newid. Os yw'n newid, yr alwad a fethodd oedd y trosglwyddiad parth, a'r trwsiad yw awdurdodiad yn hytrach nag olygiad XML arall.

Gwiriwch y parth ar gyswllt y twnnel

Ailgysylltwch a darllenwch resolvectl status eto, gan wirio bod cyswllt y twnnel yn cario'r gweinydd enwau a'r parth chwilio gyda'i gilydd. Datryswch enw preifat byr yn hytrach nag un cyhoeddus. Pan fo'r enw'n datrys ond nad yw'r gwasanaeth y tu ôl iddo'n ateb, mae'r trosglwyddiad DNS wedi gweithio a'r problem sy'n weddill yw llwybro.

Ysgrifennwch berchennog y datrysiwr, yr alwad D-Bus a fethodd, y ffeil rheol a fersiwn y proffil yn y tocyn. Mae'r pedair llinell hynny'n troi'r gliniadur Linux nesaf yn drwsiad byr yn hytrach nag ymchwiliad arall.

Erthyglau cysylltiedig