如何使用网络管理器为 VPN 设置拆分 DNS

如何使用网络管理器为 VPN 设置拆分 DNS

我想在一台 14.04 台式机上创建一个拆分 DNS 配置,该台式机既有本地 eth 网络,也有 VPN 连接。也就是说,我应该将通过 VPN 访问的地址范围的 DNS 查找发送到为该特定 VPN 连接配置的(私有)DNS 服务器。通过本地网络提供服务的其他地址应使用不同的(公共)DNS 服务器。

https://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/ 这表明现在我们有一个本地 dnsmasq 解析器,这很容易做到。引用:

最大的优势在于,如果您连接到 VPN,您不必像过去那样将所有 DNS 流量都路由到 VPN,而是只需发送与该 VPN 宣布的子网和域相关的 DNS 查询。这对于高延迟 VPN 链接尤其有用,因为过去所有东西的速度都会变慢。

但我不知道该如何实现!在 VPN 处于非活动状态时,网络管理器会告诉 dnsmasq 使用本地公共 DNS 服务器作为其上游服务器(这很好)。如果我现在激活 VPN 连接,网络管理器会告诉 dnsmasq 将上游 DNS 服务器更改为为 VPN 连接配置的私有服务器。现在我的所有本地流量都转到 VPN 进行 DNS 查找(这很糟糕!)。

如果我有一个“真正的”dnsmasq 设置,我可以在 dnsmasq.conf 中告诉它将特定查找路由到特定的 dns 服务器。但这如何与 Ubuntu 桌面提供的精简版 dnsmasq / 网络管理器设置配合使用?

我猜一个选项就是安装完整的 dnsmasq,但这意味着我需要在两个不同的地方维护配置详细信息,而这正是网络管理器主要解决的问题。有什么建议吗?

答案1

为了使 NetworkManager 运行的 D-Bus 控制的 dnsmasq 使用不同的 DNS 服务器,有以下选项(显然在示例中调整域和 IP 地址):

  • 添加一个文件来/etc/NetworkManager/dnsmasq.d设置所需子网的 DNS 服务器:myvpn-server.conf可以包含server=/myvpn.domain.com/10.8.4.9。即使未连接到 VPN,dnsmasq 也始终会遵守此规则,在这种情况下,对这些域的查询应该会超时。缺点是您需要静态指定 IP 地址,优点是简单
  • 使用 D-Bus 直接与 dnsmasq 对话,告诉它使用类似 来更新服务器sudo dbus-send --system --print-reply --dest=org.freedesktop.NetworkManager.dnsmasq /uk/org/thekelleys/dnsmasq uk.org.thekelleys.SetDomainServers "array:string:192.168.0.1,/myvpn.domain.com/10.8.4.9"。这可以在 VPN 连接时编写脚本。您需要192.168.0.1通过 D-Bus 或使用 查找现有 DNS 服务器(在我的示例中为 )nm-cli
  • 使用 D-Bus 与网络管理器本身对话并告诉它更新服务器。以下是一个例子使用 Python 来做这件事需要做一些工作来包含当前服务器。

我正在使用第一个选项,并且只尝试了其他两个的初步版本

答案2

这很可能是服务器端的配置问题。vpn 服务器应该只推送自己可以解析的域名。

例如如果你使用 openvpn 服务器,用户配置可能如下所示:

ifconfig-push 172.16.0.51 255.255.255.0
push "route 172.16.1.0 255.255.255.0 172.16.0.1"
push "route 192.168.2.0 255.255.255.0 172.16.0.6"
push "dhcp-option DNS 172.16.0.1"
push "dhcp-option DOMAIN some.of.your.domains"
push "dhcp-option DOMAIN another.domain"

这样,您的客户端就知道,您的服务器只能解析此处指定的域。

如果使用 Networkmanager,dnsmasq 配置可以非常简单:

domain-needed
interface=lo
bind-interfaces

还有一个常见的陷阱:您必须在网络管理器中将您的 vpn 连接 ip 设置配置为“仅将连接用于其网络上的资源”(如下所示:https://brmlab.cz/_media/project/warzone/nv-routes.png

否则,路由将始终通过“真实”接口使用您的 vpn 连接。网络管理器通常会正确设置指标(vpn 的指标高于底层网络的指标)

答案3

您可能正在寻找 IPv4 和 IPv6 选项卡中的 DNS 搜索域和附加 DNS 服务器字段nm-连接编辑器应用。

只需在那里输入您公司的域名和 DNS 服务器 IP。

相关内容