• Zielgruppen
  • Suche
 

Proxy-Nutzung unter Linux

Die meisten Linux-Applikationen nutzen die Einstellungen in Umgebungsvariablen als Proxy-Definition (manchmal auch als „System-Proxy“ bezeichnet). Die Umgebungsvariablen können in der Shell oder in Skripten gesetzt werden, üblicherweise werden sie zentral in /etc/environment hinterlegt:

# /etc/environment
# Setzen des LUH-Web-Proxy
#http_proxy=http://anon-proxy.rrzn.uni-hannover.de:3130
#http_proxy=http://filter-proxy.rrzn.uni-hannover.de:3129
#http_proxy=http://web-proxy.rrzn.uni-hannover.de:3128
http_proxy=http://secure-proxy.rrzn.uni-hannover.de:3131
https_proxy=http://secure-proxy.rrzn.uni-hannover.de:3131
ftp_proxy=http://secure-proxy.rrzn.uni-hannover.de:3131
no_proxy=localhost,127.0.0.1,uni-hannover.de
soap_use_proxy=on

Die Variablen-Namen sind wohl sprechend und wenig überraschend, zusätzlich werden hier auch SOAP-Webservices über den Proxy geschickt. Das Beispiel nutzt den sehr restriktiven Secure-Proxy, der für Server sinnvoll ist. Die Auswahl eines anderen Proxys geschieht durch entsprechende Umsetzung des Kommentar-Zeichens # und entsprechende Anpassungen für https und ftp (Variablenersetzungen wie https_proxy=$http_proxy funktionieren hier nicht!).

Damit die gemachten Änderungen aktiv werden, muss man sich einmal vom System ab- und am System erneut anmelden. Das Kommando-Zeilen-Tool wget kann dann gut genutzt werden, um den Proxy zu testen und ggf. Proxy-Fehlermeldungen zu sehen:

wget --spider 'http://debian.org'

Dieser Befehl sollte die Nutzung des Proxy darlegen, ggf. detaillierter mit der zusätzlichen Option "-d", was auch Proxy-Header anzeigt. Wenn man hingegen die URL "http://4btc.cc" (eine bekannte C&C-Site des Zeus-Trojaners) herunterladen will, sollte der Proxy das unterbinden.

Angabe für Debian-/Ubuntu-Paketverwaltung

Meist greift zwar die in /etc/environment gemachte Angabe für alle Skripte, Cron-Jobs, viele Anwendungen und eben auch die Paket-Verwaltung. Für die APT-basierte Paketverwaltung von Debian-Systemen kann aber eine explizite Angabe vorgenommen werden, indem eine Datei /etc/apt/apt.conf.d/10rrzn-proxy angelegt wird:

// /etc/apt/apt.conf.d/10rrzn-proxy
// Updates ueber den Whitelist-Proxy
Acquire::http::Proxy "http://secure-proxy.rrzn.uni-hannover.de:3131";
Acquire::https::Proxy "http://secure-proxy.rrzn.uni-hannover.de:3131";
Acquire::http::Proxy::ftp.rrzn.uni-hannover.de "DIRECT";

Acquire::http::Proxy::ftp.uni-hannover.de "DIRECT";
Acquire::http::Proxy::debian.rrzn.uni-hannover.de "DIRECT";

// gemaess man apt.conf funktioniert FTPoverHTTP-Proxy nur mit

// Umgebungsvariable ftp_proxy und nicht durch Angabe hier

//Acquire::ftp::Proxy "http://secure-proxy.rrzn.uni-hannover.de:3131";
Acquire::ftp::Proxy::ftp.rrzn.uni-hannover.de "DIRECT";

Acquire::ftp::Proxy::ftp.uni-hannover.de "DIRECT";

Müssen Quellen eingebunden werden die im Secure-Proxy keine Freigabe haben, so können diese über den filter-proxy genutzt werden. Hier am Beispiel von dl.gna.org:

// /etc/apt/apt.conf.d/11rrzn-proxy-extra

Acquire::http::Proxy::dl.gna.org "http://filter-proxy.rrzn.uni-hannover.de:3129";

Angabe für die Paketverwaltung bei Redhat-Derivaten

Auch bei Redhat-basierten Systemen wie z.B. Scientific-Linux kann für die Paketverwaltung explizit ein Proxy angegeben werden.

# /etc/yum.conf

proxy=http://secure-proxy.rrzn.uni-hannover.de:3131

 

Die Konfiguration von Repositories über die "mirrorlist" Direktive ist nicht vom Proxy unterstützt, es ist daher notwendig alle benötigten (enabled=1) Repositories mittels baseurl zu konfigurieren.

# /etc/yum.conf.d/X.repo

[X]

enabled=1

baseurl=http://ftp.uni-hannover.de/..

 

Alle notwendigen Repositories zum Betrieb können über den ftp Server der Universität bezogen werden.

  • EPEL - http://ftp.uni-hannover.de/pub/mirror/linux/epel/
  • EPEL-TESTING - http://ftp.uni-hannover.de/pub/mirror/linux/epel/testing/
  • SL - http://ftp.uni-hannover.de/pub/mirror/linux/scientific/

Für spezielle Anwendungen werden Ausnahmen im Proxy gepflegt:

  • OpenVZ - http://download.openvz.org/

Angaben für weitere Anwendungsfälle

wget

wget kann man Proxy Informationen via Parameter übergeben, unterstützt werden http_proxy, https_proxy sowie ftp_proxy. Permanent können die Parameter in der /etc/wgetrc sowie ~/.wgetrc gesetzt werden, wird aber nicht empfohlen.

wget -e use_proxy=yes -e http_proxy=http://web-proxy.rrzn.uni-hannover.de:3128 https://www.kernel.org/pub/linux/kernel/README

curl

curl --proxy http://web-proxy.rrzn.uni-hannover.de:3128 https://www.kernel.org/pub/linux/kernel/README

Ruby/gem

gem install --proxy http://web-proxy.rrzn.uni-hannover.de:3128 sequenceserver

Alternativ statisch via /etc/gemrc oder ~/.gemrc:

http_proxy: http://web-proxy.rrzn.uni-hannover.de:3128

Python/pip - Python3/pip3

Unter Python/pip ist es leider etwas versionsabhängig ob der Parameter "proxy" respektiert wird, es kann sein, dass nur die Umgebungsvariablen http_proxy&https_proxy verwendet werden.

pip --proxy http://web-proxy.rrzn.uni-hannover.de:3128 install requests

alternativ falls dies nicht funktioniert:

http_proxy=http://web-proxy.rrzn.uni-hannover.de:3128 https_proxy=http://web-proxy.rrzn.uni-hannover.de:3128 pip install requests

Für Python3/pip3 ist das analog umzusetzen.

Saltstack/bootstrap

Als Ergänzung zur offiziellen Dokumentation:

PROXY='http://web-proxy.rrzn.uni-hannover.de:3128' curl -o bootstrap-salt.sh -L -x "$PROXY" https://bootstrap.saltstack.com sudo sh bootstrap-salt.sh -G -H "$PROXY" git

Ruby/rvm

Ergänzend zur offiziellen Dokumentation:

http_proxy=http://web-proxy.rrzn.uni-hannover.de:3128 https_proxy=http://web-proxy.rrzn.uni-hannover.de:3128 curl -sSL https://get.rvm.io | sudo -E bash -s stable