连接到VPN时仅使用一个DNS的网络


9

我的公司有一个我需要连接的VPN。在OSX中,通过使用openvpn以下配置来执行此操作:

client
dev tun
proto udp
remote <GATEWAY_ADDRESS> <PORT>
resolv-retry infinite
nobind
user nobody
group nobody
persist-key
persist-tun
ca /Users/Tommy/.openvpn/dev/ca-dev.crt
cert /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.crt
key /Users/Tommy/.openvpn/dev/tommy.brunn-20131122-dev.key
ns-cert-type server
tls-auth /Users/Tommy/.openvpn/dev/ta-dev.key 1
cipher BF-CBC
comp-lzo
verb 3
auth-nocache
;daemon
;writepid openvpn.pid

在Ubuntu中,我已经安装network-manager-openvpn并添加了一个新的VPN连接(尝试导入配置文件导致崩溃),并设置了相同的配置选项:我的设置的屏幕截图

连接到VPN后,我将无法解析任何域。

如果我进行编辑/etc/NetworkManager/NetworkManager.conf,注释掉该行dns=dnsmasq并重新启动network-manager,则可以解析公司内部的域,但是google.com之类的其他域根本无法解析。我已确保在我的VPN连接的网络管理器的IPv4和IPv6选项卡中将“方法”设置为“仅自动(VPN)地址”,但这似乎没有任何区别。

我也尝试过重新启用dnsmasq并修改/etc/resolvconf/resolv.conf.d/base 为contains nameserver 127.0.1.1,然后运行sudo resolveconf -u,但是没有域会再次解析。

我希望能够连接到我的VPN,以便以这种方式解析由我公司的DNS服务器推送的域,而所有其他域都可以正常解析。

编辑:原来dnsmasq并未实际安装,我认为默认情况下会安装。但是,如果我安装它,在中重新启用它,在/etc/NetworkManager/NetworkManager.conf中添加本地名称服务器地址/etc/resolvconf/resolv.conf.d/base,重新启动所有服务并连接到VPN,则可以从公司DNS解析域,但是不能解析任何其他域。因此,与我完全禁用dnsmasq时的情况基本相同。

编辑:的内容/etc/dnsmasq.confhttp : //paste.ubuntu.com/7297231/


您能告诉我们您的dnsmasq设置吗?Dnsmasq通常从/etc/resolv.conf获取其上游DNS服务器,因此,如果您没有进行更改,则可能只是通过VPN拉动DNS。
jkt123

当然。我添加了指向我的/etc/dnsmasq.conf
Tommy Brunn 2014年

Answers:


4

从您的配置中,您的dnsmasq安装将从中获取要使用的DNS服务器列表/etc/resolv.conf。默认情况下,dnsmasq会尝试使用已启动的DNS服务器,但只会将给定请求发送到单个DNS服务器。如果您有多个可以/将仅服务于某些查询的DNS服务器,则可能导致问题。

我相信您可以通过确保在LAN上设置DNS服务器(不连接VPN时使用/etc/resolv.conf的DNS服务器)以及公司网络上的DNS服务器来解决此问题。通过VPN使用。

然后,您将需要编辑/etc/default/dnsmasq和添加或编辑DNSMASQ_OPTS=包含在内的行--all-servers

如果使用此设置仍无法获取DNS查询,请将在上述步骤中创建的resolv.conf文件复制到其他位置,例如~/resolv.conf,使用设置/etc/resolv.conf并在其中nameserver 127.0.0.1设置以下选项/etc/dnsmasq.conf

resolv-file=/home/your_username/resolv.conf

这将配置您的系统以查询dnsmasq安装中的DNS,并且它将依次使用本地DNS服务器和VPN DNS服务器进行每个查询。

编辑:您可以使用该nmcli工具找到当前用于特定连接的DNS服务器。为了查找无线连接使用的DNS服务器,我使用以下语法:

