我正在运行 Ubuntu 22.04,我通过 gnome 中的 NetworkManager 与我的公司建立了 OpenVPN。
大多数内部系统都可以正常工作,但例如 portal.azure.com 有 2 个 DNS 记录,一个是公共区域,另一个是私有区域。当我使用 VPN 时,它应该使用私有区域,否则我会被防火墙阻止,什么都看不到。
我删除了 /etc/resolve.conf 符号链接以恢复默认行为,当我连接时,我看到公司的名称服务器添加到底部
nameserver 89.xxx.xxx.xxx
nameserver 89.xxx.xxx.xxx
# Too many DNS servers configured, the following entries may be ignored.
search home company.xx
nameserver 10.xx.xx.xx
nameserver 10.xx.xx.xx
这不允许我访问 portal.azure.com 中的私人内容
当我交换名称服务器时,它确实起作用了:
search home company.xx
nameserver 10.xx.xx.xx
nameserver 10.xx.xx.xx
nameserver 89.xxx.xxx.xxx
nameserver 89.xxx.xxx.xxx
我该怎么做才能让它自动工作,或者通过 systemd-resolved 工作。
如果我打开/run/NetworkManager/no-stub-resolv.conf
,我确实会看到 /etc/resolv.conf 的正确文件:
# Generated by NetworkManager
search company.xx home
nameserver 10.xx.xx.xx
nameserver 10.xx.xx.xx
nameserver 89.xx.xx.xx
# NOTE: the libc resolver may not support more than 3 nameservers.
# The nameservers listed below may not be recognized.
nameserver 89.xx.xx.xx
我可以用 NetworkManager 版本替换 /etc/resolv.conf,但这似乎应该自动完成。我该如何解决这个问题?
答案1
resolvconf
对我来说只需在 Ubuntu 22.04 上安装即可:
apt install resolvconf
重新启动(不确定是否需要)并且 DNS 使用 OpenVPN + Neworkmanager 运行。
答案2
我全新安装了 Ubuntu 22.04。在 16.04 上,一切都运行正常。
DNS 的顺序是现已修复我猜是这样的。在我的新系统 (xubuntu 22.04) 上,OpenVPN 似乎出现了一些奇怪的问题。
在 OpenVPN 路由设置中我设置了最后一个选项: OpenVPN 路由设置
建立连接后,我可以使用 nslookup 进行本地搜索。第一次尝试时,一切都很顺利。如果我发出第二个请求,我将从公共 DNS 服务器获得答案:
markus@Host:~$ nslookup localaddr
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: localaddr.fqdn.com
Address: 10.0.0.xxx
localaddr.fqdn canonical name = xxx.public.net.
markus@Host:~$ nslookup localaddr
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
localaddr.fqdn canonical name = xxx.public.net.
Name: xxx.public.net
Address: 145.xx.xxx.xx
我猜这取决于安全 DNS 选项或导致混乱的缓存行为。TTL 时间结束后或使用sudo resolvectl flush-caches
,我将再次获得与上面相同的答案。
如果有人有想法,请告诉我。