# HTTP-Replicator-Server / Client tauschen keine Packete aus

## Jefferson

Hallo an alle,

ich bin hier gerade dabei http-replicator aufzusetzen, um das mehrmalige runterladen des selben Packetes auf verschiedenen Rechnern abzustellen.

Ich habe das Programm nach der folgenden Anleitung sowohl auf dem Server, als auch auf dem ersten Client installiert und eingerichtet.

[url]http://de.gentoo-wiki.com/Download_Zwischenspeicher_fürs_LAN_-_Http-Replicator[/url]

Nachdem ich auf dem Server die Packete runtergeladen und nochmals /usr/bin/repcacheman ausgeführt hatte, wollte ich die selben Packete auf dem Client installieren, was jedoch nicht funktionierte. Statt einer Verbindung zum Server wurden die Packete wieder aus dem Internet runtergeladen   :Confused: 

Nach verschiedenen Versuchen die alle erfolglos blieben, habe ich neben der Suche hier im Forum auch unter Google gesucht und einige Hinweise gefunden, warum es nicht funktionieren könnte.

Ich habe jetzt fast alles ausprobiert und irgendwie klappt es immer noch nicht.

Zuerst dachte ich das läge an meiner lokalen Firewall, aber diese ist mittlerweile deaktiviert und aller Netzwerkverkehr ist uneingeschränkt erlaubt.

Die /etc/make.conf auf dem Server (Mars) sieht folgendermaßen aus:

```

http_proxy="http://mars:8080"

GENTOO_MIRRORS="http://linux.rz.ruhr-uni-bochum.de/download/gentoo-mirror/ "

```

Die /etc/make.conf auf dem Client (Mond) wie folgt:

```

http_proxy="http://mars:8080"

GENTOO_MIRRORS="http://mars:8080/usr/portage/"

```

Die /etc/conf.d/http-replicator wurde von mir dergestalt angepasst, dass nicht in /var/cache/http-replicator gesucht wird, sondern direkt in /usr/portage/distfiles. Grund hierfür liegt darin dass man damit - laut Aussage - das Ausführen von /usr/bin/repacheman sparen kann.

Anbei die /etc/conf.d/http-replicator auf dem Server als auch auf dem Client:

Server:

```

## Config file for http-replicator

## sourced by init scripts automatically

## GENERAL_OPTS used by repcacheman

## DAEMON_OPTS used by http-replicator

## Set the cache dir

GENERAL_OPTS="--dir /usr/portage/distfiles"

#GENERAL_OPTS="--dir /var/cache/http-replicator"

## Change UID/GID to user after opening the log and pid file.

## 'user' must have read/write access to cache dir:

GENERAL_OPTS="$GENERAL_OPTS --user portage"

## Don't change or comment this out:

DAEMON_OPTS="$GENERAL_OPTS"

## Config file for http-replicator

## sourced by init scripts automatically

## GENERAL_OPTS used by repcacheman

## DAEMON_OPTS used by http-replicator

## Set the cache dir

GENERAL_OPTS="--dir /usr/portage/distfiles"

#GENERAL_OPTS="--dir /var/cache/http-replicator"

## Change UID/GID to user after opening the log and pid file.

## 'user' must have read/write access to cache dir:

GENERAL_OPTS="$GENERAL_OPTS --user portage"

## Don't change or comment this out:

DAEMON_OPTS="$GENERAL_OPTS"

## Do you need a proxy to reach the internet?

## This will forward requests to an external proxy server:

## Config file for http-replicator

## sourced by init scripts automatically

## GENERAL_OPTS used by repcacheman

## DAEMON_OPTS used by http-replicator

## Set the cache dir

GENERAL_OPTS="--dir /usr/portage/distfiles"

#GENERAL_OPTS="--dir /var/cache/http-replicator"

## Change UID/GID to user after opening the log and pid file.

## 'user' must have read/write access to cache dir:

GENERAL_OPTS="$GENERAL_OPTS --user portage"

## Don't change or comment this out:

DAEMON_OPTS="$GENERAL_OPTS"

## Do you need a proxy to reach the internet?

## This will forward requests to an external proxy server:

## Use one of the following, not both:

#DAEMON_OPTS="$DAEMON_OPTS --external somehost:1234"

#DAEMON_OPTS="$DAEMON_OPTS --external username:password@host:port"

## Local dir to serve clients.  Great for serving binary packages

## See PKDIR and PORTAGE_BINHOST settings in 'man make.conf'

## --alias /path/to/serve:location will make /path/to/serve

## browsable at http://http-replicator.com:port/location

DAEMON_OPTS="$DAEMON_OPTS --alias /usr/portage/packages/All:All"

## Dir to hold the log file:

DAEMON_OPTS="$DAEMON_OPTS --log /var/log/http-replicator.log"

## Make the log messages less and less verbose.

## Up to four times to make it extremely quiet.

#DAEMON_OPTS="$DAEMON_OPTS --quiet"

#DAEMON_OPTS="$DAEMON_OPTS --quiet"

## Make the log messages extra verbose for debugging.

#DAEMON_OPTS="$DAEMON_OPTS --debug"

## The ip addresses from which access is allowed. Can be used as many times

## as necessary. Access from localhost is allowed by default.

DAEMON_OPTS="$DAEMON_OPTS --ip 192.168.178.*"

#DAEMON_OPTS="$DAEMON_OPTS --ip 10.*.*.*"

## The proxy port on which the server listens for http requests:

DAEMON_OPTS="$DAEMON_OPTS --port 8080"

```