nmcli dev list iface wlan0 | grep IP4.DNS

如果在未连接到VPN时运行此命令,然后在连接并能够解析公司地址时再次运行此命令,则应在VPN上打开DNS服务器列表。我希望这有帮助。

编辑2:查看路由表,您的VPN管理员似乎已将您设置为在连接时通过VPN路由所有流量(您的默认网关更改为VPN地址)。由于您的两个DNS服务器都是公共地址,并且在您使用VPN时都没有设置特定的路由,因此您尝试通过VPN进行常规DNS查找,这就是失败的原因。

根据您的VPN设置,您可能有几种方法可以实现此目的:

  • 如果VPN允许您通过公司网络访问Internet,但不对Internet上的服务器执行DNS查询,请像这样添加到DNS服务器的路由:sudo route add -host 83.255.245.11 gw 192.168.0.1,然后sudo route add -host 193.150.193.150 gw 192.168.0.1连接到VPN。

  • 如果VPN不允许您通过公司网络访问Internet,则在连接到VPN后,需要将计算机上的默认网关设置更改为指向192.168.0.1。在这种情况下,您将需要设置通常的默认网关,然后添加网络路由以访问仅VPN设备。

在第二个pastebin中所示的“连接到VPN”情况下,您可能需要减少路由表,如下所示:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     1      0        0 eth0
10.100.0.0      10.100.0.105    255.255.255.0   UGH   0      0        0 tun0
10.100.0.105    0.0.0.0         255.255.255.255 UH    0      0        0 tun0

然后,根据需要添加路由以访问公司设备。在上面显示的路由表中,我假设在VPN上使用/ 24网络,这可能是错误的。您必须适当设置遮罩。


如何查找本地DNS服务器和公司网络中的地址?
Tommy Brunn

我已经编辑了答案以提供此信息。
2014年

根据nmcli,即使我显然不应该连接,也可以连接到不连接VPN时获得与DNS服务器完全相同的DNS服务器,因为当我连接到VPN时,我可以解析公司网络上的内部域米连接。
Tommy Brunn

nmcli没有VPN连接的情况下运行时,您是否能够正确解析DNS?如果不是,则应断开与VPN的连接,确保DNS正常运行,然后运行nmcli
jkt123 2014年

是的,从VPN断开连接后,我能够正常解析DNS。输出示例:paste.ubuntu.com/7345250
Tommy Brunn

0

关于如何让NetworkManager为您协调事务,我无法为您填补一些空白。我将尽力澄清它所协调的事物是如何工作的。这不是一个完美的答案,但希望有用。实际上,考虑到这是一个老问题,这确实是后代的问题。

除了与公司网络的连接之外,您可能不想使用公司VPN。在这种情况下,最好还是将VPN设置仅将适当的网络范围路由到VPN,并像以前一样将默认路由指向您的本地路由器。如果公司将其VPN设置为仅路由流量或网络,那将是很好的,但是不幸的是,这似乎很少见。幸运的是,您可以在本地设置中配置路由。

这仍然给您带来潜在的DNS问题。jtk123关于dnsmasq对DNS所做的评论不是特定于dnsmasq的-这就是DNS的工作方式。如果DNS客户端或中介解析程序收到DNS条目不存在的响应,则退回询问另一个DNS服务器是不正常的行为。这意味着您需要一个dns解析器,该解析器将根据需要答复请求是否与公司网络相关。

也许您的公司网络会回答与更广泛的Internet相关的DNS查询,在这种情况下,您只需使用它,那可能就可以了。否则,您需要一个本地DNS服务器,该服务器将与公司关联的域的请求转发到其DNS服务器,并在适当的地方将其他请求转发给其他服务器。

可以告诉dnsmasq将对特定域的请求转发到特定的上游DNS服务器。例如,请参见dnsmasq.conf手册页中概述的--server选项。我还不清楚如何使networkmanager与此玩得开心(这是我目前正在寻找的东西)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.