使用 Cisco AnyConnect VPN 连接时 DNS“递归不可用”

使用 Cisco AnyConnect VPN 连接时 DNS“递归不可用”

有人有配置 Cisco AnyConnect VPN 的经验吗?通过 VPN 连接时,我们在客户端 DNS 名称解析方面遇到问题。

对我来说,这看起来就像 Cisco AnyConnect VPN 客户端拦截了来自客户端的 DNS 查询。

  1. 有人可以确认 AnyConnect VPN 客户端确实这样做了(拦截 DNS 流量)吗?
  2. VPN 服务器上的哪里配置了这项功能?

编辑:

当我连接到 VPN 时,路由表的变化情况如下:

[~]
$ diff -u /tmp/route_normal /tmp/route_vpn 
--- /tmp/route_normal   2010-01-20 19:23:47.000000000 +0100
+++ /tmp/route_vpn      2010-01-20 19:24:46.000000000 +0100
@@ -1,6 +1,10 @@
 Kernel IP routing table
 Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
+xxx.xxx.xx.xx.i 10.0.0.1        255.255.255.255 UGH   0      0        0 ath0
 172.16.53.0     *               255.255.255.0   U     0      0        0 vmnet1
 10.0.0.0        *               255.255.255.0   U     0      0        0 ath0
+172.17.20.0     *               255.255.255.0   U     0      0        0 cscotun
0
+192.168.111.0   172.17.20.212   255.255.255.0   UG    0      0        0 cscotun
0
 172.16.140.0    *               255.255.255.0   U     0      0        0 vmnet8
+172.16.0.0      172.17.20.212   255.255.0.0     UG    0      0        0 cscotun
0
 default         10.0.0.1        0.0.0.0         UG    0      0        0 ath0

编辑2:

IT 人员在 VPN 端点上做了“某事”。现在我在执行时收到“递归不可用”提示nslookup。DNS 服务器已启用递归。因此一定是 Cisco VPN DNS 拦截搞乱了这一切。

ubuntu@domU-12-31-39-00-ED-14:~$ /opt/cisco/vpn/bin/vpn connect xxx.xxxxxx.xx
...
  >> Please enter your username and password
...
  >> notice: Establishing VPN...
  >> state: Connected
  >> notice: VPN session established to ...
ubuntu@domU-12-31-39-00-ED-14:~$ nslookup www.vg.no
;; Got recursion not available from ..., trying next server
;; Got recursion not available from ..., trying next server
;; Got recursion not available from ..., trying next server
;; Got recursion not available from ..., trying next server
Server:         172.16.0.23
Address:        172.16.0.23#53

** server can't find www.vg.no.compute-1.internal: REFUSED

ubuntu@domU-12-31-39-00-ED-14:~$ ping 195.88.55.16
PING 195.88.55.16 (195.88.55.16) 56(84) bytes of data.
64 bytes from 195.88.55.16: icmp_seq=1 ttl=240 time=110 ms
64 bytes from 195.88.55.16: icmp_seq=2 ttl=240 time=111 ms
64 bytes from 195.88.55.16: icmp_seq=3 ttl=240 time=109 ms
^C
--- 195.88.55.16 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2017ms
rtt min/avg/max/mdev = 109.953/110.379/111.075/0.496 ms

答案1

正如评论中提到的,首先弄清楚您的拆分隧道(路由)。端点(集中器、ASA、PIX 等)管理员通常可以完全控制客户端如何处理此问题;有些公司只会通过隧道传输其网络(因此您的客户端 DNS 将通过 ISP 传输),而有些公司则需要通过链路传输所有流量(因此 DNS 将通过链路传输到公司)。大多数情况下,这是一个业务/IT 决策。

查看客户端上的路由表,查看网关等的样子以及流量在其特定实例中的路由位置,以便为您的调试提供起点。然后,您可以尝试从客户端对公共资源(即 Google 的新 DNS)进行直接 DNS 查询,以查看结果,同时使用 TCPview(如果您的客户端是 Windows)类型的软件来观察比特的飞行情况。

答案2

检查当您的 DNS 请求到达内部 DNS 服务器时正在使用什么明显的源 IP 地址。

服务器可能已配置为仅提供递归对来自已知内部 IP 地址的请求提供服务,否则只提供权威性为同一台服务器上托管的某些域名提供服务。

如果您的 DNS 请求似乎来自网外 IP 地址,那么他们只会获得权威答案,而不会获得递归答案。

相关内容