Inhalt

Proxy, Proxy an der Wand...

…wer nervt am meisten im ganzen Land.

Proxy Server sind in vielen Enterprise Umgebungen immer noch ein gern genutztes Mittel um den ausgehenden Webtraffic zu kanalisieren, scannen und Gefahren abzuwehren. Leider setzen die wenigsten Unternehmen auf transparente Proxy Lösungen und zwingen einen dazu den Proxyserver in der jeweiligen Applikation zu hinterlegen.

Da die Konfiguration des Proxys für jede Applikation unterschiedlich ist, sammle ich hier einige Beispiele.

Windows

Mit einem systemweitem Proxy macht man Vieles richtig. Dieser ist in Windows mittels netsh einfach gesetzt.

netsh winhttp set proxy "myproxy.local.bader.cloud:3128" bypass-list="\*.local.bader.cloud;<local>"

ARMClient / .NET Applikationen

Der ARMClient ist eine tolle Möglichkeit um unkompliziert die REST API von Microsoft zu nutzen. Wie bei jeder .NET Applikation muss man, um den Proxy explizit anzugeben, eine .config Datei erstellen. Beim ARMClient heißt diese ARMClient.exe.config

<configuration>
  <system.net>
    <defaultProxy>
      <proxy usesystemdefault="false" autoDetect="false" proxyaddress="http://myproxy.local.bader.cloud:3128" bypassonlocal="true"/>
      <bypasslist>
          <add address="\[a-z\]+\.local\.bader\.cloud$" />
      </bypasslist>
    </defaultProxy>
  </system.net>
</configuration>

Leider bringt die verwendete ADAL Anmeldung keinerlei Proxy Support mit sich, daher muss auf den aktuellen Release 1.3 zurückgegriffen werden. Dieser unterstützt den Login mittels der Azure CLI und damit auch einen Proxy.

machine.config

Um die Einstellung systemweit zu setzen muss die machine.config angepasst werden.
Den genauen Pfad zur Datei kann man mit folgendem Befehl auslesen.

[System.Runtime.InteropServices.RuntimeEnvironment]::SystemConfigurationFile

Chocolatey

Die Konfiguration ist in der Doku gut dokumentiert, ich habe mein Script etwas erweitert um die komplette Installation in PowerShell zu automatisieren.

\# Install Chocolatey through a proxy
$env:chocolateyProxyLocation = "http://myproxy.local.bader.cloud:3128"
$proxy = new-object System.Net.WebProxy
$proxy.Address = $env:chocolateyProxyLocation
$wc = New-Object System.Net.WebClient
$wc.proxy = $proxy
iex ($wc.DownloadString('https://chocolatey.org/install.ps1'))
# Set Proxy for package download
choco config set proxy $env:chocolateyProxyLocation

PowerShell

Auch in der PowerShell lässt sich ein Proxy definieren. Im $PROFILE hinterlegt wird die Konfiguration bei jedem Start geladen.

$proxyString = "http://myproxy.local.bader.cloud:3128"
$proxyUri = new-object System.Uri($proxyString)
\[System.Net.WebRequest\]::DefaultWebProxy = new-object System.Net.WebProxy ($proxyUri, $true)

PowerShell Package Provider

Um in den Genuss von Install-Module auf einem Windows 7 System zu kommen, muss zuerst der Package Provider installiert werden. Wenn ein Proxy im Weg ist muss dieser angegeben werden.

$proxy = "http://myproxy.local.bader.cloud:3128"
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force -Proxy $proxy
Register-PSRepository -Default -InstallationPolicy Trusted -Proxy $proxy

Git

Zu guter Letzt will man natürlich auch seinen Quellcode im Git ablegen.

git config --global http.proxy http://myproxy.local.bader.cloud:3128