Wie ändere ich meine Proxy-Einstellungen in Abhängigkeit von dem Netzwerk, mit dem ich verbunden bin?


20

Für das Unternehmensnetzwerk meines Unternehmens muss ich einen Netzwerk-Proxy einrichten, um auf das Netzwerk zuzugreifen. Wenn ich jedoch an einem anderen Ort bin, brauche ich diesen nicht. Die Proxy-Einstellungen in Ubuntu (System -> Einstellungen -> Proxy-Server) ermöglichten es mir, "Orte" zu erstellen, die ich manuell auswählen kann. Dann habe ich einen "Standard" -Standort (ohne Proxy) und einen "Arbeits" -Standort (mit Proxy meines Unternehmens).

Gibt es eine Möglichkeit, Ubuntu zu veranlassen, den "Arbeits" -Ort basierend auf der von mir verwendeten Verbindung automatisch auszuwählen? Ich dachte, ich könnte das IP-Subnetz (sehr spezifisch) verwenden, um festzustellen, wo ich bin, aber ich habe keine Ahnung, wie ich es einrichten soll ...

Bearbeiten: Ich muss die Proxy-Einstellungen unbedingt auf Systemebene festlegen. Alle meine Netzwerkverbindungen (IMAP, SMTP, Chat usw.) müssen den Proxy durchlaufen. Nicht nur der Webbrowser.

Antworten:


7

Ich kann mir eine Möglichkeit vorstellen, aber die Einrichtung wird etwas dunkel.

Grundsätzlich könnten Sie eine PAC- Datei verwenden

Installieren Sie einen Webserver auf Ihrem System, jeder kleine Webserver reicht aus, Sie brauchen kein riesiges System wie Apache.

Erstellen Sie eine Datei wpad.datmit PAC-Anweisungen, die auf der Basis Ihrer Quelladresse übereinstimmen, und konfigurieren Sie Ihr System so, dass der richtige Proxy verwendet wird.

Konfigurieren Sie in Firefox den Proxy so, dass er auf Ihre lokale PAC-Datei verweist. Es wäre wahrscheinlich so etwas wie http://localhost/wpad.dat.

Ihre PAC-Datei könnte ungefähr so ​​aussehen ( ungetestet ). Weitere PAC-Beispiele finden Sie hier .

function FindProxyForURL(url, host) {   
  // If on a internal/LAN IP address, send traffic direct.
  if (isInNet(myIpAddress(), "10.10.1.0", "255.255.255.0"))
  {        
    return "PROXY 1.2.3.4:8080; PROXY 4.5.6.7:8080; DIRECT";
  }
  else
  {
    return "DIRECT";
  }
}

Ich habe es noch nie ausprobiert und bin nicht in der Lage, ein System zu testen. Möglicherweise können Sie die PAC-Datei sogar mithilfe einer file://URL in Firefox angeben. Dies bedeutet, dass Sie die Einrichtung des Webservers überspringen können.

Natürlich gibt es auch die schnelle und einfache Lösung, aber Sie müssen sich ein wenig anstrengen, wenn Sie zwischen den Standorten wechseln. Installieren Sie die Quick Proxy Firefox-Erweiterung und klicken Sie auf die Schaltfläche in der Symbolleiste, um den Proxy ein- oder auszuschalten. Wenn Sie bereit sind, mit einer Firefox-Erweiterung umzugehen , können Sie auch FoxyProxy ausprobieren . Es unterstützt die Einrichtung mehrerer Proxy-Profile und Sie können problemlos zwischen Profilen wechseln.


Interessant ... Ich muss testen. Ich werde dir sagen, wie es ausgeht. Ich denke, die Firefox-Erweiterung reicht jedoch nicht aus: Der Proxy wird für alle Protokolle verwendet, nicht nur für HTTP. Dann brauche ich es auch für Empathie, Evolution, alles.
Little Jawa

Oh, und noch etwas. Sie könnten den IT-Mitarbeiter bitten, WPAD einzurichten. Dann können Sie einfach die automatische Proxy-Option verwenden.
Zoredache

Nun ... Ich fürchte, es ist keine Option, die IT dazu zu bringen, irgendetwas zu tun. Ich kann eine Anfrage stellen, aber ich werde mit Sicherheit nichts sehen. Keine geschäftliche Rechtfertigung bedeutet keine Ressource, um dies zu tun. Und ich werde es schneller selbst machen als eine Begründung aufzuschreiben :-)
Little Jawa

Okay. Nach einigem Nachlesen bin ich mit dieser Lösung nicht zufrieden. Es scheint, als würde es funktionieren (ich habe es nicht versucht), aber es wäre nicht systemweit verfügbar. Es würde nur für den Webbrowser funktionieren, da (laut findproxyforurl.com/index.html ) das System nur im Webbrowser unterstützt wird (weil es auf Javascript basiert).
Little Jawa

5