Client:

```

## Config file for http-replicator

## sourced by init scripts automatically

## GENERAL_OPTS used by repcacheman

## DAEMON_OPTS used by http-replicator

## Set the cache dir

GENERAL_OPTS="--dir /usr/portage/distfiles"

#GENERAL_OPTS="--dir /var/cache/http-replicator"

## Change UID/GID to user after opening the log and pid file.

## 'user' must have read/write access to cache dir:

GENERAL_OPTS="$GENERAL_OPTS --user portage"

## Don't change or comment this out:

DAEMON_OPTS="$GENERAL_OPTS"

## Do you need a proxy to reach the internet?

## This will forward requests to an external proxy server:

## Use one of the following, not both:

#DAEMON_OPTS="$DAEMON_OPTS --external somehost:1234"

#DAEMON_OPTS="$DAEMON_OPTS --external username:password@host:port"

## Local dir to serve clients.  Great for serving binary packages

## See PKDIR and PORTAGE_BINHOST settings in 'man make.conf'

## --alias /path/to/serve:location will make /path/to/serve

## browsable at http://http-replicator.com:port/location

DAEMON_OPTS="$DAEMON_OPTS --alias /usr/portage/packages/All:All"

## Dir to hold the log file:

DAEMON_OPTS="$DAEMON_OPTS --log /var/log/http-replicator.log"

## Make the log messages less and less verbose.

## Up to four times to make it extremely quiet.

#DAEMON_OPTS="$DAEMON_OPTS --quiet"

#DAEMON_OPTS="$DAEMON_OPTS --quiet"

## Make the log messages extra verbose for debugging.

DAEMON_OPTS="$DAEMON_OPTS --debug"

## The ip addresses from which access is allowed. Can be used as many times

## as necessary. Access from localhost is allowed by default.

DAEMON_OPTS="$DAEMON_OPTS --ip 192.168.178.*"

#DAEMON_OPTS="$DAEMON_OPTS --ip 10.*.*.*"

## The proxy port on which the server listens for http requests:

DAEMON_OPTS="$DAEMON_OPTS --port 8080"

```

Wenn ich jetzt versuche mit dem Client vom Server ein Packet zu laden erhalte ich folgendes:

