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

[PF] problème de syntaxe .. info non-trouvé dans le man

6 réponses
Avatar
Stéphane
Bonjour,

Oui je préfère annoncer dès le sujet que je me suis cassé la tete à chercher
avant de poster ici :-)
Mais bon à tout les coups il s'agit d'un truc tout bete qui m'échappe

Voici les lignes concernées du pf.conf :

============================================
iinv = "rl0" # Interface reliee au PC de l'invite
ip_iste = "192.168.1.1" # IP Interface reliee a Stephane
ip_ipat = "192.168.2.1" # IP Interface reliee a Patrick
ip_imar = "192.168.3.1" # IP Interface reliee a Marine
ip_iinv = "192.168.123.1" # IP Interface reliee a l'invite
ip_pub = "62.212.x.x" # IP publique Nerim
ip_imod = "10.0.0.1" # IP Interface reliee au modem

ip_del = "{" $ip_iste $ip_ipat $ip_imar $ip_iinv $ip_pub $ip_imod "}"

pass in quick on $iinv inet proto tcp from $ip_inv to ! $ip_del flags S/SA
modulate state
pass in quick on $iinv inet proto { udp, icmp } from $ip_inv to ! $ip_del
keep state
============================================

Il s'agit d'un pur problème de syntaxe.
Le soucis ce situe soit à la déclaration de ip_del (mais bon j'en doute,
j'ai repris la MEME syntaxe que sur monn ancienne passerelle où ça
fonctionnait), soit au niveau de "to ! $.."

Au cas où...
Le but des deux dernières lignes est de maintenir les connections
TCP/UDP/ICMP en cours sur l'interface $iinv quand ça vient de l'IP $ip_inv à
destination de tout sauf les IPs des différentes interfaces de la passerelle
(DELTA de son nom).

Biensûr je pourrais remplacer ces 2 lignes par:

block in quick on $iinv from $ip_inv to $ip_del
pass in quick on $iinv inet proto tcp from $ip_inv to any flags S/SA
modulate state
pass in quick on $iinv inet proto { udp, icmp } from $ip_inv to any keep
state

.. et ça revient au meme ...
.. et ça fonctionne...

Mais j'aurais aimé savoir où est-ce que je me plante dans ma premiere idée.

Merci à vous



Stéphane

6 réponses

Avatar
Stéphane
Note 1 : il s'agit du PF sur FreeBSD 5.2.1

Note 2 : j'ai repris la syntaxe de la macro-list qui était dans le pf.conf
de mon ancienne passerelle OpenBSD 3.3


Mais bon, je vois pas pourquoi ça poserai problème puisqu'avant tout il
sagit de PF et non de l'OS
Avatar
Stéphane
Voici les lignes concernées du pf.conf :

=========================================== > iinv = "rl0" # Interface reliee au PC de l'invite
ip_iste = "192.168.1.1" # IP Interface reliee a Stephane
ip_ipat = "192.168.2.1" # IP Interface reliee a Patrick
ip_imar = "192.168.3.1" # IP Interface reliee a Marine
ip_iinv = "192.168.123.1" # IP Interface reliee a l'invite
ip_pub = "62.212.x.x" # IP publique Nerim
ip_imod = "10.0.0.1" # IP Interface reliee au modem

ip_del = "{" $ip_iste $ip_ipat $ip_imar $ip_iinv $ip_pub $ip_imod "}"

pass in quick on $iinv inet proto tcp from $ip_inv to ! $ip_del flags S/SA
modulate state
pass in quick on $iinv inet proto { udp, icmp } from $ip_inv to ! $ip_del
keep state
===========================================
en enlevant purement et simplement le "!" (bien que ça n'aurait pas le sens

voulu), cela ne pose aucun problème.
Il est donc clair que cela vient de la syntaxe de la négation.

Merci pour votre aide


Stéphane

Avatar
Stéphane
A la simple lecture je ne vois aucune définition de ip_inv.


ip_inv est bel et bien déclaré, j'ai juste oublié de vous le montrer :-)

ip_inv = "192.168.123.123" # IP de l'invite

Avatar
Stéphane
dans le man on voit ce genre de syntaxe : ! ($ext_if)

j'ai testé : aucune différence.
Avatar
Xav
Le 2004-07-02, Stéphane a tapoté :
Il s'agit d'un pur problème de syntaxe.
Le soucis ce situe soit à la déclaration de ip_del (mais bon j'en doute,
j'ai repris la MEME syntaxe que sur monn ancienne passerelle où ça
fonctionnait), soit au niveau de "to ! $.."


D'après ce que je comprends de la grammaire du bazar, le ! ne s'applique
qu'à des tag, des adresses ou des interfaces. Pas à des listes comme tu
le fais.

xav

Avatar
Stéphane
D'après ce que je comprends de la grammaire du bazar, le ! ne s'applique
qu'à des tag, des adresses ou des interfaces. Pas à des listes comme tu
le fais.


effectivement, le problème vient peut etre du fait qu'il s'agit d'une liste
...

J'ai fait d'autres tests :
1) au lieu d'une liste de macro, j'ai testé avec une liste d'IP en déclarant
$ip_del de cette façon : ip_del= "{ 192.168.1.1, 192.168.2.1 }"
erreur.

2) j'ai alors tenter la régle en mettant directement _une_ IP , soit :
pass in quick on $iinv inet proto tcp from $ip_inv to ! 192.168.123.1 flags
S/SA modulate state
ça fonctionne.

3) j'ai tenté de mettre directement la liste d'IP, soit :
pass in quick on $iinv inet proto tcp from $ip_inv to ! { 192.168.123.1,
192.168.3.1 } flags S/SA modulate state
erreur.

On peut donc dire (définitivement?) qu'il s'agit bel et bien du fait que la
négation n'accepte pas de _liste_.

A propos, le message d'erreur exact est le suivant :

bash-2.05b# pfctl -e -f /etc/pf.conf
/etc/pf.conf:104: syntax error
pfctl: Syntax error in config file: pf rules not loaded


C'est con tout de meme ... va falloir que je mette une regle par IP au lieu
d'une regle avec une liste d'IP ... :-(