Gibt es eine Möglichkeit, den Netzwerk-Proxy systemweit festzulegen?

18

Wenn ich möchte, dass GNOME-Anwendungen (sowie Firefox und Chrome) über einen Proxy auf das Netzwerk zugreifen, muss ich nur gnome-network-propertieseine nette und einfache Benutzeroberfläche verwenden. Für andere Apps (z. B. APT, Transmission, XChat) muss ich ihre spezifischen Methoden verwenden.

Gibt es eine Möglichkeit, dies zu vermeiden, was ich in einem Netzwerk, in dem ein Proxy erforderlich ist (Hostname: Port), aktivieren und deaktivieren kann?

Tshepang
quelle
1
Ich denke, dass die http_proxyVariable das ist, wonach Sie suchen. Schauen Sie sich das Proxy Support Howto an.
Sakisk

Antworten:

11

Ich denke, dass so ziemlich jede Linux / Unix-Software, die Netzwerke verwendet, die Umgebungsvariablen http_proxyund ftp_proxyberücksichtigt. Je nachdem, wie Ihre Distribution eingerichtet ist, /etc/environmentwerden standardmäßig Login-Shells existieren und gelesen.

Sie können eine Zeile hinzufügen, in der es heißt

http_proxy=123.45.67.89:1011

in /etc/environmentleicht genug, aber Änderungen in dieser Datei dauern nur das nächste Mal , wenn Sie einen Shell - Prozess zu starten halten - und nur in diesem Shell - Prozess. Ich glaube nicht, dass Sie globale Variablen in einer anderen als Ihrer aktuellen Shell ändern können .

Shadur
quelle
1
... mit der bemerkenswerten Ausnahme von Firefox und Thunderbird askubuntu.com/a/23123
akraf - Reinstate Monica
und es scheint node auch nicht
Brad Parks
Ja, und das Neuladen der Shell bedeutet mit anderen Worten, dass Sie sich abmelden und für grafische Shells erneut anmelden müssen.
Himanshu Shekhar
6

Ich bin damit einverstanden, dass der Proxy-Server am besten mit der Umgebungsvariablen verwendet wird http_proxy, wie andere Antworten gezeigt haben. Leider wird die Umgebungsvariable http_proxy nicht von allen Anwendungen unterstützt, weshalb ich für einige Programme immer noch tsocks verwende, um mit LD_PRELOAD Netzwerkverbindungen zu erzwingen, einen SOCKS-Proxy zu durchlaufen.

jsbillings
quelle
3

Neben tsocks - für die AFAICT weiterhin das Starten von Programmen mit der richtigen Umgebung erfordert - sollten Sie tun2socks ausprobieren . Damit richten Sie eine TUN-Schnittstelle ein (dh eine neue Netzwerkschnittstelle, wie sie ein VPN erstellen würde) und alle dort gesendeten Pakete werden an Ihren SOCKS5-Server weitergeleitet. Anschließend richten Sie Ihre Systemrouten ein, um den Datenverkehr tatsächlich an diese zu senden. Scheint ein netter Ansatz zu sein.

( Über diesen Beitrag habe ich auch Redsocks gefunden . Dies scheint mir nicht so elegant zu sein, als würde ich eine TUN-Schnittstelle verwenden. ZB funktioniert UDP für den Anfang überhaupt nicht.)

natevw
quelle
3

Ich benutze dieses Tool , bei dem es sich im Grunde um ein paar Skripte handelt, um Einstellungen für verschiedene Anwendungen von einem Punkt aus zu konfigurieren.

PS: Ich habe dieses Tool geschrieben und gepflegt.

Himanshu Shekhar
quelle
2

Es gibt keine Komplettlösung. Jedes Programm verwendet seine eigene Methode, um eine Verbindung zu einem Proxyserver herzustellen.

Ich habe ein ähnliches Problem in meinem Büro. Ich fand, dass der beste Weg, dies zu tun, eine VPN-Verbindung ist. Wenn Sie eine Verbindung herstellen, wird der gesamte Netzwerkverkehr des Systems über das VPN geleitet. Wenn Sie keinen Zugriff auf einen VPN-Server haben, können Sie einen neuen manuell ausführen und ihn mit dem vorhandenen Proxyserver verbinden.

Wenn Sie eine Anwendung haben, die keinen Proxy unterstützt, können Sie so etwas wie socksify verwenden , um die Netzwerkverbindung zu unterbrechen .

Hilfe bei der
quelle
Sie haben also versucht , diese und gescheitert?
Tshepang
0

Ich habe ein ähnliches Problem, aber für mich wird ein systemweiter Proxy den Linux-Kernel ansprechen iptables. Das Hinzufügen und Entfernen von Weiterleitungsregeln in der iptablesNetzwerkschicht (bestimmte Adressen, Ports und Protokolle) ist die einzige Möglichkeit, einen systemweiten Proxy zu gewährleisten, der nicht durch anwendungsspezifische Einstellungen in der Anwendungsschicht außer Kraft gesetzt werden kann.

Nihad Nagi
quelle
0

Das hat bei mir funktioniert
vi /etc/environment:

http_proxy="http://username:password@proxysrv:8080/"
https_proxy="https://username:password@proxysrv:8080/"
ftp_proxy="ftp://username:password@proxysrv:8080/"
no_proxy=".mylan.local,.domain1.com,host1,host2"

auch
vi /etc/yum.conf:

proxy=http://proxysrv:8080
Shawn Jones
quelle