使用 VMWare Fusion 时:Windows 7 客户机上的 DNS 查找会附加 localdomain

使用 VMWare Fusion 时:Windows 7 客户机上的 DNS 查找会附加 localdomain

以下是我输入的内容:

C:\Users>nslookup
Default Server:  UnKnown
Address:  172.16.128.2

> google.com
Server:  UnKnown
Address:  172.16.128.2

Name:    google.com.localdomain
Addresses:  74.125.226.14
          74.125.226.14

> google.com.
Server:  UnKnown
Address:  172.16.128.2

Non-authoritative answer:
Name:    google.com
Addresses:  2607:f8b0:4006:806::1005
          74.125.226.1
          74.125.226.6
          74.125.226.2
          74.125.226.4
          74.125.226.5
          74.125.226.9
          74.125.226.8
          74.125.226.7
          74.125.226.3
          74.125.226.0
          74.125.226.14

这以前不会造成任何问题,也许它以前没有附加本地域......但现在它确实会给在进行域名查找时不附加“。”的应用程序带来问题。

我在 cygwin 中的命令行 ssh 中看到了问题。

并确保在主机(Mac OS / X)上:

jzwolak@laptop:~$ nslookup
> google.com
Server:     192.168.2.1
Address:    192.168.2.1#53

Non-authoritative answer:
Name:   google.com
Address: 74.125.226.14
Name:   google.com
Address: 74.125.226.1
Name:   google.com
Address: 74.125.226.6
Name:   google.com
Address: 74.125.226.2
Name:   google.com
Address: 74.125.226.4
Name:   google.com
Address: 74.125.226.5
Name:   google.com
Address: 74.125.226.9
Name:   google.com
Address: 74.125.226.8
Name:   google.com
Address: 74.125.226.7
Name:   google.com
Address: 74.125.226.3
Name:   google.com
Address: 74.125.226.0
> 

我正在运行 VMWare Fusion 7.1.2、Mac OS/X 10.10.4、Windows 7 SP1(包含所有重要更新)以及最新的 cygwin 和 ssh(来自 cygwin 包,版本为:OpenSSH_6.9p1、OpenSSL 1.0.2d 2015 年 7 月 9 日)。

ssh 不是唯一有问题的程序,但它是我需要使用的程序。

知道为什么会发生这种情况吗?

哦...如果我手动将 Windows 中的 DNS 服务器设置为 Mac OS/X 中使用的 DNS 服务器(在我的示例中为 192.168.2.1),那么一切都正常。

答案1

补充一下 Scott 的回答,据我所知,区别在于 NAT/共享模式下,VMWare 隔离了客户机,使其更安全,虚拟机在外部网络上没有自己的 IP 地址。相反,一个名为本地管理员已在您的 Mac 上设置...

使用桥接网络时,虚拟机会作为与 Mac 位于同一物理以太网网络上的附加计算机出现,从而降低其安全性。请参阅 VMWare KB文章关于网络类型。

NAT 模式测试

C:\Windows\System32>nslookup
Default Server:  UnKnown
Address:  172.16.65.2

> google.com
Server:  UnKnown
Address:  172.16.65.2

Name:    google.com.localdomain
Addresses:  216.58.192.46
          216.58.192.46

>

桥接模式测试

C:\Windows\System32>nslookup
Default Server:  google-public-dns-a.google
Address:  8.8.8.8

> google.com
Server:  google-public-dns-a.google.com
Address:  8.8.8.8

Non-authoritative answer:
Name:    google.com
Addresses:  2607:f8b0:4010:800::1004
          216.58.192.46

答案2

是的,这会导致 SSH(以及 git)出现问题。问题是虚拟机的网络适配器配置为 NAT 模式(也显示为与我的 Mac 共享) 并且在 NAT 模式下,VMWare 正在尝试强制使用 IPv6,但不知何故无法正确支持 IPv6。您可以切换到桥接模式或强制 SSH 使用 IPv4。

切换到桥接模式

注意:这可能会降低虚拟机的安全性,因为它现在将直接连接到网络,并且没有通过主机的保护将网络更改为桥接通过选择菜单模式虚拟机 > 网络适配器 > 桥接(自动检测)并且它会起作用。

强制 SSH 使用 IPv4

将以下行添加到/etc/ssh/ssh_config(或c:\Program Files\Git\etc\ssh\ssh_config当使用适用于 Windows 的 git 时):

AddressFamily inet

答案3

我在 Windows 上禁用了 ipv6,但它似乎有效。

我使用了https://support.microsoft.com/en-us/kb/929852

要禁用某些 IPv6 组件,请按照以下步骤操作:
单击“开始”,在“开始搜索”框中键入 regedit,然后单击“程序”列表中的 regedit.exe。
在用户帐户控制对话框中,单击继续。
在注册表编辑器中,找到并单击以下注册表子项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\参数\
双击“DisabledComponents”以更改“DisabledComponents”条目。

注意:如果“DisabledComponents”条目不可用,则必须创建它。为此,请按照下列步骤操作:
在编辑菜单中,指向新建,然后单击 DWORD(32 位)值。
键入 DisabledComponents,然后按 Enter。
双击 DisabledComponents。
在数值数据字段中键入以下任意值以将 IPv6 协议配置为预期状态,然后单击确定:
键入 0 以重新启用所有 IPv6 组件(Windows 默认设置)。
键入 0xff 以禁用除 IPv6 环回接口之外的所有 IPv6 组件。此值还通过更改前缀策略表中的条目将 Windows 配置为优先使用 IPv4 而不是 IPv6。有关更多信息,请参阅源和目标地址选择。
通过更改前缀策略表中的条目,输入 0x20 以优先使用 IPv4 而不是 IPv6。
键入 0x10 以禁用所有非隧道接口(LAN 和点对点协议 [PPP] 接口)上的 IPv6。
输入 0x01 可禁用所有隧道接口上的 IPv6。这些接口包括站内自动隧道寻址协议 (ISATAP)、6to4 和 Teredo。
输入 0x11 以禁用除 IPv6 环回接口之外的所有 IPv6 接口。

相关内容