```

mond homer # emerge gentoo-sources

Calculating dependencies... done!

>>> Verifying ebuild Manifests...

>>> Emerging (1 of 1) sys-kernel/gentoo-sources-2.6.23-r8 to /

Adjusting permissions recursively: '/usr/portage/distfiles/.locks'

 * genpatches-2.6.23-9.extras.tar.bz2 RMD160 SHA1 SHA256 size ;-) ...                                           [ ok ]

>>> Downloading 'http://mars:8080/usr/portage/distfiles/linux-2.6.23.tar.bz2'

--16:23:32--  http://mars:8080/usr/portage/distfiles/linux-2.6.23.tar.bz2

           => `/usr/portage/distfiles/linux-2.6.23.tar.bz2'

Verbindungsaufbau zu 127.0.0.1:8118... verbunden.

Proxy Anforderung gesendet, warte auf Antwort... 404 Not Found

16:23:32 FEHLER 404: Not Found.

>>> Downloading 'http://www.uk.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2'

--16:23:32--  http://www.uk.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2

           => `/usr/portage/distfiles/linux-2.6.23.tar.bz2'

Verbindungsaufbau zu 127.0.0.1:8118... verbunden.

Proxy Anforderung gesendet, warte auf Antwort... 302 Found

Platz: http://www.uk.kernel.org/sites/ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2[folge]

--16:23:32--  http://www.uk.kernel.org/sites/ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2

           => `/usr/portage/distfiles/linux-2.6.23.tar.bz2'

Verbindungsaufbau zu 127.0.0.1:8118... verbunden.

Proxy Anforderung gesendet, warte auf Antwort... 200 OK

Länge: 45.488.158 (43M) [application/x-tar]

 0% [                                                                           ] 130.817       46.39K/s             

[58]+  Stopped                 emerge gentoo-sources

```

Offensichtlich bestand eine Verbindung zum Server, die aber nicht etabliert werden konnte und daher versucht Portage wieder das Packet aus dem Internet zu laden. Die Verbindung findet aber an Port 8118 statt und nicht an Port 8080 wie in der Config festgelegt. An Port 8118 läuft mein TOR mit Privoxy.

Ein Blick in die Logdatei auf dem Server zeigt, dass tatsächlich eine Anfrage vom Client stattgefunden hat.

```

19 Feb 2008 16:22:36 STAT: HttpClient 1 bound to 192.168.178.20

19 Feb 2008 16:22:36 INFO: HttpClient 1 direct request for /usr/portage/distfiles/linux-2.6.23.tar.bz2

19 Feb 2008 16:22:36 STAT: HttpClient 1 received 56 bytes

```

Netstat -an auf dem Server als auch dem Client zeigt an, das der Port 8080 offen ist

```

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN

```

Was mache ich also falsch?

Ein Hinweis hier im Forum unter

https://forums.gentoo.org/viewtopic-t-599651-highlight-httpreplicator.html

besagt, dass auf dem Server ein FTP-Server installiert sein sollte. 

Ist das wirklich so, weil davon im Howto unter

https://forums.gentoo.org/viewtopic-t-173226-highlight-httpreplicator.html

nichts steht.

Für jede Hilfe das Problem doch irgendwie zu lösen, wäre ich echt dankbar.

Grüße

Jefferson

----------

## think4urs11

1. http-replicatior muß _nur_ auf dem Server installiert werden; auf dem/n Clients ist es überflüssig

2. ändere (auf mond) GENTOO_MIRRORS="http://mars:8080/usr/portage/" zu GENTOO_MIRRORS="http://mars:8080/"

----------

## Jefferson

Hallo Think4UrS11,

danke für Deine Hilfe.

Ich habe jetzt auf dem Client erst einmal http-replicator mittels --unmerge deinstalliert, da er ja nicht auf dem Client installiert sein muss.

Nach Änderung der /etc/make.conf beim Client auf http://mars:8080/ habe ich es wieder probiert, ein bereits vorhandenes Packet "gentoo-sources" vom Server zu holen.

Wieder mit dem selben Ergebnis, dass er versucht, das Paket aus dem Internet zu laden   :Sad: 

Ich habe daraufhin auf dem Server in der /etc/conf.d/http-replicator unter der Option ## Set the cache dir wieder die Defaulteinstellung mit "GENERAL_OPTS=" --dir /var/cache/http-replicator" aktiviert und "GENERAL_OPTS= " --dir /usr/portage/distfiles" deaktiviert.

```

