我在我的家庭网络上运行一个 LDAP 服务器来存储帐户、自动挂载条目等。我花了很多时间为 OS X 客户端正确配置 LDAP 服务器,并且一切似乎都正常工作,除了当我使用 OS X 10.5 上的 Cisco VPN 客户端登录到我雇主的 VPN 时。
到目前为止,我已经将问题追溯到 OS X 目录服务对 LDAP 服务器进行反向 DNS (PTR) 查找,并且看起来 Cisco VPN 客户端正在拦截这些 DNS 请求。为了解决这个问题,我在目录服务中启用了调试,调试日志中出现了以下内容:
2010-02-11 18:02:02 EST - T[0xB031C000] - CLDAPConnectionManager::CheckFailed - checking 1 node connections
2010-02-11 18:02:02 EST - T[0xB031C000] - CLDAPNodeConfig::CheckWithSelect - good socket to host 192.168.1.11 but failed check, clearing from poll
使用 tcpdump 进一步挖掘后,我发现我可以对目录服务器的主机名进行 DNS 查找,但反向查找根本无法到达我的 LAN 的 DNS 服务器。相反,VPN 客户端似乎正在吞噬它们并将它们引用到prisoner.iana.org
。
现在,我知道当您向 Internet DNS 服务器查询 RFC 1918 地址空间中的私有网络地址时,事情通常应该这样工作。但是,查询应该发送到我的 LAN 的 DNS 服务器(只是在 Linksys WRT54G 上运行的 dnsmasq。)并且,当 VPN 客户端未运行时,这些请求会正常返回,并且 OS X 可以连接到我的 LDAP 服务器,我很高兴。但是一旦我启动 Cisco VPN 客户端,它似乎就会拦截这些请求,从而阻止对我的 LDAP 的访问,这意味着我的自动挂载共享不会出现,这非常烦人。
那么,有人知道为什么 VPN 客户端会做这样的事情吗?有人能想到任何解决方法吗?
答案1
听起来思科 VPN 客户端已配置为阻止访问您的本地网络,仅提供与内部 VPN 网络的网络连接。这通常是出于安全原因,以防止将网络桥接在一起。作为此操作的一部分,它已将您的 VPN DNS 设置设置为 VPN LAN 设置,以便您可以解析公司网络的 DNS 名称,从而解决您的问题。
VPN 设置中有一个“允许本地 LAN 访问”选项,但该选项通常会被管理员关闭。以下链接向您展示如何开启允许本地 LAN 访问但您的 VPN 管理员可能已锁定它以防止这种情况发生。
答案2
如果您使用 ldaps (ssl/tls) 进行连接,则可能是证书问题。使用反向 ptr 查找地址进行的绑定将失败,因为它不是 x509 证书中给出的地址。您可以在 ldap.conf/slapd.conf 中输入一个选项:reverse-lookup off
有时候它很容易是别的但我认为值得检查