我在我公司的VPN上,注意到nslookup和host都返回了我们服务器的公共IP地址,而resolveip和curl(以及我的浏览器)返回了正确的内部地址。为什么不同的Unix程序会以不同的方式解析相同的主机名?
答案 0 :(得分:10)
nslookup
,dig
和host
是直接查询DNS的客户端。 getent
实用程序,curl
和大多数应用程序(可能包括您正在讨论的resolveip
,虽然我不熟悉它)是C库地址解析服务的客户端。 C库的地址解析服务使用/etc/nsswitch.conf
进行配置,默认情况下会咨询/etc/hosts
,如果在/etc/hosts
中找不到答案,则会咨询DNS。它也可以配置为根本不咨询DNS(或其他一些服务)。
在您的情况下,您可能在/etc/hosts
中拥有正确的内部地址。