Proxy automatisch an- und ausschalten - Proxy Switcher

21.01.2014 | Autor: Mark Heitbrink

Viele Firmen verwenden einen Proxy Server und stehen vor dem Problem, daß dieser nur im eigenen Netzwerk funktioniert und zuhause oder unterwegs ausgeschaltet sein sollte.
Grundsätzlich ist das kein Problem, wenn der Benutzer den Verbindungsreiter in den Internetoptionen sehen und den Proxy ändern darf. Aber, es ist lästig, per Hand umzuschalten.
Dauernd vergisst man wo man ist und schon ist der Proxy im falschen Netzwerk entweder an, oder aus und im Internet geht wieder nichts.

Der Trick funktioniert über die Network Location Awareness, bzw. über das Ereignisprotokoll Microsoft\Windows\NetworkProfile. Die NLA generiert bei bei jeder Verbindungstrennung und Erstellung, egal ob WLAN, VPN, Kabel etc. ein Event und trägt es im genannten Protokoll ein.

Am Ende sind die Proxy Einstellungen nur Registrywerte. Das Regelwerk kann aber nach Integration der Richtlinie beliebig erweitert werden. Das Gute ist, der Proxy Eintrag selbst bleibt erhalten. Wir ändern nur die Checkbox und damit haben wir den einfachen An/Aus Schalter.

Kurfassung:

  1. Ein Script mit Regelwerk erstellen und zu einer EXE kompilieren. (EXE muss nicht sein, ist aber schöner als eine Batch)
  2. Die Datei per GPO an alle Clients verteilen
  3. Eine Aufgabe per GPO an alle Clients verteilen

1. Script: Ich baue es als AutoIT Script, darin ist Aut2Exe.exe enthalten und es ist leicht zu einer EXE zu kompilieren.

Woran erkenne ich das interne Netzwerk? Worin unterscheidet es sich vom externen?
-> Mein AD, oder mein DC ist von extern nicht anpingbar.
Wenn also das AD "pingbar" ist, dann bin ich intern und der Proxy ist an. Das war es schon. Jedes Netzwerk, in dem das AD nicht erreichbar ist, muss extern sein und der Proxy ist aus.

$var = Ping("gallier.ads",1000)
If @error = 0 Then
  RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyEnable","REG_DWORD","1")
Else
  RegWrite("HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings","ProxyEnable","REG_DWORD","0")
EndIf

Script speichern und mit Aut2Exe umwandeln. Ihr könnt auch noch die Homepage setzen, oder anhand eines bestimmten erreichbaren Servers einen alternativen Proxy definieren oder oder oder.

2. Datei kopieren
Ich habe die Datei ProxyAnAus.exe genannt und im NETLOGON hinterlegt und verteile sie nach C:\Windows. Ihr könnt auch die in den GP Preferences enthaltenen Variablen (Stichwort F3) verwenden.

Benutzerkonfiguration \ Einstellungen \ Windows-Einstellungen \ Dateien

3. Aufgabe verteilen
Wir müssen 3 Eventrigger definieren und die Events 10000 (Netzwerkverbindung hergestellt) und 10001 (Netzwerkverbindung getrennt) im NetworkProfile Protokoll abfangen, zusätzlich "Bei Anmeldung", und dann, wenn sie auftauchen die ProxyAnAus.exe starten lassen. Wichtig ist nur, daß die Aufgabe als der aktuell angemeldete Benutzer ausgeführt werden muss, dann der Proxy steht ja in seinem HKCU Anteil der Registry.

Benutzerconfiguration \ Einstellungen \ Windows-Einstellungen \ Geplante Aufgaben \ Geplante Aufgabe (mindestens Windows 7)

Allgemein: Wichtig: %LogonDomain%\%LogonUser% als Konto eintragen, dann wird immer der richtige Benutzer durch die Variable aufgelöst.

Trigger: Event 10000 und 10001 und bei Anmeldung definieren

Aktionen: Unsere ProxyAnAus.exe angeben.

Das wars. Ready to Proxy!! :-)