我处在一个奇怪的情况。
- 在工作中,我已经设置了OpenVPN + DNSMasq DNS服务器。
10.0.0.100
是VPN服务器的内部IP。10.0.0.200
是DNS服务器的内部IP。
如果我从外部网络连接到 VPN 服务器,一切就都正常了 - 我可以通过 ip 地址 ping 和 ssh 到本地机器。
但是,出于某种原因,我无法访问 DNS 服务。我可以 ssh 进入10.0.0.200
。所以我尝试了nslookup HOSTNAME 10.0.0.200
,但我只得到;; connection timed out; no servers could be reached
。内部和外部域名都会发生这种情况。
当 OpenVPN 运行时,如果我通过 ssh 进入局域网中的任何一台机器并运行nslookup HOSTNAME 10.0.0.200
,它就会按预期工作。此外,我甚至可以 telnet 到机器的端口 53 10.0.0.200
。
为了调试问题,我尝试了其他一些方法。我为 DNS 服务器提供了一个外部 IP,10.0.0.200
例如1.2.3.4
。在外部网络中,我可以运行nslookup HOSTNAME 1.2.3.4
,命令按预期执行 - 它解析内部和外部域名。
但是,当我在客户端机器上启动 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创建的虚拟接口的网关。
此时,我还注意到这
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 101
是在 openvpn 客户端的启动消息中。
因此,我怀疑通过 OpenVPN 路由 DNS 查询流量在某种程度上导致了问题。但是,我不知道
这是很多零散的信息,有很多不确定性。总结一下:
- 问题:我无法通过 VPN 正确访问本地网络中的 DNS 服务器,尽管其他一切似乎都运行正常。
- 我怀疑通过 OpenVPN 路由 DNS 流量存在问题,但我不确定,而且我也不知道解决方案。
答案1
我认为您的问题出在 DNSMasq 配置上,因为您一直收到;; connection timed out; no servers could be reached
错误消息。
我在使用 OpenVPN 配置 DD-WRT 时遇到了同样的问题,并通过添加以下内容修复了该问题:
interface=tun0
到我的dnsmasq.conf
(服务 | 来自 DD-WRT HTTP 接口的附加 DNSMasq 选项) [1]
然后,您可以通过添加以下内容将正确的 DNS 服务器推送给客户端:
push "dhcp-options DNS 10.x.x.x"
到 OpenVPN 配置 [2],但这只在 Windows 上“开箱即用” [3]。在 Ubuntu 客户端上,我只需手动设置内部 DNS 服务器,而无需编写脚本来解析参数foreign_option_n
。
答案2
如果您发布配置文件,将非常有帮助/etc/openvpn/server.conf
。特别是,检查您是否正在将路由和 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 设置方法了解更多详情。还请检查您的 DNS 服务器是否配置为允许远程客户端访问,以及 VPN 服务器上的防火墙是否允许 DNS 流量通过。
答案3
您需要配置您的 VPN 客户端机器,以便在连接到 VPN 时使用 10.0.0.200 作为其解析器。
http://openvpn.net/index.php/open-source/documentation/howto.html#dhcp
您可以通过编辑 /etc/resolv.conf(或您的操作系统等效文件)并发出 DNS 查询来手动尝试此操作。
为了进一步排除故障,请提供:
- VPN 客户端的操作系统和 DNS 配置
- 10.0.0.200 的 DNS 服务器的 DNS 配置(递归、权威、防火墙、默认路由等)