VMWare 中使用 NAT 的 Kali Linux:DNS 无法解析名称

VMWare 中使用 NAT 的 Kali Linux:DNS 无法解析名称

我在 VMWare Workstation 中安装了 Kali Linux。虚拟机配置为使用 NAT。主机服务器是 Windows 8.1。

Kali 中的 DNS 无法正常工作:

$ ping -c1 www.google.es
ping: unknown host www.google.es

网络正常运行:

$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_req=1 ttl=128 time=32.0 ms
64 bytes from 8.8.8.8: icmp_req=2 ttl=128 time=25.0 ms

配置的 DNS 是 Google 的:

$ cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.8.9

任何想法?

答案1

有两个可能的故障点:

  • 与 DNS 服务器的 TCP/UDP 连接是否正常?
  • C 库是否首先配置为使用 DNS,如果是,则使用哪个解析器库?

可以使用之前建议的任何命令来测试第一点:

host www.google.es 8.8.8.8
nslookup www.google.es 8.8.8.8
dig +short www.google.es @8.8.8.8

由于可以成功 ping 通 DNS 服务器,我们知道 IP 路由有效并且允许 ICMP 流量 - 但它没有告诉我们有关 DNS 流量的具体信息,即到端口 53 的 TCP 和 UDP 流量。防火墙可以阻止该流量而不阻止 ICMP,反之亦然。

对于第二个可能的故障点,运行:

grep hosts /etc/nsswitch.conf

如果答案不包含关键字dnsresolve也不包含lwres,那么此虚拟机中的主机名解析已配置为根本不使用 DNS - 关键字将指示实际要使用哪些方法。

  • dns是经典的 DNS 解析器,通过以下方式配置/etc/resolv.conf
  • lwreslibnss-lwres:如果发现此问题,还请验证lwresd进程是否正在运行,并且未将其配置为使用自定义配置文件而不是默认配置文件/etc/resolv.conf
  • resolve表示libnss-resolve:如果发现此信息,请验证该systemd-resolved进程是否正在运行,并使用该systemd-resolve --status命令查看当前的DNS配置。在这种情况下,经典/etc/resolv.conf可能根本不会被使用,除了直接使用自己的 DNS 解析器库将查询发送到的应用程序之外systemd-resolved

要测试应用程序是否可以成功使用已配置的主机名解析库,请使用getent hosts www.google.es。如果您认为应用程序仅使用 IPv4,或者指定 IPv4 首选项,您也可以使用 进行测试getent ahostsv4 www.google.es。同样,要专门针对 IPv6 进行测试,您可以使用getent ahostsv6 www.google.es

答案2

尝试使用 host 或 nslookup 并强制它询问特殊服务器

$ host www.google.es 8.8.8.8
$ nslookup www.google.es 8.8.8.8

答案3

或者,挖掘 www.google.es @8.8.8.8 也尝试其他主机名。

可能需要检查 DNS 端口 53 是否打开(主要是 UDP,但也包括 TCP)

相关内容