通过openvpn nslookup不起作用,而其他服务function

我处于一个奇怪的境地

  • 在工作中,我build立了OpenVPN + DNSMasq DNS服务器。
  • 10.0.0.100是VPN服务器的内部IP地址。
  • 10.0.0.200是DNS服务器的内部IP。

如果我从外部networking连接到VPN服务器,它一切正常 – 我可以通过他们的IP地址ping和ssh到本地机器。

但是,由于某种原因,我无法访问DNS服务。 我可以ssh到10.0.0.200 。 所以我尝试nslookup HOSTNAME 10.0.0.200 ,但我只得到;; connection timed out; no servers could be reached ;; connection timed out; no servers could be reached ;; connection timed out; no servers could be reached 。 内部和外部域名都会出现这种情况。

当OpenVPN运行时,如果我在局域网中的任何一台机器上运行,并运行nslookup HOSTNAME 10.0.0.200 ,它就像预期的那样工作。 另外,我甚至可以telnet到机器10.0.0.200 53端口。

为了debugging这个问题,我尝试了更多的东西。 我给了DNS服务器的一个外部IP, 10.0.0.200 ,说, 1.2.3.4 。 在外部networking中,我可以运行nslookup HOSTNAME 1.2.3.4 ,该命令按预期执行 – 它可以parsing内部和外部域名。

但是,当我在客户端机器上启动Openvpn客户端,并运行nslookup HOSTNAME 1.2.3.4 ,它没有执行相同的connection timed out; 错误信息。

 traceroute to 1.2.3.4 (1.2.3.4), 30 hops max, 60 byte packets 1 5.5.0.1 (5.5.0.1) 25.705 ms 25.714 ms 25.790 ms 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 7 * * * 8 * * * 9 * * * 10 * * * 11 * * as7065.xe-1-0-6.ar1.pao1.us.nlayer.net (69.22.130.86) 25.742 ms 12 tengig4-3.cr1.lsatca11.sonic.net (69.12.211.6) 25.658 ms 33.069 ms 33.067 ms 13 po2.cr1.colaca01.sonic.net (70.36.205.65) 33.075 ms 33.009 ms 37.902 ms 14 gig1-1-1.gw.snfcca01.sonic.net (70.36.228.102) 40.420 ms 40.332 ms 40.364 ms 15 * * * 16 ...(and go on) 

5.5.0.1是OpenVPN创build的虚拟接口的网关。

在那一点上,我也注意到Wed May 18 22:32:44 2011 /sbin/route add -net 1.2.3.4 netmask 255.255.255.255 gw 5.5.0.1 metric 101openvpn客户端的启动消息中。

所以,我怀疑,通过OpenVPN路由DNS查询stream量是以某种方式导致这个问题。 但是,我不知道

这是很多分散的信息,更多的不确定性。 总结:

  • 问题:我无法通过VPN正确访问本地networking中的DNS服务器,即使其他一切似乎都正常工作。
  • 我怀疑,通过OpenVPN路由DNSstream量是一个问题,但我不知道,我不知道它的解决scheme。

我相信你所遇到的问题是DNSMasq的configuration,因为你不断得到;; connection timed out; no servers could be reached ;; connection timed out; no servers could be reached ;; connection timed out; no servers could be reached错误消息。

我在使用OpenVPNconfiguration我的DD-WRT时遇到了同样的问题,并通过添加以下内容来修复它:

 interface=tun0 

到我的dnsmasq.conf (服务|来自DD-WRT HTTP接口的其他DNSMasq选项)[1]

然后,您可以通过添加以下内容将正确的DNS服务器推送到客户端:

 push "dhcp-options DNS 10.xxx" 

到OpenVPNconfiguration[2],但是这只能在Windows [3]上“开箱即用”。 在Ubuntu客户端,我只是手动设置我的内部DNS服务器,而不是编写脚本来parsingforeign_option_n参数。

  1. http://www.dd-wrt.com/phpBB2/viewtopic.php?p=680573
  2. OpenVPN和DNS。 如何?
  3. http://openvpn.net/archive/openvpn-users/2006-06/msg00097.html

如果你发布你的/etc/openvpn/server.confconfiguration文件,这是最有用的。 特别是,检查你是否推送路由和DNS服务器到客户端:

 # give clients access to the whole work network, not just the server. push "route 192.168.10.0 255.255.255.0" # tell clients to use your internal dns server push "dhcp-option DNS 10.8.15.1" push "dhcp-option DOMAIN inside.example.com" 

有关更多详细信息,请参阅我的openvpn安装程序howto 。 另外,请检查您的dns服务器是否configuration为允许远程客户端访问,并且vpn服务器上的防火墙允许dnsstream量通过。

您需要configuration您的VPN客户端机器连接到VPN时使用10.0.0.200作为其parsing器。

http://openvpn.net/index.php/open-source/documentation/howto.html#dhcp

您可以通过编辑/etc/resolv.conf(或您的操作系统等效项)并发出DNS查询来手动尝试。

要进一步排查问题,请提供:

  • 操作系统和DNS客户端的DNSconfiguration
  • 10.0.0.200 DNS服务器的DNSconfiguration(recursion,权威,防火墙,默认路由等)