## Set the cache dir

#GENERAL_OPTS="--dir /usr/portage/distfiles"

GENERAL_OPTS="--dir /var/cache/http-replicator"

```

Beim nächsten Versuch genau das selbe Ergebnis. Wieder kein laden vom Server sondern wieder der Versuch, es aus dem Internet zu laden.

```

mond homer # emerge gentoo-sources

Calculating dependencies... done!

>>> Verifying ebuild Manifests...

>>> Emerging (1 of 1) sys-kernel/gentoo-sources-2.6.23-r8 to /

Adjusting permissions recursively: '/usr/portage/distfiles/.locks'

 * genpatches-2.6.23-9.extras.tar.bz2 RMD160 SHA1 SHA256 size ;-) ...                                      [ ok ]

>>> Downloading 'http://mars:8080/distfiles/linux-2.6.23.tar.bz2'

--18:04:15--  http://mars:8080/distfiles/linux-2.6.23.tar.bz2

           => `/usr/portage/distfiles/linux-2.6.23.tar.bz2'

Verbindungsaufbau zu 127.0.0.1:8118... verbunden.

Proxy Anforderung gesendet, warte auf Antwort... 404 Not Found

18:04:15 FEHLER 404: Not Found.

>>> Downloading 'http://www.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2'

--18:04:15--  http://www.de.kernel.org/pub/linux/kernel/v2.6/linux-2.6.23.tar.bz2

           => `/usr/portage/distfiles/linux-2.6.23.tar.bz2'

Verbindungsaufbau zu 127.0.0.1:8118... verbunden.

Proxy Anforderung gesendet, warte auf Antwort... 200 OK

Länge: 45.488.158 (43M) [application/x-tar]

 0% [                                                                      ] 348.214       38.16K/s    ETA 18:06

[64]+  Stopped                 emerge gentoo-sources

```

Die Log-Datei auf dem Server zeigt mir wieder an, dass eine Verbindung bestand (17:58 = Erster Versuch mit GENERAL_OPTS auf /usr/portage/distfiles, 18:03 zweiter Versuch mit GENERAL_OPTS auf /var/cache/http-replicator).

```

19 Feb 2008 17:58:40 STAT: HttpClient 2 bound to 192.168.178.20

19 Feb 2008 17:58:40 INFO: HttpClient 2 direct request for /distfiles/linux-2.6.23.tar.bz2

19 Feb 2008 17:58:40 STAT: HttpClient 2 received 56 bytes

19 Feb 2008 18:00:40 INFO: HttpReplicator terminated

19 Feb 2008 18:00:40 INFO: HttpReplicator started

19 Feb 2008 18:03:19 STAT: HttpClient 1 bound to 192.168.178.20

19 Feb 2008 18:03:19 INFO: HttpClient 1 direct request for /distfiles/linux-2.6.23.tar.bz2

19 Feb 2008 18:03:19 STAT: HttpClient 1 received 56 bytes

```

Was ich definitiv nicht verstehe ist, dass er immer versucht sich unter 127.0.0.1:8118 zu verbinden (siehe oben) anstatt mit 192.168.178.*:8080, obwohl als Port in der Server Konfig Port 8080 eingestellt ist   :Question: 

----------

## think4urs11

hmm deaktiver mal dein privoxy (oder such mal wo du wget&Co. dazu verdonnert hast dieses zu nutzen)

außerdem stört mich noch das distfiles in ...4:15--  http://mars:8080/distfiles/linux-2....; irgendwas stimmt mit deiner Konfig da noch nicht. Normalerweise solltest du wenn du mit dem Browser auf http://mars:8080/ gehst dort eine Auflistung aller bereits heruntergeladener Dateien finden, in keinem Fall aber einen Ordner distfiles.

----------

## Jefferson

FEHLER GEFUNDEN  :Very Happy: 

Dein Hinweis mit Privoxy war schon gut, aber das Problem war wget.

In der /etc/wget/wgetrc war zwar "Passives ftp" aktiviert aber nicht, dass wget über einen Proxy arbeiten soll.   :Embarassed: 

Nachdem ich hier  "use_proxy = on" und "http_proxy = http://mars:8080/" + "ftp_proxy = http://mars:8080" gesetzt hatte funktionierte alles tadellos   :Laughing: 

```

