【问题标题】:Windows VM proxy aware at provisioning timeWindows VM 代理在预配时感知
【发布时间】:2016-05-20 03:22:33
【问题描述】:

我们目前在 Azure 中利用 VNet,该 VNet 配置为强制所有流量通过我们的站点到站点连接到本地网络,然后通过我们的公司防火墙传出。所有 HTTP/HTTPS 流量都经过代理。

这会导致重大问题,因为新配置的 VM 无法看到外部世界以访问必要的配置项,例如 Azure 扩展,甚至没有代理的内部 IP。

迄今为止,我已经通过 PowerShell 创建了一个不正当的解决方法,我在其中配置 VM,使用覆盖代理设置的 Chef 引导它,以便访问 Chef 服务器,然后配置代理。

但是,在用户启动 Internet Explorer 之前,它不会设置代理以便它们可以在 PowerShell 中使用。具体来说,在 IE 启动之前,[System.Net.GlobalProxySelection]::Select 为空。一旦 IE 启动,它就会被填充。

我也尝试过预配置映像并对其进行 sysprep,但 sysprep 会擦除代理设置。

作为最后一步,我创建了一个我认为可以设置代理的 PowerShell 脚本。我打算通过 Azure Script Extension 使用这个脚本(假设默认情况下它在 VM 上),但我无法让它给我想要的结果。

所以,我的问题是,如何让 Windows 2012 R2(和 Windows 2008 R2)新配置的 VM 代理感知,以便配置序列中的其他进程能够工作(即,像 Chef 扩展这样的扩展)?

这是我创建的脚本(未按预期执行):

# See: http://www.geoffchappell.com/notes/windows/ie/firstrun.htm
$regKey = 'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings'
$proxyServerToDefine = 'http://<PROXY URI>:<PORT>'
Set-ItemProperty -path $regKey ProxyEnable -value 1
Set-ItemProperty -path $regKey ProxyServer -value $proxyServerToDefine
Set-ItemProperty -path $regKey ProxyOverride -value '137.185.235.196;137.185.235.199'
New-Item -Path 'HKLM:\\Software\\Policies\\Microsoft\\Internet Explorer' -Name 'Main' -Force # Does not exist by default
Set-ItemProperty -Path 'HKLM:\Software\Policies\Microsoft\Internet Explorer\Main' -Name DisableFirstRunCustomize -Value 1
(New-Object System.Net.WebClient).Proxy.Credentials =  [System.Net.CredentialCache]::DefaultNetworkCredentials

【问题讨论】:

  • 这应该发布到 ServerFault,而不是 StackOverflow。
  • 同意这是一个服务器故障问题,但这是您的解决方法:blogs.msdn.microsoft.com/mast/2015/12/01/…
  • 实际上,Simon,我不认为这是解决此问题的方法。解决方法是分配网络路由,而不是代理。

标签: powershell azure proxy


【解决方案1】:

这里的技巧是同时分配 HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet 设置和系统帐户的 Internet 设置。

建议:设置您的代理并覆盖一次,确认它可以工作,然后获取注册表值以在您的脚本中使用。

这是我设置的值列表,以使用户和系统帐户代理了解:

$userReg = 'HKCU:\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings'
Set-ItemProperty -path $userKey ProxyEnable -value 1
Set-ItemProperty -path $userKey ProxyServer -value ''
Set-ItemProperty -path $userKey ProxyOverride -value ''

$sysReg = 'HKU:\\S-1-5-18\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings'
Set-ItemProperty -path $sysReg ProxyEnable -value 1
Set-ItemProperty -path $sysReg ProxyServer -value ''
Set-ItemProperty -path $sysReg ProxyOverride -value ''

$sysRegCon = 'HKU:\\S-1-5-18\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings\Connections'
$DefaultConnectionSettings = ([byte[](0x46,0x00,...))
$SavedLegacySettings = ([byte[](0x46,0x00,...))
Set-ItemProperty -path $sysRegCon DefaultConnectionSettings -value $DefaultConnectionSettings
Set-ItemProperty -path $sysRegCon SavedLegacySettings -value $SavedLegacySettings

希望这可以帮助其他人更快地走下去......

【讨论】:

    猜你喜欢
    • 2019-11-22
    • 2018-09-21
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 2016-03-05
    相关资源
    最近更新 更多