Table des matières

FTP Proxy Cache avec Frox

En quête d'un accélérateur pour accéder a ftp://ftp.dell.com qui est beaucoup trop lent mon goût.

Cache

Frox est un intéressant “proxy” et “cache” pour serveur FTP.

Par défaut, il peut fonctionner en mode transparent , mais ce n'est pas ce mode que je vais mettre en place.

~~READMORE~~

Installation

# aptitude update
# aptitude install frox

Préparer un petit répertoire pour que frox puisse y travailler.

# mkdir /var/spool/frox
# mkdir /var/spool/frox/cache
# chown nobody:nogroup /var/spool/frox/cache

Editer la conf /etc/frox.conf a loisir. Moi j'ai ça:

Listen 192.168.4.14

Port 2121

ResolvLoadHack wontresolve.doesntexist.abc

TcpOutgoingAddr 192.168.4.14

User nobody
Group nogroup

WorkingDir /var/spool/frox

PidFile /var/run/frox.pid

#APConv yes

BounceDefend yes

CacheModule local
CacheSize 1000                  # MB
MinCacheSize 65536              # Bytes
CacheAll yes

DoNTP yes

MaxForks 100
MaxForksPerHost 4

ACL Allow * - ftp.dell.com 21
ACL Deny * - *
Listen & TcpOutgoingAddr Parce que j'ai une conf avec plusieurs interfaces réseau
ACL je restreint a ce P*tain de ftp lent

Autoriser le daemon a demarrer en editant /etc/default/frox :

RUN_DAEMON=yes

Démarrer:

# /etc/init.d/frox restart              

En cas de besoin, pour être sur de tuer tout les daemons (forked) :

# killall frox

Test

Il faut que le client FTP se connecte a Frox : Ensuite, pour renseigner le serveur FTP a atteindre, il faudra le renseigné sur le champ “user”.

Exemple, pour le Ftp de Dell: anonymous@ftp.dell.com

En pratique, ça donne ( avec “pftp” pour “passive FTP” ) :

$ pftp ftp.dell.com.eez.fr 2121
220 Frox transparent ftp proxy. Login with username[@host[:port]]
Name (ftp.dell.com.eez.fr:thierry):   

Donc, je tape:

anonymous@ftp.dell.com

Et puis vient la suite:

331 Anonymous access allowed, send identity (e-mail name) as password.
Password:

Etc…

Je suis alors connecté via le service “frox”, sur le serveur ftp de Dell.
Les transferts seront cachés localement, comme le dit la conf de Frox.

Mais, si on utilise du NAT et un Firewall, il y a d'autres choses a faire encore…
Pour les autres: ça doit déjà fonctionner.

IpTables

Source:

Si ça ne fonctionne pas , c'est surement parce que l'on utilise le port 2121 qui n'est pas connu pour être un serveur FTP.

En conséquence, malgré que ip_conntrack_ftp et ip_nat_ftp soient chargé, ils n'effectuent par le traitement attendu pour un service FTP.

Il convient d'ajouter la liste des ports a “suivre” lors du chargement du module ip_conntrack_ftp .

Ce qui donne dans /etc/modules :

ip_conntrack_ftp ports=21,2121
ip_nat_ftp

Ou à la main:

# modprobe ip_conntrack_ftp ports=21,2121

Voila.

Je vous laisse le soin de définir les autres règles IpTables :-)

Squid en cache

On peut aussi utiliser “squid” en cache.

Il suffit de changer la conf du cache en ça:

CacheModule http
HTTPProxy 127.0.0.1:3128
MinCacheSize 65536
ForceHTTP no
CacheAll yes

Pour “squid” , j'ai juste augmenté maximum_object_size afin de cacher de “gros” fichiers.

Voila.