In Ubuntu 10.10 funktioniert das .pac-Skript gut. Wie Zoredache erklärte, richten Sie einen Webserver ein, legen Sie dort eine Pac-Datei ab, öffnen Sie System-> Preferences-> Network Proxy und setzen Sie die "Autoconfiguration URL" auf den Speicherort der Pac-Datei.

Beispiel einer PAC-Datei, die nach der eigenen IP-Adresse sucht: /var/www/selectProxy.pac:

function FindProxyForURL(url, host)
 {
 if (myIpAddress() == "192.168.22.63") { 
 return "PROXY 192.168.22.8:8080";
 }
 else {
 return "DIRECT";
 }
 }

In den Netzwerk-Proxy-Einstellungen lautet die URL:

http://localhost/selectProxy.pac

3

Als Ergänzung zu Zoredaches Antwort können Sie ein Skript in /etc/network/if-up.d verwenden, um ein Snippet in /etc/profile.d/ zu generieren, das Ihre Proxy-Shell-Variablen enthält. Beachten Sie, dass dies nur mit neuen Shells funktioniert.

Zusätzlich kann diese Methode verwendet werden, um eine WPAD-Datei zu generieren, auf die Sie einen Browser verweisen können, der dies unterstützt.


2

Dies ist ein ziemlich alter Beitrag, aber ich habe ihn gefunden. Schauen Sie mal rein : http://marin.jb.free.fr/proxydriver/

Sie können das für Ubuntu bereitgestellte .deb-Paket installieren. Dies ist im Grunde ein Shell-Skript, das die Umgebungsvariablen ändert, wenn sich Ihr Netzwerk ändert. Sie können die Einstellungen für jedes Netzwerk konfigurieren, indem Sie die in (automatisch) erstellten Konfigurationsdateien bearbeiten/etc/proxydriver.d/


2
Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Eliah Kagan

0

Ich habe das gleiche Problem. Bitte verallgemeinern Sie alle Antworten auf meine Situation.

Ich verwende meinen Laptop zu Hause über WLAN: - Immer die statische IP-Adresse der eth1-Schnittstelle (192.168.1.10)

Wenn ich zur Arbeit gehe, schließe ich Folgendes an: - Immer die dynamische IP-Adresse der eth0-Schnittstelle (10.10.xx.xx) UND einen Proxy: 10.10.123.123 Port 8888

Ich möchte, dass Ubuntu die IP-Adresse und den Proxy automatisch basierend auf der von mir verwendeten Schnittstelle einstellt.

(Ich habe in / etc / network / interfaces herumgespielt [siehe "man interfaces" und /etc/resolv.conf ohne Erfolg.


1
Wenn ich verstehe: Ihre WLAN-Karte hat eine statische IP - dann ist sie bereits "automatisch" eingerichtet. Und Ihr kabelgebundenes Netzwerk wird über DHCP eingerichtet - was auch automatisch geschieht ... Was möchten Sie dann in Bezug auf die IP-Einstellungen hinzufügen? Ich verstehe den Proxy-Bedarf, aber nicht die IP.
Little Jawa

Weißt du, ich denke du hast recht. Nach den Ferien bin ich wieder bei der Arbeit und es scheint, als würde es automatisch funktionieren. Ich denke, dass das einzige Problem der Proxy ist. Ich werde morgen mehr untersuchen.

0

Ich verwende den PAC-Dateiansatz und er funktioniert gut zum Browsen, aber nicht so gut für viele andere Anwendungen, die PAC-Dateien nicht verstehen. Ich vermute, wenn eine App über die API nach "Proxy-Konfiguration" fragt, erhalten sie nur die PAC-Datei-URL zurück, wenn Sie eine verwenden.

Für Benutzeranwendungen, die entweder keine Proxy-Unterstützung haben oder PAC-Dateien nicht verstehen (wie Empathy), verwende ich tsocks (weil ich einen SSH-Tunnel für die Proxy-Unterstützung verwende).

Das Verknüpfen einer JavaScript-Engine oder eines PAC-Parsers mit jeder Anwendung, die die grundlegende Proxy-Konfiguration unterstützt, scheint übertrieben. Dies scheint ein Fall zu sein, der von der Unterstützung einiger zugrunde liegender Plattformen mit einem API-Aufruf profitieren könnte, der die PAC-Datei tatsächlich interpretiert und das Ergebnis anstelle der URL zurückgibt.


0

Dies ist ein alter Beitrag zu diesem Zeitpunkt, aber ich bin hierher gekommen, um einen Weg zu finden, dies zu tun, und habe eine andere Antwort gefunden. Die Antwort, mit der ich arbeite, liegt in einem Paket mit dem Namen 'whereami'. Sie müssen das Subnetz Ihrer Arbeit in der Datei detect.conf definieren und anschließend den Proxyserver in der Datei whereami.conf definieren. Sollte funktionieren, und ich werde mit allen Problemen posten, die ich habe.

Viel Glück!


1
Willkommen bei Ask Ubuntu! Also ... wie würde das eigentlich jemand machen? Können Sie Anweisungen geben? Im Moment ist dies nicht wirklich die Antwort auf die Frage ...
Eliah Kagan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.