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 зөөврийн компьютерыг давтан мөрдөн шалгахын оронд богино засвар болгоно.