我正在使用 Ubuntu 22.04。
我正在尝试在网络命名空间内运行 WireGuard VPN 客户端。
我可以连接到 VPN 并路由连接,但出现了 DNS 泄漏。
我正在运行systemd-resolved
,但无法区分来自不同网络命名空间的 DNS 查询。因此,我决定禁用systemd-resolved
网络管理器,并使用
systemctl disable --now systemd-resolved.services
systemctl disable --now NetworkManager
网络管理器服务也是如此。因此,理论上,目前我还没有管理任何东西resolv.conf
。
/etc/netns//resolv.conf
完成后,我创建了一个只有一行“nameserver”的文件。
然后,我在初始化网络命名空间中创建 WireGuard 设备并将其移动到新创建的命名空间(并且我已检查它/etc/resolv.conf
正确绑定到我提供的 DNS)。
然后我配置了 WireGuard 设备并且能够建立连接,而且当我这样做时nslookup wikipedia.org
我确实看到它使用了正确的 DNS,即来自 VPN 提供商的 DNS。
问题是,当我在该命名空间中打开浏览器并转到https://www.dnsleaktest.com/时,我能够看到我的 ISP DNS。但一般流量确实会通过 VPN 隧道。
有人知道为什么禁用网络管理器后此配置不起作用吗systemd-resolved
?我认为这不起作用是因为他们正在进行某些管理,但即使在停用后,我也不知道为什么仍然使用错误的 DNS。还有什么可能导致挂载绑定resolv.conf
无法按我预期的方式工作?
答案:发生这种情况是因为 nscd 正在运行。禁用它可以解决问题。