// Datei: ./praxis/http-proxy/http-proxy.adoc

// Baustelle: Rohtext

[[http-proxy]]

== Paketverwaltung hinter einem http-Proxy ==

// aufbereitetes Rohmaterial von Annette -- so eine Art hübsche Einleitung zum Thema

// Stichworte für den Index
(((Proxy, Anwendungsfall)))
(((Proxy, Überblick)))
Oftmals wird in größeren Netzen der Zugang zum Internet über einen Proxy
Server -- häufig nur Proxy abgekürzt -- geregelt. Ein solcher Proxy ist
vergleichbar mit einem Pförtner, der den Datenfluss zwischen dem inneren
und äußeren Netzsegment steuert. 

// ToDo: Bild ergänzen

Konkrete Anwendungsfälle im Alltag sind bspw. Schulungsräume,
Bibliotheken und Internetcafès, die vorwiegend für Benutzer jüngeren
Alters gedacht sind. Keine Seltenheit ist dabei die Kombination mit
einem entsprechend konfigurierten Jugendschutzfilter wie bspw. IPCop.

=== Hintergrund ===

// Stichworte für den Index
(((Proxy, Hintergrund)))
Es gibt unterschiedliche Gründe, warum Proxies überhaupt betrieben
werden. Einerseits möchten Sie z.B. Traffic oder Übertragungszeit
sparen. Dabei werden Dateien nach der ersten Anfrage zwischengespeichert
(gecached) und somit nicht erneut langwierig oder kostenverursachend aus
dem externen Netzsegment geladen, bspw. dem Internet. Werden diese Daten
von einem Rechner im internen Netzsegment erneut angefordert, geht es
aus dem Cache des Proxies deutlich schneller.

Andererseits möchten Sie sicherstellen, dass nur bestimmte
Internetseiten besucht werden können oder gar nur von berechtigen
Nutzern abgerufen werden dürfen. Benötigt werden hier dann in der Regel
auch zusätzliche Authentifizierungsdaten, um über den Proxy darauf
zuzugreifen.

=== Varianten ===

// Stichworte für den Index
(((Proxy, SOCKS)))
(((Proxy, Varianten)))
Proxies existieren in verschiedenen Lebensformen. Neben transparenten
Proxies, von denen Sie als Benutzer in der Regel nichts mitbekommen
sollten, gibt es protokollunabhängige und protokollabhängige Proxies.
Ersteres sind bspw. SOCKS4- und SOCKS5-Proxies <<SOCKS>>, das zweite
hingegen HTTP-Proxies oder FTP-Proxies. Diese werden dann nur für das
jeweilige Transportprotokoll eingesetzt.

Ein Spezialfall ist ebenfalls `apt-cacher-ng` (siehe <<apt-cacher-ng>>).
Hierbei handelt es sich um einen Caching Proxy ausschließlich für
Debianpakete. Er behält die bereits angefragten Pakete im Cache, um sie
schneller an weitere Clients im Netz weitergeben zu können.
Ausführlicher gehen wir auf die unterschiedlichen Entwicklungen unter
``Einen APT-Cache einrichten'' in <<apt-cache>> ein.

=== Einen Proxy konfigurieren ===

// Stichworte für den Index
(((Proxy, unter Debian konfigurieren)))
Im Debian-Ökosystem gibt es unterschiedliche Stellen, wo Sie hinterlegen
können, dass ein Proxy überhaupt benutzt werden soll. Dazu zählen
zunächst die allgemeinen Umgebungsvariablen wie `export` und `profile`,
danach folgen die Einstellungen des Desktop-Environments <<proxyArch>>
und die der Anwendungen, wie z.B. in Firefox. Für die Paketverwaltung
kommt die Datei `/etc/apt/apt.conf` bzw. die modularisierte Variante
unter `/etc/apt/apt.conf.d/70debconf` ins Visier.

* Links:
** [1b] https://tools.ietf.org/html/rfc1928
** [4] man apt.conf  (da einfach mal nach proxy suchen)

// weiteres Material

=== APT über HTTP-Proxy ===

