OVH Cloud OVH Cloud

[OpenBSD] problème d'activation de pf

4 réponses
Avatar
vincent Heurteaux
Bonjour à tous,
J'utilise une vieille machine comme routeur ADSL depuis quelques temps
déjà (obds 3.0), et en passant à OpenBDS 3.4 (réinstallation complète)
j'ai décidé de revoir un peux les configs que j'utilisais. C'est ainsi
que j'ai décidé de passer l'activation de pppoe de /etc/rc.local sur
/etc/netstart en utilisant le script suivant : .
.
.
echo -n "Trying to establish PPPoE DSL"; ppp -ddial pppoe for i in 19 18
17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0; do
sleep 5
echo -n.$i"
if /usr/local/sbin/adsl-status>/dev/null; then
break
fi
done
echo
/usr/local/sbin/adsl-status

Avec pour adsl-status :

#!/bin/sh

IP=$(/sbin/ifconfig tun0 | awk '/netmask/{print $2}')

if [ -z "$IP" ]; then
echo "ADSL link is down."
exit 1
else
echo "ADSL is up, IP address $IP"
exit 0
fi

Ceci fait, j'ai donc décidé de me passer des lancements de services
présents dans mon ppp.linkup, et d'utiliser rc.conf puisque la config
semblait s'y prêter.
L'activation de bind s'est faite sans problèmes, mais pf avait un
comportement bizarre. Un pfctl -sr ne me montrait pas les règles
habituelles, mais plutôt 4 ou 5 règles que j'ai retrouvées dans /etc/rc
insérées dans dans ce qui me semble être le script de lancement de pf.
Voici la section en question :
echo 'setting tty flags'
ttyflags -a

if [ "X${pf}" != X"NO" ]; then
RULES="block all"
RULES="$RULES\npass on lo0"
RULES="$RULES\npass in proto tcp from any to any port 22 keep state"
RULES="$RULES\npass out proto { tcp, udp } from any to any port 53 keep state"
RULES="$RULES\npass out inet proto icmp all icmp-type echoreq keep state"
case `sysctl vfs.mounts.nfs 2>/dev/null` in
*[1-9]*)
# don't kill NFS
RULES="scrub in all no-df\n$RULES"
RULES="$RULES\npass in proto udp from any port { 111, 2049 } to any"
RULES="$RULES\npass out proto udp from any to any port { 111, 2049 }"
;;
esac
echo $RULES | pfctl -f - -e
fi
Ce code se trouvant avant le script de démarrage du réseau, j'ai pensé
que pf ne trouvant pas de connexion active, celui-ci s'activait de façon
restrictive, au détriment de ma config perso.

Si quelqu'un pouvait m'expliquer comment faire en
sorte d'activer pf par le biais de rc.conf dans ce cas de figure, ou du
moins me donner une explication de ce comportement...

merci d'avance.

4 réponses

Avatar
zobe
Slt,

Pourquoi souhaites-tu lancer ta connexion avant le démarrage du réseau
?
Parce que tu as une IP dynamique ?

Maintenant pf gère ça très bien !

When specifying an interface name for the translation address as
above, the IP address is determined at pf.conf load time, not on the
fly. If you are using DHCP to configure your external interface, this
can be a problem. If your assigned IP address changes then NAT will
continue translating outgoing packets using the old IP address. This
will cause outgoing connections to stop functioning. To get around
this, you can tell PF to automatically update the translation address
by putting parentheses around the interface name:
nat on ext_if from int_if/24 to any -> (ext_if)
There is one major limitation to doing this: Only the first IP alias
on an interface is evaluated when the interface name is placed in
parentheses

Avec (ext_if) ton nat sera reloader automatiquement, plus besoin de se
servir du ppp.linkup pour recharger le nat.
Avatar
vincent Heurteaux
Pas du tout, comme ma connexion pppoe se lance lors de l'initialisation du
réseau (netstart), j'en ai déduis que je devais me trouver dans la même
situation que si ma machine était une simple passerelle dans un lan,
auquel cas il me serait alors possible de démarrer les services de façon
conventionnelle c'est à dire via rc.conf.
Si ça fonctionne pour Bind, ce n'est pas le cas pour PF.
Ceci dit mon adresse IP est fixe.
Avatar
mips
On Sat, 10 Jan 2004 23:21:38 +0100
vincent Heurteaux wrote:

Pas du tout, comme ma connexion pppoe se lance lors de
l'initialisation du réseau (netstart), j'en ai déduis que je devais
me trouver dans la même situation que si ma machine était une simple
passerelle dans un lan, auquel cas il me serait alors possible de
démarrer les services de façon conventionnelle c'est à dire via
rc.conf. Si ça fonctionne pour Bind, ce n'est pas le cas pour PF.
Ceci dit mon adresse IP est fixe.


Dans le cas du pppoe, pfctl doit etre lance par ppp.linkup pour que le
tunnel soit correctement pris en compte.

mips

Avatar
vincent Heurteaux
Ok, donc je laisse pfctl dans ppp.linkup.
merci