Linux'тогу Azure VPN Client: 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 ноутбугун кайталама иликтөөнүн ордуна кыска оңдоого айландырат.