Azure VPN Client Linux-те: DNS домендерін орнату мүмкін болмады
Түнель көтеріледі, содан кейін Linux клиенті DNS домендерін орната алмайды. systemd-resolved-ті тексеріңіз, D-Bus шақыруын бақылаңыз және polkit әрекетін түзетіңіз.
Түнель көтеріледі, сертификат тексеріледі, содан кейін диалог DNS серверін немесе домендерді орнату мүмкін болмағанын айтады. Linux-те бұл диалог әдетте шлюз туралы емес: клиент атау конфигурациясын D-Bus арқылы systemd-resolved-ке береді, ал қабылданбаған беріліс интерфейсті көтерілген күйде қалдырады, атауларды шешу әлі де ескі қосылымды көрсетіп тұрғанда. Сол ноутбук профиль суффикс алғанға дейін атауларды дұрыс шешеді, және бұл — соңынан еруге тұрарлық белгі. Диалог пайда болған сәтте түнельде ештеңе өзгерген жоқ.
Суффикссіз клиент тек атау серверлерін жібереді. Іздеу доменін қосыңыз, оған екінші шақыру қосылады, SetLinkDomains, өзінше авторизация тексерісімен, сондықтан сол профиль Windows-та жұмыс істеп, мұнда сәтсіз болады. Шлюз екі жағдайда да бірдей параметрлерді жібереді, ал оларды қабылдамайтын құрамдас жергілікті.
Шешушінің systemd-resolved екеніне көз жеткізіңіз
Бұл клиент тек systemd-resolved-пен сөйлеседі, басқа ешкіммен емес. Arch және тағы бірнеше дистрибутив оны өшірілген күйде жеткізеді, ал /etc/resolv.conf мүлдем басқа шешушіге тиесілі болуы мүмкін, сондықтан рұқсаттарға қарамас бұрын иесін анықтаңыз.
Үш команда мұны шешеді:
systemctl status systemd-resolved
ls -l /etc/resolv.conf
resolvectl status
Сіз белсенді қызметті, /run/systemd/resolve/stub-resolv.conf-ке бағытталған символдық сілтемені және resolvectl ішіндегі әр қосылымның DNS-ін іздеп жүрсіз. Иелік NetworkManager-де болса, клиентпен арпалыспай оны resolved-ке ауыстырыңыз; төмендегі drop-in екі кілтті де орнатады:
[main]
dns=systemd-resolved
systemd-resolved=true
Ол файл пайда болғаннан кейін NetworkManager-ді бір рет қайта іске қосыңыз. Белсенді емес шешуші мен оның D-Bus атауын шақыра беретін клиент бірге екеуінің ешқайсысын атамайтын қате шығарады.
Сәтсіз болатын D-Bus шақыруын бақылаңыз
Бұл қадам диалогты нақты жауапқа айналдырады. Бір терминалда шешуші интерфейсін, екіншісінде журналды бақылап, кейін қайта қосылыңыз:
sudo dbus-monitor --system "interface='org.freedesktop.resolve1.Manager'"
journalctl -fu systemd-resolved
Үш шақыру пайда болуы керек: SetLinkDNS, SetLinkDomains және SetLinkDefaultRoute. Қате жауабы ретінде қайтатын шақыру — түзету керек. Ол жауап әдетте өз себебін атайды, мысалы org.freedesktop.DBus.Error.AccessDenied қарсы SetLinkDomains. Қай шақыру болғанын жазып алыңыз, өйткені келесі бөлім сол шақыруды өткізу туралы.
Клиентке қажетті polkit әрекеттерін беріңіз
Ереже жазбас бұрын саясатты оқыңыз. Қызмет ретінде жүретін клиент интерактивті сұранысқа жауап бере алмайды, сондықтан жасырын auth_admin_keep тұйық жол.
pkaction --verbose --action-id org.freedesktop.resolve1.set-domains
pkaction --action-id org.freedesktop.resolve1.set-dns-servers --verbose
Жауап auth_admin_keep болса, клиентке айқын ереже қажет. Төмендегі үзінді VPN клиенті қосылу кезінде пайдаланатын төрт resolve1 әрекетіне рұқсат береді және қалғанын 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;
});
Оны /etc/polkit-1/rules.d/ ішіне кейін танитын файл ретінде қойыңыз, мысалы 50-azurevpn.rules, және шығып, қайта кірмес бұрын үзіндідегі топ атауын өзіңіздікімен ауыстырыңыз. Оны тар ұстаңыз, өйткені әр тіркелгі үшін әр resolve1 әрекетіне рұқсат беру бұл клиентке қажеттен әлдеқайда кең және кейін тексеру әлдеқайда қиын.
polkit-ті өңдемес бұрын профиль XML-ін тексеріңіз
Қолмен өңделген профиль бір сөз айтпай елемелуі мүмкін. Microsoft тегіс орналасуды құжаттайды, онда dnsserver жазбалары тікелей dnsservers ішінде тұрады, ал суффикстер dnssuffixes ішінде. Әр мекенжайдың айналасындағы қосымша қаптама элементі бұл пішін емес, және клиент шлюз жіберетін нәрсеге үнсіз оралады.
polkit-ке тимес бұрын жою сынағын жасаңыз. Суффикс блогын алып тастаңыз, қайта қосылыңыз және диалог өзгере ме, соны қараңыз. Өзгерсе, сәтсіз шақыру домен берілісі болды, ал түзету — авторизация, тағы бір XML өңдеу емес.
Түнель қосылымындағы доменді тексеріңіз
Қайта қосылып, resolvectl status шығысын қайта оқыңыз, түнель қосылымы атау сервері мен іздеу доменін бірге алып жүргенін тексеріңіз. Ашық атаудың орнына қысқа жеке атауды шешіңіз. Атау шешілсе де, артындағы қызмет жауап бермесе, DNS берілісі жұмыс істеген, ал қалған мәселе — маршруттау.
Билетке шешуші иесін, сәтсіз D-Bus шақыруын, ереже файлын және профиль нұсқасын жазыңыз. Осы төрт жол келесі Linux ноутбугін қайталама тексерудің орнына қысқа түзетуге айналдырады.