Proxyeinstellungen unter Windows
Die im Internet Explorer hinterlegten Proxyeinstellungen werden vom IE ausgewertet, sowie von allen Programmen die auf die Internet Explorer Einstellungen zurückgreifen können.
Windows Proxy Server systemweit einstellen
Damit Proxyeinstellungen vom ganzen System genutzt werden können, sprich auch von Anwendungen wie z.B. der Powershell, WinRM oder Windows Update, so müssen diese Einstellungen erst einmal gesetzt werden. Der IE bleibt nach dem Einstellen des systemweiten Proxys weiterhin außen vor. Dazu nutzen wir das Kommandozeilentool “netsh”.
netsh winhttp show proxy
netsh winhttp set proxy proxy.nds-edv.de:3128
Wenn die Einstellungen die im IE hinterlegt sind, als systemweiter Proxy wirken sollen, so kann man diese direkt von WinINET nach WinHTTP überführen bzw. importieren.
netsh winhttp import proxy source =ie
Die Proxy Umgehungsliste (Bypass-List) setzen:
netsh winhttp set proxy “proxy.nds-edv.de:3128” bypass-list= “*.test.local”
Um die Einstellungen rund um den “System” Proxy rückgängig zu machen, wird dieser Befehl ausgeführt:
netsh winhttp reset proxy
Im Allgemeinen gibt es 3 Möglichkeiten einen Proxy-Server zu konfigurieren/nutzen.
- Zum einen in Anwendungen die ihre eigenen Proxykonfigurationseinstellungen mitbringen und somit auf keine API des Systems zurückgreifen können oder wollen.
- Anwendungshersteller die das Rad nicht neu erfinden wollen greifen auf die WinINET API (Kernstück vom Internet Explorer) zurück. Somit partizipieren Anwendungen auch direkt von der Cookiebehandlung, den SSL/TLS Einstellungen und dem konfigurierten Proxy im IE.
- WinHTTP ist eher für eine nicht-interaktive Verwendung gedacht, wie z.B. für Windows-Dienste oder Aufgaben die im Hintergrund kommunizieren müssen, also für Prozesse die keinen Benutzereingriff erfordern (Windows Update, Powershell, WinRM, Zertifikatsprüfung).
WinHTTP ist im Vergleich zu WinINET performanter und ist von .NET abhängig. Beides kann über die Automatische Erkennung, manuelle Konfiguration oder Proxy-Auto-Skript konfiguriert werden.
Zusammengefasst bedeutet das, dass WinHTTP nicht die Einstellungen von WinINET, die im Internet Explorer konfiguriert werden, nutzt. Dazu müsste erst wie oben beschrieben der Befehl “netsh winhttp import proxy source =ie” ausgeführt werden.
WinINET wird im Internet Explorer konfiguriert und ist nur für das jeweilige Benutzerkonto gültig. Standardmäßig ist die automatische Suche vor eingestellt und nutzt somit das Web Proxy Autodiscovery Protocol (WPAD). Der Proxy wird somit entweder durch eine DHCP-Option oder durch eine DNS Abfrage WPAD-A konfiguriert. Möchte man das jeder Benutzer die gleichen Settings benutzt, kann das über eine Gruppenrichtlinie gesteuert werden.
Computer Configuration\Administrative Templates\Windows Components\Internet Explorer
Make proxy settings per-machine (rather than per user)
Es ist auch möglich die WinHTTP Settings über eine Gruppenrichtlinie zu verbreiten. Dazu importiert man einfach den Binärwert des Eintrags WinHttpSettings über den Registry Wizard.
Proxyeinstellungen wirken auf User und System
Hier mal ein Beispiel was passiert, wenn ich folgende Einstellungen vornehme.
$proxy = “HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings”
Set-ItemProperty -Path $proxy -Name ProxyEnable -Value 1
Set-ItemProperty -Path $proxy -Name ProxyServer -Value “172.18.32.250:3128”
Set-ItemProperty -Path $proxy -Name ProxyOverride -Value ‘192.*;172.18.*;*.windowspapst.de;<local>’
Set-ItemProperty -Path $proxy -Name AutoDetect -Value 0
Diese Einstellungen gelten nur für den aktuell angemeldeten Benutzer.
Wenn ich aber diese Einstellung vornehme, so das alle User den gleichen Proxy nutzen sollen, so werden die lokalen benutzerspezifischen Einstellungen mit diesem Befehl deaktiviert. Die automatische Suche ist wieder aktiv.
$proxy = “HKLM:\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings”
New-ItemProperty -Path $proxy -Name ProxySettingsPerUser -Value 0