我有一台 Windows Server 2008 R2 SP1 计算机,它被隔离在 DMZ 中。从历史上看,它没有出现过问题,但在它出现故障之前,一切都正常。防火墙设备上的端口 8530 是开放的,我可以从客户端远程登录到服务器,这证明该站点已准备就绪并开放。
此计算机未连接到域,因此 WSUS 服务器已在注册表中设置。因此,在 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate 下,我有
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate]
"WUServer"="http://kanwsus2k16:8530"
"WUStatusServer"="http://kanwsus2k16:8530"
"DoNotConnectToWindowsUpdateInternetLocations"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]
"UseWUServer"=dword:00000001
windowsupdate.log 证实了这一点。我想尝试只包含所需的内容,以尽量减少帖子长度。客户端访问服务器并看到它有 X 个可用更新。但是它无法下载这些更新。日志显示如下条目:
2018-05-07 11:05:19:960 668 47c DnldMgr BITS job {7835096F-E02C-4B66-AD0F-3D71EF17C73B} hit a transient error, updateId = {3FD57624-1808-41C7-979D-8606CA1229B6}.202, error = 0x80072EE2
... output truncated ....
2018-05-07 11:05:40:963 668 47c Misc WARNING: SendRequest failed with hr = 80072ee2. Proxy List used: <(null)> Bypass List used : <(null)> Auth Schemes used : <>
2018-05-07 11:05:40:963 668 47c Misc WARNING: WinHttp: SendRequestUsingProxy failed for <http://wsus.ds.download.windowsupdate.com/d/msdownload/update/software/secu/2018/04/windows6.1-kb4093118-x64-express_c1473ce4b149cf34239c364a9787030447e376ca.cab>. error 0x80072ee2
关于 SendRequestUsingProxy 失败,应该会失败。服务器无法访问 Microsoft 网站,因此将被阻止访问。我不明白为什么它没有直接从 WSUS 服务器获取更新。我们不使用代理,也没有配置代理。
在 WSUS 服务器端,我看到每个更新都显示下载失败状态。简而言之,通信正常,但客户端正在尝试从外部下载更新。这是一台 2k16 服务器,读取日志Get-WindwosUpdateLog
没有用。
这是我网络上唯一的外部服务器,因此我没有任何比较系统来确切知道系统在哪里。
为了测试与服务器的连接,我尝试浏览http://kanwsus2k16:8530/selfupdate/wuident.cab遇到的页面无法在客户端服务器上显示。(该链接在内部网络上工作正常)
为什么我的 Windows 更新客户端不遵守 WSUS 更新路径,而是尝试从 Microsoft 外部获取更新?
我还尝试过其他方法:
- Windows Server 2008 R2 x64 版系统更新准备工具
- 清除 BITS 队列
- 重命名 SoftwareDistribution 文件夹
- 已验证从网络端到 WSUS 服务器的 8530 端口没有任何被阻止
- 加起来
DoNotConnectToWindowsUpdateInternetLocations
等于1HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate
答案1
您尚未设置所需的注册表来突出显示 Windows 更新将通过 WSUS 下载。
请在路径中设置以下注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU
:
Value name: UseWUServer
Value data: Set this value to 1 to configure Automatic Updates
to use a server that is running Software Update Services instead of Windows Update.
Registry Value Type: Reg_DWORD
其他事项已准备就绪。还请注意在上面的另一个答案中,尤其是使用 来管理这些事情gpedit.msc
,而不是在注册表中进行更改。
答案2
我认为在这种情况下你不应该摆弄注册表。有太多的注册表项需要考虑,犯错的可能性相对较高。如果我是你,我会改用本地策略。
我有一台与您的情况类似的服务器 - 位于 DMZ,未连接到域,并从内部 WSUS 服务器接收更新。这台服务器接收更新很好。我正在使用本地策略来配置服务器的 Windows 更新设置,我认为这比直接更改注册表设置更可取。
gpedit.msc
在命令行上以管理员身份打开。
导航至计算机Configuration/Administrative Templates/Windows Components/Windows Update
更改以下设置:
- 配置自动更新:已启用
- 设置为“自动下载并通知安装”
- 指定 Intranet Microsoft 更新服务位置:已启用
- 将“设置用于检测更新的内联网更新服务”设置为http://你的 wsus 服务器:8530
- 将“设置内网统计服务器”设置为http://你的 wsus 服务器:8530
- (可选)允许自动更新立即安装:已禁用
- (可选)启用客户端定位:已启用
- 指定要放置服务器的计算机组的名称
至于防火墙设置,请确保从 DMZ 服务器到 WSUS 服务器的端口 8530 已打开。此外,如果您使用内部 DNS 来解析 WSUS 服务器名称,请确保 DMZ 服务器和内部 DNS 服务器之间的端口 53 已打开。
答案3
我将使用本地组策略来设置所有内容,并按照@Redwizard000 提供的设置进行操作https://serverfault.com/a/940236/557131。它谈论的是 Server 2016,但可以在较旧的操作系统中设置策略。这为我解决了一个相同的问题。如果没有其他问题,他会提供一些命令行来查看这是否是您的问题,然后再努力更改本地策略或注册表。