[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [obsdfr-misc] Re: PF et plusieurs fournisseur d'accès Internet



Le 18 novembre 2009 00:31, Raphael Berlamont
<raphael POINT berlamont AT raphux.com> a écrit :
> Le mardi 17 novembre 2009 à 14:05 +0100, Laurent Cheylus a écrit :
>> C'est bien "reply-to" qu'il faut utiliser pour spécifier la gateway de
>> sortie pour les paquets retour (SYN/ACK en réponse à la connexion
>> entrante vers vos serveurs). Effectivement, il n'y a pas beaucoup de doc
>> sur le sujet (pas d'exemple dans la manpage pf.conf, ni dans la FAQ, pas
>> mieux dans le "Book of PF"...).
>
> Ni dans le bouquin de Jacek Artymiak...
>
>> Extrait de la manpage pf.conf :
>>
>> reply-to
> [...]
>
> Sans un exemple pour étayer l'explication, c'est dur.
>
>> Voir ce post qui donne un exemple de règle PF avec reply-to :
>>
>> http://lists.freebsd.org/pipermail/freebsd-pf/2005-November/001615.html
>
> Voici ce que j'ai essayé :
> =====================
> nat log (all) on $WAN_IF from $LAN_NETWORK to any port { http } -> \
>        ($WAN_FAIb_CARP_IF)
> nat log (all) on $WAN_IF from $LAN_NETWORK to any -> \
>        ($WAN_FAIa90_CARP_IF)
>
> rdr log (all) on $WAN_IF proto tcp from any to $FAIa_IP_MAIN \
>        port 8443 -> $DEMO_IP port https
>
> pass out log (all) all
> pass in quick log (all) on $WAN_IF \
>        reply-to ( $WAN_FAIa90_CARP_IF 142.18.76.89 ) proto tcp \
>        from any to $DEMO_IP port { http, https } flags S/SA
> =====================
>
> J'ai maintenant un comportement étrange, plus rien n'apparait sur
> l'interface pflog en sur le port 8443 :
> =====================
> OpenBSD-4.5 anubisA ~ # tcpdump -vvvv -nettti pflog0 host 88.191.98.203 and port 8443
> tcpdump: listening on pflog0, link-type PFLOG
> ^C
> 2799 packets received by filter
> 0 packets dropped by kernel
> OpenBSD-4.5 anubisA ~ #
> =====================
>
> Par contre, si je filtre sur le port de redirection interne :
> =====================
> OpenBSD-4.5 anubisA ~ # tcpdump -vvvv -nettti pflog0 host 88.191.98.203 and port 443
> tcpdump: listening on pflog0, link-type PFLOG
> Nov 17 23:33:56.568765 rule 39/(match) [uid 0, pid 16354] pass in on vr0: 88.191.98.203.41632 > 10.149.0.200.443: S 1086982160:1086982160(0) win 5840 <mss 1460,sackOK,timestamp 3906699572[|tcp]> (DF) (ttl 54, id 35108, len 60)
> Nov 17 23:33:56.568858 rule 15/(match) [uid 0, pid 16354] pass out on vr2: 88.191.98.203.41632 > 10.149.0.200.443: S 1086982160:1086982160(0) win 5840 <mss 1460,sackOK,timestamp 3906699572[|tcp]> (DF) (ttl 53, id 35108, len 60)
> Nov 17 23:33:56.569409 rule 15/(match) [uid 0, pid 16354] pass in on vr2: 10.149.0.200.443 > 88.191.98.203.41632: S 276258896:276258896(0) ack 1086982161 win 5792 <mss 1460,sackOK,timestamp 158753551[|tcp]> (DF) (ttl 64, id 0, len 60)
> Nov 17 23:33:56.569462 rule 11/(match) [uid 0, pid 16354] rdr out on vr0: 10.149.0.200.443 > 88.191.98.203.41632: S 276258896:276258896(0) ack 1086982161 win 5792 <mss 1460,sackOK,timestamp 158753551[|tcp]> (DF) (ttl 63, id 0, len 60)
> [...]
> ^C
> 1876 packets received by filter
> 0 packets dropped by kernel
> OpenBSD-4.5 anubisA ~ #
> =====================
> On voit bien le paquet qui arrive, qui est ensuite translaté en interne,
> puis revenir vers l'interface externe.
>
> Seulement, lorsque je capture vr0, je ne vois rien ressortir (en
> filtrant sur le port d'écoute externe) :
> =====================
> OpenBSD-4.5 anubisA ~ # tcpdump -vvvv -nettti vr0 host 88.191.98.203 and \( port 8443 or port 443 \)
> tcpdump: listening on vr0, link-type EN10MB
> Nov 18 00:19:14.922294 00:1d:a2:c2:ce:60 00:00:5e:00:01:04 0800 74: 88.191.98.203.54136 > 142.18.76.90.8443: S [tcp sum ok] 757957628:757957628(0) win 5840 <mss 1460,sackOK,timestamp 3907515101 0,nop,wscale 7> (DF) (ttl 54, id 28961, len 60)
> ^C
> 6087 packets received by filter
> 0 packets dropped by kernel
> OpenBSD-4.5 anubisA ~ #
> =====================
>
> Par contre, si je filtre sur le port 443 sur l'interface interne, j'ai
> ceci :
> =====================
> OpenBSD-4.5 anubisA ~ # tcpdump -vvvv -nettti vr2 host 88.191.98.203 and port 443
> tcpdump: listening on vr2, link-type EN10MB
> Nov 17 23:35:53.790108 00:00:24:cb:58:de 00:0c:29:3f:11:6f 0800 74: 88.191.98.203.47173 > 10.149.0.200.443: S [tcp sum ok] 2929174408:2929174408(0) win 5840 <mss 1460,sackOK,timestamp 3906734740 0,nop,wscale 7> (DF) (ttl 53, id 44316, len 60)
> Nov 17 23:35:53.790715 00:0c:29:3f:11:6f 00:00:5e:00:01:02 0800 74: 10.149.0.200.443 > 88.191.98.203.47173: S [tcp sum ok] 421952315:421952315(0) ack 2929174409 win 5792 <mss 1460,sackOK,timestamp 158782852 3906734740,nop,wscale 7> (DF) (ttl 64, id 0, len 60)
> Nov 17 23:35:56.794351 00:0c:29:3f:11:6f 00:00:5e:00:01:02 0800 74: 10.149.0.200.443 > 88.191.98.203.47173: S [tcp sum ok] 421952315:421952315(0) ack 2929174409 win 5792 <mss 1460,sackOK,timestamp 158783603 3906734740,nop,wscale 7> (DF) (ttl 64, id 0, len 60)
> [...]
> ^C
> 24098 packets received by filter
> 0 packets dropped by kernel
> OpenBSD-4.5 anubisA ~ #
> ====================
>
> Pour rappel, je ne vois rien ressortir sur vr0, quel que soit le port
> (8443 ou 443) :
> ====================
> OpenBSD-4.5 anubisA ~ # tcpdump -vvvv -nettti vr0 host 88.191.98.203 and \( port 8443 or port 443 \)
> tcpdump: listening on vr0, link-type EN10MB
> Nov 18 00:23:16.802093 00:1d:a2:c2:ce:60 00:00:5e:00:01:04 0800 74: 88.191.98.203.41941 > 142.18.76.90.8443: S [tcp sum ok] 257437682:257437682(0) win 5840 <mss 1460,sackOK,timestamp 3907587661 0,nop,wscale 7> (DF) (ttl 54, id 8639, len 60)
> Nov 18 00:23:17.801615 00:1d:a2:c2:ce:60 00:00:5e:00:01:04 0800 74: 88.191.98.203.41942 > 142.18.76.90.8443: S [tcp sum ok] 275041377:275041377(0) win 5840 <mss 1460,sackOK,timestamp 3907587962 0,nop,wscale 7> (DF) (ttl 54, id 49947, len 60)
> ^C
> 4701 packets received by filter
> 0 packets dropped by kernel
> OpenBSD-4.5 anubisA ~ #
> ====================
>
> Alors que, sans changer les règles, les connexions initiées de
> l'intérieur (à partir du serveur interne concerné) sont correctement
> nattées :
> ====================
> OpenBSD-4.5 anubisA ~ # tcpdump -vvvv -nettti pflog0 host 88.191.98.203 and port 80
> tcpdump: listening on pflog0, link-type PFLOG
> Nov 18 00:08:26.178774 rule 170/(match) [uid 0, pid 8113] pass in on vr2: 10.149.0.200.59399 > 88.191.98.203.80: S 2470268420:2470268420(0) win 5840 <mss 1460,sackOK,timestamp 159270884[|tcp]> (DF) (ttl 64, id 2528, len 60)
> Nov 18 00:08:26.178873 rule 15/(match) [uid 0, pid 8113] pass out on vr0: 89.132.88.54.62277 > 88.191.98.203.80: S 2470268420:2470268420(0) win 5840 <mss 1460,sackOK,timestamp 159270884[|tcp]> (DF) (ttl 64, id 2528, len 60)
> Nov 18 00:08:26.199044 rule 1/(match) [uid 0, pid 8113] nat in on vr0: 88.191.98.203.80 > 10.149.0.200.59399: S 3477865083:3477865083(0) ack 2470268421 win 5792 <mss 1460,sackOK,timestamp 3907320559[|tcp]> (DF) (ttl 59, id 0, len 60)
> Nov 18 00:08:26.199095 rule 170/(match) [uid 0, pid 8113] pass out on vr2: 88.191.98.203.80 > 10.149.0.200.59399: S 3477865083:3477865083(0) ack 2470268421 win 5792 <mss 1460,sackOK,timestamp 3907320559[|tcp]> (DF) (ttl 58, id 0, len 60)
> Nov 18 00:08:26.199595 rule 170/(match) [uid 0, pid 8113] pass in on vr2: 10.149.0.200.59399 > 88.191.98.203.80: . [tcp sum ok] 1:1(0) ack 1 win 46 <nop,nop,timestamp 159270890 3907320559> (DF) (ttl 64, id 2529, len 52)
> Nov 18 00:08:26.199617 rule 1/(match) [uid 0, pid 8113] nat out on vr0: 89.132.88.54.62277 > 88.191.98.203.80: . [tcp sum ok] 2470268421:2470268421(0) ack 3477865084 win 46 <nop,nop,timestamp 159270890 3907320559> (DF) (ttl 64, id 2529, len 52)
> [...]
> ^C
> 2474 packets received by filter
> 0 packets dropped by kernel
> OpenBSD-4.5 anubisA ~ #
> ====================
> Celà-dit, je me méprends peut-être sur l'utilisation des mots-clefs
> "rdr" et "nat" dans les sorties de pflog0 suivant le sens des
> connexions...
>
> Je suis donc encore bloqué, même s'il y a de fortes chances pour que
> "reply-to" soit la bonne solution, je n'arrive pas à bien l'utiliser.
>
> Je suis ouvert à toute suggestion.

Perso je ne peux pas t'aider car je n'ai pas dépasser les basics avec
PF, mais n'as tu pas demander directement sur misc@ ? ou meme
directement à henning@ ou claudio@ car j'ai l'impression qu'ils sont
bien actifs sur pf dans les sources
(http://www.openbsd.org/cgi-bin/cvsweb/src/sbin/pfctl/parse.y)

>
> Bonne soirée,
> --
> Raph
>
>
>
> ________________________________
> French OpenBSD mailing list
> misc AT openbsd-france POINT org
> http://www.openbsd-france.org/ml
>
>