关于Exchange2013禁用IPv6的操作误区

背景:
我知道我一定不是第一个出来讲这个问题的人,但是我看到很多我们的客户包括一些系统工程师依旧偏向于通过在网卡属性页里清空TCP/IPv6前的复选框来禁用IPv6。上个礼拜的时候,一个客户那里就因为通过这种操作办法将Exchange服务器的IS服务,Transport服务搞毁了。
概述:
首先要说明,作为Win2008系统的默认配置,微软不会建议你禁用IPv6,因此他们的Exchange团队没发不过任何一篇在IPv6禁用下的技术文档。以下的操作完全是凭实践与经验教训获得的。
让我们来比较以下两种操作:
1. 在网卡属性页中不勾选TCP/IPv6前的复选框。
2. 通过注册表禁用IPv6。

第一种做法的问题是:在清空复选框的时候,操作系统层面依旧认为IPv6是可用状态,而此时网卡(物理层)却不会再处理IPv6的数据包,由此就会导致传输问题。一个简单的测试办法就是在你ping localhost你就会发现返回的仍然是IPv6的地址(哪怕是系统重启了之后)。
C:\Users\admin>ping localhost
正在 Ping PC [::1] 具有 32 字节的数据:
来自 ::1 的回复: 时间<1ms
来自 ::1 的回复: 时间<1ms
来自 ::1 的回复: 时间<1ms
来自 ::1 的回复: 时间<1ms

所以这样的操作对于Exchange来说会造成一些不明觉厉的问题,尤其是2013在这方面尤为敏感。在RTM以来,我发现好些问题是通过重新勾选网卡属性页的IPv6并重启机器后解决的。这些问题包括:
1. 在Exchange2013安装阶段在网卡属性页停用IPv6会造成安装失败或安装不完整。如果要继续,你就不得不进行垃圾清理操作以便使安装继续。
2. 当Exchange2013服务器同时是一台域控是时候,清选IPv6会导致Microsoft Exchange活动目录拓扑服务(Active Directory Topology Service)无法启动。解决办法同样是勾选IPv6并重启计算机。
3. 可能会造成Exchange2013服务器上的传输服务,前端传输服务及传输投递服务无法启动。
4. 可能会造成Exchange2013服务器上的IS服务(Information Store)无法启动。

第二种方法不能说是正确的做法,因为我先前说了,微软不会对禁用IPv6的系统做任何测试与排错。然而,一些客户确实出于某些原因需要禁用IPv6。我想这很大程度上是因为在以前Outlook无处不在(Outlook Anywhere)在某些环境下必须要在服务器端禁用IPv6才能正常工作。但是据我所知在最新的各个版本的Exchange上都不再有这个问题了。
就我个人的经验,通过修改注册表禁用IPv6还没有发生过任何问题。方法是在注册表的这个位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters 添加一个DisabledComponents的Dword键值并将其值设为8个F然后重新启动计算机。系统起来后IPv6就被禁用了。关于这个方法,小编和微软的技术支持工程师也讨论过,他们没有经历这个方法出任何纰漏的案子。



最后我想说的是,如果你们的Exchange服务器使用iSCSI作为存储,在iSCSI的网卡上禁用IPv6是没有任何问题的。这篇文章所讨论的对象是接入到生产网络/公网的网卡。建议您遵照SAN供应商的最佳实践方案来部署iSCSI的网卡。