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 ਲੈਪਟਾਪ ਨੂੰ ਦੁਬਾਰਾ ਜਾਂਚ ਦੀ ਬਜਾਏ ਛੋਟਾ ਸੁਧਾਰ ਬਣਾ ਦਿੰਦੀਆਂ ਹਨ।