mond homer # emerge gentoo-sources

Calculating dependencies... done!

>>> Verifying ebuild Manifests...

>>> Emerging (1 of 1) sys-kernel/gentoo-sources-2.6.23-r8 to /

Adjusting permissions recursively: '/usr/portage/distfiles/.locks'

>>> Downloading 'http://mars:8080/distfiles/genpatches-2.6.23-9.extras.tar.bz2'

--09:46:18--  http://mars:8080/distfiles/genpatches-2.6.23-9.extras.tar.bz2

           => `/usr/portage/distfiles/genpatches-2.6.23-9.extras.tar.bz2'

Auflösen des Hostnamen »mars«.... 192.168.178.24

Verbindungsaufbau zu mars|192.168.178.24|:8080... verbunden.

Proxy Anforderung gesendet, warte auf Antwort... 200 OK

Länge: 147.992 (145K)

100%[================================================================>] 147.992       --.--K/s             

09:46:18 (14.02 MB/s) - »/usr/portage/distfiles/genpatches-2.6.23-9.extras.tar.bz2« gespeichert [147992/1479

92]

>>> Downloading 'http://mars:8080/distfiles/linux-2.6.23.tar.bz2'

--09:46:18--  http://mars:8080/distfiles/linux-2.6.23.tar.bz2

           => `/usr/portage/distfiles/linux-2.6.23.tar.bz2'

Auflösen des Hostnamen »mars«.... 192.168.178.24

Verbindungsaufbau zu mars|192.168.178.24|:8080... verbunden.

Proxy Anforderung gesendet, warte auf Antwort... 200 OK

Länge: 45.488.158 (43M)

36% [======================>                                          ] 16.504.448    11.25M/s             

[4]+  Stopped                 emerge gentoo-sources

```

Ich bin auch über den nachfolgenden Text im Gentoo Wiki drauf gekommen:

http://gentoo-wiki.com/HOWTO_Anonymity_with_Tor_and_Privoxy

```

Note on Speed 

Browsing through a proxy will slow down your connection. It's not a good idea to use tor with wget (which is used by emerge). 

Gentoo Blocks Tor Exit Node Traffic from its Official Distfile Servers (among others), and almost all Official Mirrors. (Note from reader: As of 26th June in 2006 there's no problem with it.) 

To turn off proxying for wget, change #use_proxy = on to use_proxy = off in /etc/wget/wgetrc around line 80.

```

Jetzt fehlt nur noch die entsprechende Firewall-Regel und die Welt ist wieder in Ordnung. 

Nochmals vielen Dank für Deine Hilfe, denn manchmal sieht man den Wald vor lauter Bäumen nicht mehr   :Wink: 

Grüße Jefferson

----------

## dertobi123

Anstelle die wget Konfiguration "global" zu verbiegen, lässt sich der http_proxy auch in /etc/make.conf nur für Portage setzen.

----------

## Jefferson

Danke für den Hinweis.

Was muss den dann in die /etc/make.conf eingetragen werden, damit ich die Konfiguration von wget nicht "verbiegen" muss?

----------

## think4urs11

Trag deinen Replicator-Server einfach als ersten (wahlweise auch als einzigen) bei GENTOO_MIRRORS auf den Clients ein.

----------

## Jefferson

Danke! wWrde ich machen und mal sehen ob es funktioniert.

----------

