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 लॅपटॉपला पुन्हा तपासणीऐवजी छोटी दुरुस्ती बनवतात.