Linuxda Azure VPN Client: DNS domenlarini sozlash imkoni bo'lmadi
Tunnel ko'tariladi, so'ngra Linux mijozi DNS domenlarini sozlay olmaydi. systemd-resolved-ni tekshiring, D-Bus chaqiruvini kuzating va polkit amalini tuzating.
Tunnel ko'tariladi, sertifikat tekshiriladi, so'ngra muloqot oynasi DNS serveri yoki domenlarini sozlash imkoni bo'lmaganini aytadi. Linuxda bu oyna odatda shlyuz haqida emas: mijoz nom konfiguratsiyasini D-Bus orqali systemd-resolved-ga topshiradi va rad etilgan topshirish interfeysni nom yechimi hali ham eski ulanishga ishora qilganda ko'tarilgan holda qoldiradi. O'sha noutbuk profil qo'shimcha olgunga qadar nomlarni yaxshi yechadi va bu kuzatishga arziydigan izdir. Muloqot oynasi paydo bo'lgan paytda tunnelda hech narsa o'zgarmadi.
Qo'shimchasiz mijoz faqat nom serverlarini yuboradi. Qidiruv domeni qo'shing va unga ikkinchi chaqiruv qo'shiladi, SetLinkDomains, o'zining avtorizatsiya tekshiruvi bilan, shuning uchun o'sha profil Windowsda ishlaydi va bu yerda muvaffaqiyatsiz bo'ladi. Shlyuz ikkala holatda ham bir xil sozlamalarni yuboradi va ularni rad etadigan komponent mahalliy.
Yechuvchi systemd-resolved ekanligini tasdiqlang
Bu mijoz faqat systemd-resolved bilan gaplashadi, boshqa hech kim bilan emas. Arch va yana bir qancha distributivlar uni o'chirilgan holda yetkazadi va /etc/resolv.conf butunlay boshqa yechuvchiga tegishli bo'lishi mumkin, shuning uchun ruxsatlarga qarashdan oldin egasini aniqlang.
Uch buyruq buni aniqlaydi:
systemctl status systemd-resolved
ls -l /etc/resolv.conf
resolvectl status
Siz faol xizmatni, /run/systemd/resolve/stub-resolv.conf ga ishora qiluvchi simvolik havolani va resolvectl ichida har bir ulanish uchun DNSni qidiryapsiz. Egalik NetworkManagerda bo'lsa, mijoz bilan jang qilish o'rniga uni resolved ga o'tkazing; quyidagi drop-in ikkala kalitni ham o'rnatadi:
[main]
dns=systemd-resolved
systemd-resolved=true
O'sha fayl paydo bo'lgach NetworkManager-ni bir marta qayta ishga tushiring. Faol bo'lmagan yechuvchi va uning D-Bus nomini chaqirishda davom etayotgan mijoz birgalikda ikkalasini ham nomlamaydigan xato beradi.
Muvaffaqiyatsiz bo'layotgan D-Bus chaqiruvini kuzating
Bu qadam oynani aniq javobga aylantiradi. Bir terminalda yechuvchi interfeysini, boshqasida jurnalni kuzatib, so'ngra qayta ulanng:
sudo dbus-monitor --system "interface='org.freedesktop.resolve1.Manager'"
journalctl -fu systemd-resolved
Uch chaqiruv paydo bo'lishi kerak: SetLinkDNS, SetLinkDomains va SetLinkDefaultRoute. Xato javobi sifatida qaytadigan chaqiruv tuzatilishi kerak. O'sha javob odatda sababini aytadi, masalan org.freedesktop.DBus.Error.AccessDenied qarshisida SetLinkDomains. Qaysi chaqiruv bo'lganini yozib qo'ying, chunki keyingi bo'lim o'sha chaqiruvni o'tkazish haqida.
Mijozga kerakli polkit amallarini bering
Qoida yozishdan oldin siyosatni o'qing. Xizmat sifatida ishlaydigan mijoz interaktiv so'rovga javob bera olmaydi, shuning uchun yashirin auth_admin_keep boshi berk ko'cha.
pkaction --verbose --action-id org.freedesktop.resolve1.set-domains
pkaction --action-id org.freedesktop.resolve1.set-dns-servers --verbose
Javob auth_admin_keep bo'lsa, mijozga aniq qoida kerak. Quyidagi parcha VPN mijozi ulanish vaqtida ishlatadigan to'rtta resolve1 amaliga ruxsat beradi va qolgan hamma narsani polkit.Result.NOT_HANDLED darajasida qoldiradi:
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;
});
Uni /etc/polkit-1/rules.d/ ichiga keyinchalik taniydigan fayl sifatida qo'ying, masalan 50-azurevpn.rules, va chiqib, qayta kirishdan oldin parchadagi guruh nomini o'zingiznikiga almashtiring. Uni tor saqlang, chunki har bir hisob uchun har bir resolve1 amaliga ruxsat berish bu mijozga kerakidan kengroq va keyin audit qilish ancha qiyin.
polkitni tahrirlashdan oldin profil XMLini tekshiring
Qo'lda tahrirlangan profil bir so'z aytilmasdan e'tiborsiz qoldirilishi mumkin. Microsoft tekis tartibni hujjatlashtiradi, unda dnsserver yozuvlari to'g'ridan-to'g'ri dnsservers ichida turadi va qo'shimchalar dnssuffixes ichida. Har bir manzil atrofidagi qo'shimcha o'ram elementi bu shakl emas va mijoz jim tarzda shlyuz yuboradigan narsaga qaytadi.
polkitga tegishdan oldin olib tashlash sinovini o'tkazing. Qo'shimcha blokini olib tashlang, qayta ulanng va oyna o'zgaradimi-yo'qmi qarang. Agar o'zgarsa, muvaffaqiyatsiz chaqiruv domen topshirig'i edi va tuzatish avtorizatsiya, yana bir XML tahriri emas.
Tunnel ulanishida domenni tekshiring
Qayta ulanib, resolvectl status ni yana o'qing, tunnel ulanishi nom serveri va qidiruv domenini birga olib yurishini tekshiring. Ommaviy nom o'rniga qisqa shaxsiy nomni yeching. Nom yechilsa-da, ortidagi xizmat javob bermasa, DNS topshirig'i ishladi va qolgan muammo marshrutlashdir.
Tiketga yechuvchi egasini, muvaffaqiyatsiz D-Bus chaqiruvini, qoida faylini va profil versiyasini yozing. O'sha to'rt qator keyingi Linux noutbukini qayta tekshirish o'rniga qisqa tuzatishga aylantiradi.