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 લેપટોપને ફરી તપાસને બદલે ટૂંકા સુધારામાં ફેરવે છે.