2016-05-20 11 views
0

Wir nutzen derzeit ein VNet bei Azure, das den gesamten Datenverkehr über unsere Site-to-Site-Verbindung zu lokalen Netzwerken und dann über unsere Unternehmensfirewall erzwingt. Der gesamte HTTP/HTTPS-Datenverkehr wird weitergeleitet.Windows VM-Proxy zur Bereitstellungszeit

Dies verursacht ein erhebliches Problem, da neu bereitgestellte VMs die Außenwelt nicht sehen können, um auf notwendige Konfigurationselemente wie Azure Extensions oder sogar nicht-proxisierte interne IPs zuzugreifen.

Bis heute habe ich per PowerShell eine perverse Workaround erstellt, wo ich die VM bereitstellen, mit Chef Chefstrap, der die Proxy-Einstellungen überschreibt, um zum Chef-Server zu gelangen, der dann die Proxies konfiguriert.

Aber bis der Benutzer den Internet Explorer startet, setzt er die Proxies nicht so, dass sie in PowerShell verwendet werden können. Insbesondere vor dem Start von IE ist [System.Net.GlobalProxySelection] :: Select leer. Sobald der IE gestartet wurde, wird er ausgefüllt.

Ich habe auch versucht, ein Image vorkonfigurieren und Sysprep'ing es, aber Sysprep löscht die Proxy-Einstellungen.

Als letzten Schritt habe ich ein PowerShell-Skript erstellt, von dem ich dachte, dass es die Proxies setzen würde. Ich wollte dieses Skript über Azure Script Extension verwenden (vorausgesetzt, es ist standardmäßig auf der VM), aber ich kann es nicht bekommen, um mir die gewünschten Ergebnisse zu geben.

Also, meine Frage ist, wie mache ich einen neu bereitgestellten Windows 2012 R2 (und Windows 2008 R2) VM-Proxy bewusst, so dass andere Prozesse in der Bereitstellung Sequenz funktionieren (d. H. Erweiterungen wie die Chef-Erweiterung)? Hier

ist das Skript, das ich erstellt (das nicht wie erwartet):

# 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 
+0

Dies zu gebucht werden ServerFault, nicht StackOverflow. –

+0

Vereinbaren Sie dies ein Problem mit dem Serverfehler, aber das ist Ihre Problemumgehung: https://blogs.msdn.microsoft.com/mast/2015/12/01/azure-vm-may-fail-to-activate-over-expressroute/ –

+0

Eigentlich, Simon, ich glaube nicht, dass das die Arbeit für dieses Problem ist. Bei dieser Vorgehensweise werden Netzwerkrouten und keine Proxies zugewiesen. – Cantaberry

Antwort

0

Der Trick hier wurde die Zuweisung sowohl der HKCU: \ Software \ Microsoft \ Windows \ Currentversion \ Internet Settings und Systemkonto Interneteinstellungen

Vorschlag: Legen Sie Ihren Proxy fest und überschreibt einmal, bestätigen Sie, dass es funktioniert, und greifen Sie dann auf die Registrierungswerte, die in Ihrem Skript verwendet werden.

Hier ist die Liste der Werte Ich habe die Nutzer zu machen und die Systemkonten Proxy bewusst:

$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 

Hope this jemand anderes schneller auf den Weg sollten hilft ...

Verwandte Themen