Túnẹ́lì náà gbé sókè, a ṣàyẹ̀wò ìwé-ẹ̀rí, lẹ́yìn náà àpótí ìjíròrò kan sọ pé a kò lè ṣètò server DNS tàbí àwọn agbègbè. Lórí Linux àpótí yẹn kì í sábà jẹ́ nípa ẹnubodè: kọ̀mpútà náà fi ìṣètò orúkọ lé systemd-resolved lọ́wọ́ nípasẹ̀ D-Bus, ìfàṣẹ́ tí a kọ̀ sì fi interface náà sílẹ̀ lókè pẹ̀lú ìpinnu tí ó ṣì ń tọ́ka sí ìjápọ̀ àtijọ́. Kọ̀mpútà kan náà ń pinnu orúkọ dáadáa kí profáìlì tó gba àfikún, ìyẹn sì ni àmì tí ó yẹ kí a tẹ̀lé. Kò sí ohun kan nínú túnẹ́lì tí ó yí padà ní àkókò tí àpótí náà farahàn.

Láìsí àfikún kọ̀mpútà náà kì í fi ju server orúkọ lọ. Fi agbègbè ìwá kún un, ìpè kejì yóò darapọ̀ mọ́ ọn, SetLinkDomains, pẹ̀lú ìṣàyẹ̀wò àṣẹ tirẹ̀, ìdí nìyẹn tí profáìlì kan náà fi ń ṣiṣẹ́ lórí Windows tí ó sì ń kùnà níbí. Ẹnubodè náà ń fi àwọn ìṣètò kan náà ránṣẹ́ ní àwọn ipò méjèèjì, ẹ̀ka tí ó kọ̀ wọ́n sì jẹ́ ti agbègbè.

Jẹ́rìí pé systemd-resolved ni olùpinnu

Kọ̀mpútà yìí ń bá systemd-resolved sọ̀rọ̀ pẹ̀lú, kò sì bá ẹnìkan mìíràn. Arch àti àwọn àtẹ̀jáde mìíràn ń fi í ránṣẹ́ ní àìṣiṣẹ́, /etc/resolv.conf sì lè jẹ́ ti olùpinnu mìíràn pátápátá, nítorí náà ṣètò ẹni tí ó ni í kí o tó wo àwọn àṣẹ.

Àwọn àṣẹ mẹ́ta ni yóò dá èyí sílẹ̀:

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

O ń wá iṣẹ́ tí ń ṣiṣẹ́, ìjápọ̀ àmì tí ó tọ́ka sí /run/systemd/resolve/stub-resolv.conf, àti DNS fún ìjápọ̀ kọ̀ọ̀kan nínú resolvectl. Nígbà tí NetworkManager bá ni ẹ̀tọ́ náà, gbé e lọ sí resolved dípò kí o bá kọ̀mpútà náà jà; drop-in tí ó wà ní ìsàlẹ̀ yóò ṣètò kọ́kọ́rọ́ méjèèjì:

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

Tún NetworkManager bẹ̀rẹ̀ ní kété tí fáìlì yẹn bá wà. Olùpinnu tí kò ṣiṣẹ́ pẹ̀lú kọ̀mpútà tí ó ń pe orúkọ D-Bus rẹ̀ ní àìdúró yóò dá àṣìṣe tí kò dárúkọ ẹnikẹ́ni nínú àwọn méjèèjì.

Wò ìpè D-Bus tí ó ń kùnà

Ìgbésẹ̀ yìí yí àpótí náà padà sí ìdáhùn pàtó. Wò interface olùpinnu nínú terminal kan àti ìwé-ìrántí nínú òmíràn, kí o sì tún so pọ̀:

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

Àwọn ìpè mẹ́ta yẹ kí ó farahàn: SetLinkDNS, SetLinkDomains àti SetLinkDefaultRoute. Èyí tí ó ń padà wá gẹ́gẹ́ bí ìdáhùn àṣìṣe ni ó yẹ kí a tún ṣe. Ìdáhùn yẹn sábà ń sọ ìdí rẹ̀, fún àpẹẹrẹ org.freedesktop.DBus.Error.AccessDenied lòdì sí SetLinkDomains. Ṣàkọsílẹ̀ ìpè tí ó jẹ́, nítorí ẹ̀ka tí ó ń bọ̀ ń sọ̀rọ̀ nípa fífá ìpè yẹn la.

