Windows Proxy Server systemweit einstellen

Windows Proxy Server systemweit einstellen

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

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

Proxyeinstellungen unter Windows

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

netsh winhttp import proxy source =ie

import proxy settings from ie

Die Proxy Umgehungsliste (Bypass-List) setzen:

netsh winhttp set proxy “proxy.nds-edv.de:3128” bypass-list= “*.test.local”

Proxy Bypass List netsh

Um die Einstellungen rund um den “System” Proxy rückgängig zu machen, wird dieser Befehl ausgeführt:

netsh winhttp reset proxy

Reset-winhttp-proxy

Im Allgemeinen gibt es 3 Möglichkeiten einen Proxy-Server zu konfigurieren/nutzen.

  1. Zum einen in Anwendungen die ihre eigenen Proxykonfigurationseinstellungen mitbringen und somit auf keine API des Systems zurückgreifen können oder wollen.
  2. 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.
  3. 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)

Internet Explorer Make proxy settings per-machine

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.

WinHTTP Settings per GPO verteilen

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

Proxyeinstellungen wirken auf User und System Powershell

Diese Einstellungen gelten nur für den aktuell angemeldeten Benutzer.

Proxyeinstellungen wirken auf User und System

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

Proxyeinstellungen systemweit gleich setzen Powershell

Proxyeinstellungen systemweit gleich setzen