Le 2013-09-18 17:54, Christophe a écrit :
> Je vais essayer de faire simple ;) .
HA!
> vlan200 = wan1 => prefixe 2001:db8:feaf:1::/64 (issu d'un /48 public)
> vlan201 = wan2 => prefixe 2001:db8:fe8f:1000::/64 (issu d'un deuxième
> /48 public)
>
>
> vlan10 = lan => préfixe 2001:db8:feaf:1000::/64 (issu du préfixe /48 de
> wan1)
>
> Donc adressage publique sur le LAN.
>
> Route par défaut par une gateway sur le vlan200 .
> Comportement par défaut dans ces conditions = pas de NAT.
>
> But étant par exemple : de router tout ce qui est Web (80 et 443) sur le
> wan2 , et de laisser le reste sur wan1.
>
> Ce qui est en place à l'heure actuelle (fonctionnel mais un peu crade,
> et c'est pour cette raison que je cherche le moyen de faire mieux) :
>
> v6_lan_net="2001:db8:feaf:1000::/64"
> v6_wan2_net="2001:db8:fe8f:1000::/64"
>
> v6_wan2_nathttpout="2001:db8:fe8f:1000::80"
> # L'adresse précédente est aliasée sur l'interface vlan201
>
> v6_host_gwnet2="fe80::9e4e:20ff:fe3a:858e"
> # gateway sur le vlan201 (celle qui figure dans la trace tcpdump du
> dernier mail)
>
> table <localnets_v6> { # ici , tout une liste de réseaux accessibles ,
> soit directement par le routeur, soit par un vpn }
>
> Et au final, cela tient dans les deux lignes suivantes :
>
> pass in quick on $int_if inet6 proto tcp from $v6_lan_net to !
> <localnets_v6> port { 80,443 } route-to ($ext2_if $v6_host_gwnet2) tag
> webnav keep state
>
> pass out on $ext2_if inet6 from $v6_lan_net to any nat-to
> $v6_host_nathttpout tagged webnav keep state
>
> Tout sort donc par une seule et même IPv6.
>
>
> Le but serait donc de remplacer cela par :
>
> (la même première ligne)
> et
> match on $ext2_if from $v6_lan_net binat-to $v6_wan2_net bitmask
>
>
> Ce qui en partie fonctionne, car les paquets arrivant du lan
> 2001:db8:feaf:1000:+host et sortant sur l'interface vlan201, sont bien
> translatés en 2001:db8:fe8f:1000:+host.
>
> C'est au retour que ca coince ;) . La gateway à l'autre bout
> ($v6_host_gwnet2) tente savoir à qui appartient le packet translaté, et
> la , c'est le drame ;) .
???
Le gateway en amont veut router un paquet destiné à
2001:db8:fe8f:1000:+host. Pourquoi ne trouve-t-il pas 2001:db8:fe8f::/48
dans sa table de routage? Si ce /48 est bien dans sa table, il ne
devrait pas faire du ND pour l'adresse de destination, il devrait faire
du ND pour l'adresse du next hop. Et le next hop, c'est le routeur OpenBSD.
Imaginons qu'on élimine tout le NPTv6. Si le gateway en amont a un
paquet adressé à votre /48, il va faire quoi avec?
Simon
---------------------------
Liste de diffusion du FRnOG
http://www.frnog.org/