Fún kọ̀mpútà náà ní àwọn ìgbésẹ̀ polkit tí ó nílò

Ka ìlànà náà kí o tó kọ ìlànà. Kọ̀mpútà tí ń ṣiṣẹ́ gẹ́gẹ́ bí iṣẹ́ kò lè dáhùn ìbéèrè ìbáraẹnisọ̀rọ̀, nítorí náà auth_admin_keep àìfarahàn jẹ́ ọ̀nà tí ó dí.

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

Bí ìdáhùn bá jẹ́ auth_admin_keep, kọ̀mpútà náà nílò ìlànà tí ó ṣe kedere. Àpẹẹrẹ tí ó wà ní ìsàlẹ̀ yóò gba àwọn ìgbésẹ̀ resolve1 mẹ́rin tí kọ̀mpútà VPN ń lò nígbà ìjápọ̀, yóò sì fi ohun mìíràn gbogbo sí 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;
});

Fi í sínú /etc/polkit-1/rules.d/ gẹ́gẹ́ bí fáìlì tí ìwọ yóò dà mọ̀ lẹ́yìn náà, fún àpẹẹrẹ 50-azurevpn.rules, kí o sì fi orúkọ rẹ rọ́pò orúkọ ẹgbẹ́ nínú àpẹẹrẹ kí o tó jáde kí o sì tún wọlé. Fi í mọ́ kínkín, nítorí fífá gbogbo ìgbésẹ̀ resolve1 fún gbogbo àkọsílẹ̀ ju ohun tí kọ̀mpútà yìí nílò lọ, yóò sì ṣòro láti ṣàyẹ̀wò lẹ́yìn náà.

Ṣàyẹ̀wò XML profáìlì kí o tó ṣàtúnṣe polkit

Profáìlì tí a fi ọwọ́ ṣàtúnṣe ni a lè fojú kéré láìsí ọ̀rọ̀ kan. Microsoft ń ṣàkọsílẹ̀ ìtòlẹ́sẹẹsẹ pẹlẹbẹ nínú èyí tí àwọn àkọsílẹ̀ dnsserver wà ní tààrà nínú dnsservers, àwọn àfikún sì wà nínú dnssuffixes. Ẹ̀ka àfikún tí ó yí kọ̀ọ̀kan àdírẹ́sì ká kì í ṣe irú yẹn, kọ̀mpútà náà sì ń pa dà sí ohun tí ẹnubodè ń fi ránṣẹ́ láìsí èrò.

Ṣe ìdánwò yíyọ kúrò kí o tó fọwọ́ kan polkit. Yọ blọ́ọ̀kì àfikún kúrò, tún so pọ̀ kí o sì wo bóyá àpótí náà yí padà. Bí ó bá yí padà, ìpè tí ó kùnà ni ìfàṣẹ́ agbègbè, ìtúnṣe sì ni àṣẹ, kì í ṣe àtúnṣe XML mìíràn.

Jẹ́rìí agbègbè náà lórí ìjápọ̀ túnẹ́lì

Tún so pọ̀ kí o sì ka resolvectl status lẹ́ẹ̀kan sí i, kí o ṣàyẹ̀wò pé ìjápọ̀ túnẹ́lì ń gbé server orúkọ àti agbègbè ìwá papọ̀. Pinnu orúkọ àdáni kúkúrú dípò ti gbogbo ènìyàn. Nígbà tí orúkọ bá pinnu ṣùgbọ́n iṣẹ́ tí ó wà lẹ́yìn rẹ̀ kò dáhùn, ìfàṣẹ́ DNS ti ṣiṣẹ́, ìṣòro tí ó kù sì ni ìtọ́nà.

Kọ ẹni tí ó ni olùpinnu, ìpè D-Bus tí ó kùnà, fáìlì ìlànà àti ẹ̀yà profáìlì sínú tíkẹ́ẹ̀tì. Àwọn ìlà mẹ́rin yẹn yóò sọ kọ̀mpútà Linux tí ó ń bọ̀ di àtúnṣe kúkúrú dípò ìwádìí tí ń tún ṣe.

Àwọn àpilẹ̀kọ tó jọra