OVH Cloud OVH Cloud

[FreeBSD] pf + nat + jail = réseau qui se blo

1 réponse
Avatar
n
bonjour,

(je précise que je suis relativement débutant sous BSD ;)

voila, j'essaie de mettre en place une gateway sous FreeBSD 5.3,
comportant 3 jails (ftp, web, et mail). le tout utilise pf pour le
nat.

le soucis, c'est que quand j'essaie d'accéder au serveur web, au bout
d'une minute ou deux le nat ne fonctionne plus, et je dois rebooter la
machine pour le récupérer.
nb: je relance avec /etc/rc.d/pf restart, peut être que ce n'est pas
suffisant?

quelqu'un a-t-il eu un problème similaire ?

d'avance, merci!

mon /etc/pf.conf:
--------------------------------------------------------------
# macros
int_if = "rl0"
ext_if = "xe0"

tcp_services = "{ 20, 21, 22, 80 }"
icmp_types = "echoreq"

priv_nets = "{ 127.0.0.0/8, 192.168.1.0/16, 192.168.2.0/16 }"
int_net = "192.168.1.0/16"
ftp = "192.168.2.1"
web = "192.168.2.2"
mail = "192.168.2.3"

my_ip= "82.228.50.182"

# options
set block-policy return
set loginterface $ext_if

# scrub
scrub in all

# nat/rdr
nat on $ext_if from $int_if:network to any -> ($ext_if)

rdr proto tcp from any to $my_ip port 80 -> $web port 80

# filter rules
block all

pass quick on lo0 all
#pass quick on rl0 all

block drop in quick on $ext_if from $priv_nets to any
block drop out quick on $ext_if from any to $priv_nets

pass in on $ext_if inet proto tcp from any to ($ext_if) \
port $tcp_services flags S/SA keep state

pass in inet proto icmp all icmp-type $icmp_types keep state

pass in on $int_if from $int_if:network to any keep state
pass out on $int_if from any to $int_if:network keep state

pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state
--------------------------------------------------------------

1 réponse

Avatar
Jean Bernard Root
nico wrote:
bonjour,

(je précise que je suis relativement débutant sous BSD ;)

voila, j'essaie de mettre en place une gateway sous FreeBSD 5.3,
comportant 3 jails (ftp, web, et mail). le tout utilise pf pour le
nat.


pass in on $int_if from $int_if:network to any keep state
pass out on $int_if from any to $int_if:network keep state

pass out on $ext_if proto tcp all modulate state flags S/SA
pass out on $ext_if proto { udp, icmp } all keep state


Je ne connais pas pf, mais avec ipf, les deux premières règles sont le
meilleur moyen de remplir votre table d'état (les flags complémentaires
sur les paquets TCP dans les règles qui suivent sont indispensables,
sinon il crée un poste dans la table pour chaque paquet, au lieu du
paquet qui établit la connexion).

Avez-vous vérifié la dite table quand ça bloque (ipfstat -s avec ipf) ?