==== Konfigurationsdateien und Einstellungen ====

// Stichworte für den Index
(((/etc/apt/apt.conf)))
(((/etc/apt/apt.conf.d/70debconf)))
Für `apt` tragen Sie den Proxy in der Datei
`/etc/apt/apt.conf.d/70debconf` ein. Bei älteren
Debian-Veröffentlichungen ist es die Datei `/etc/apt/apt.conf`.
Nachfolgend sehen Sie den Eintrag für einen HTTP-Proxy namens
`proxyserver`, der auf den Port 8080 lauscht.

.Beispiel für einen Rechner `proxyserver` auf Port 8080
----
Acquire::http::Proxy "http://proxyserver:8080";
----

Obiges Beispiel beinhaltet lediglich die beiden essentiellen
Bestandteile -- den Namen des Proxyservers (`proxyserver`) und dem Port
(8080), auf dem der Dienst lauscht. Für eine Authentifizierung sind
zusätzlich ein Nutzername samt Passwort notwendig. Bitte beachten Sie,
dass dabei die Zugangsdaten im Klartext in der Konfigurationsdatei
hinterlegt sind. Nachfolgend sehen Sie das für den Nutzer `pakete` mit
dem Passwort `geheim`.

.Beispiel mit Zugangsdaten für Nutzer `pakete`
----
Acquire::http::Proxy "http://pakete:geheim@proxyserver:8080";
----

Nutzen Sie statt APT hingegen Synaptic, geben Sie den HTTP-Proxy in
einem separaten Konfigurationsdialog an. Diesen finden Sie unter dem
Menüpunkt Einstellungen -> Netzwerk -> Proxy-Server. Selektieren Sie
zuerst den Punkt ``Manuelle Proxy-Konfiguration'' und tragen danach den
Servernamen ohne Protokoll im oberen Eingabefeld ein. Neben dem
Eingabefeld befinden sich das Auswahlfeld für den Port sowie der Knopf
``Legitimierung''. Mit einem Mausklick auf den Knopf erhalten Sie ein
weiteres Dialogfenster, in dem Sie ihre Zugangsdaten für den Proxy
hinterlegen.

.Proxy-Einstellungen bei Synaptic
image::praxis/http-proxy/synaptic-proxy.png[id="fig.synaptic-proxy", width="50%"]

==== Schalter zur Steuerung des Cache-Verhaltens ====

* `No-Cache`: unter keinen Umständen die zwischengespeicherten Inhalte
verwenden
* `Max-Age`: Alter der Indexdatei in Sekunden
* `No-Store`: angefragte Daten nicht im Cache zwischenspeichern

==== Umgebungsvariablen ====

* welche Umgebungsvariablen brauche ich
** `http_proxy`

==== Schalter für apt-get ====

* Parameter / Schalter im direkten Aufruf für apt-get

// Aufruf noch überprüfen, ob das so geht
.Beispielaufruf zur Installation von `mc` via Proxy
----
# apt-get -o http::Proxy="http://proxyserver:8080" install mc 
----

* aus der Manpage zu `apt.conf` (Ausschnitt):

----
http::Proxy ist der zu benutzende Standard-HTTP-Proxy. Er wird
standardmäßig in der Form http://[[Anwender][:Passwort]@]Rechner[:Port]/
angegeben. Durch Rechner-Proxies kann außerdem in der Form
http::Proxy::<host> mit dem speziellen Schlüsselwort DIRECT angegeben
werden, dass keine Proxies benutzt werden. Falls keine der obigen
Einstellungen angegeben wurde, wird die Umgebungsvariable http_proxy
benutzt.
----

* Material:
** Setting up apt-get to use a http-proxy (https://help.ubuntu.com/community/AptGet/Howto#Setting_up_apt-get_to_use_a_http-proxy)
** Proxyserver (https://wiki.ubuntuusers.de/Proxyserver/)
** AptConf im Debian Wiki (https://wiki.debian.org/AptConf)

// Datei (Ende): ./praxis/http-proxy/http-proxy.adoc
