Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pf et ftp client en local sous OpenBSD 3.5

3 réponses
Avatar
Bengali
Salut,

je me prends le choux avec pf et le ftp et je n'arrive toujours
pas à faire du ftp depuis ma passerelle OpenBSD 3.5 vers Internet.
Depuis le réseau interne cela fonctionne normalement.

J'ai configuré ftp-proxy dans inetd :
127.0.0.1:ftp-proxy stream tcp nowait root
/usr/libexec/ftp-proxy ftp-proxy -V -m 55000 -M 57000 -t 300

Mon ip interne sur ma passerelle est disons 192.168.0.1

Mais quand je fais un
wget --bind-address=192.168.0.1 ftp://ftp.free.fr/...
depuis ma passerelle, cela ne fonctionne pas.

La connexion est faite en directe et natée mais ne passe pas
par ftp-proxy. Je ne comprends pas parceque ma config pf est la suivante:

nat on $ext_if from 192.168.0.0/24 to any -> ($ext_if:0)
rdr on $int_if proto tcp from 192.168.0.0/24 to any port 21 -> $loop_if
port 8081

J'ai inversé l'ordre et c'est pareil.
Je me suis dit que comme le paquet ne traversait pas l'interface interne
il n'était pas routé par rdr mais naté, j'ai
donc fait autrement. J'ai donc rajouté la règle suivante (avant les autres):
rdr on $ext_if proto tcp from 192.168.0.100 to any port 21 -> $loop_if
port 8081

Mais là non plus la connexion n'est pas routée vers ftp-proxy et se fait
par la nat directement.

Avez-vous une idée ?
Merci,
@+
bengali

3 réponses

Avatar
Serge Basterot
Salut,


'lut

La connexion est faite en directe et natée mais ne passe pas
par ftp-proxy. Je ne comprends pas parceque ma config pf est la suivante:

nat on $ext_if from 192.168.0.0/24 to any -> ($ext_if:0)
rdr on $int_if proto tcp from 192.168.0.0/24 to any port 21 -> $loop_if
port 8081
^^

C'est pas plutôt 8021 ?

--
Serge

Avatar
Bengali
Serge Basterot wrote:
Salut,



'lut


La connexion est faite en directe et natée mais ne passe pas
par ftp-proxy. Je ne comprends pas parceque ma config pf est la suivante:

nat on $ext_if from 192.168.0.0/24 to any -> ($ext_if:0)
rdr on $int_if proto tcp from 192.168.0.0/24 to any port 21 -> $loop_if
port 8081


^^
C'est pas plutôt 8021 ?

oui tu as raison c'est le 8021 dans la doc. Mais c'est pas ça

dans mon cas car le service ftp-proxy était configuré dans inetd
sur le port 8081. Je l'ai changé pour être conforme mais c'est toujours
pareil.
Je crois que je n'arriverai jamais à faire du ftp depuis ma
passerelle.

@+


Avatar
aanriot
Je crois que je n'arriverai jamais à faire du ftp depuis ma
passerelle.


Tu fais bien la bonne redirection vers ftp-proxy sur ton interface
interne, mais tes règles de rdr/nat ne sont pas suffisantes. Ce ne
sont que des translations, et il te faut en entrée et en sortie de
chaque interface des règles de filtrage (quatre au total); tu peux
utiliser pour la NIC interne :

pass in quick on $int_if inet proto tcp from 192.168.0.0 to any port
8021
flags S/SFRA keep state

et afin que le tes paquets puissent ressortir vers le Web après le
passage dans ftp-proxy :

pass out quick on $ext_if inet proto tcp from $ext_if to any user
proxy
flags S/SFRA keep

"user proxy" permet de ne pas ouvrir un pool de ports (ceux placés
dans inetd.cond) mais juste ceux qui sont nécessaires à ftp-proxy.

A toi de faire pareil pour le sens retour et de prendre en
considération les modes actif/passif.

Je te conseille de lire :

http://www.openbsd.org/faq/pf/fr/ftp.html
http://www.openbsd-france.org/documentations/OpenBSD-pf-ftp.html
http://www.openbsd-france.org/documentations/OpenBSD-ackpri.html