On Jan 6, 2008, at 11:09 AM, Good Good wrote:

Hello,

My ISP (free.fr) now proposes to me a native connectivity in IPV6.
I wish to implement this functionality on my network, that here:


Switch Firewall ISP Box ISP Network/ Internet
              __             ___             ___
|PC1|-------|   |      vr0 |      | vr1       |     |
              | x|-----------|      |------------|     |----------O
|PC2|-------|__|           |___|            |___|


Here some information :
- the ISP box is running as a bridge ;
- the firewall is running Openbsd 4.1 GENERIC#1435 i386 (upgrade to 4.2 not
yet done) ;
- workstations are running Win XP ;
- pf rules are quite simple (just filtering and NAT for IPV4) ;
- my ISP provided to me an IPV6 address of the type 2a01:5d8:X:X::/64

The problem :
The /64 provided by my ISP is made to fuel only one ethernet segment and no
more.

They're not willing to route a /64 to you?


So, it is not possible to route a part of the /64 to another ethernet
segment (the private segment).

One solution :
The firewall NAT IPV4 traffic and bridge IPV6 traffic, that here:

Switch Firewall ISP Box ISP Network/ Internet
              __             ___             ___
|PC1|-------|   |      vr0 |     | vr1       |     |
              | x|-----------|     |------------|     |----------O
|PC2|-------|__|        |  |___|  |         |___|
                           |   |       |
                           |bridge0 |
                           |  _|_     |
                           | |    |     |
                           |_|   |_ _|
                             |__|
                      IPV6 bridge only

Some clues :
I found some clues on the following web site where my need is summarized.
An English translation ->
http://64.233.179.104/translate_c?hl=fr&ie=UTF-8&oe=UTF-8&langpair=fr%7Cen&u=http://www.ip6.fr/free-broute/&prev=/language_tools
The original French link ->
http://ip6.fr/free-broute/

Second problem :
The author of the previously quoted web site is running under Linux.
Here used commands :
brctl addbr br0
ifconfig br0 up
brctl addif br0 eth0
brctl addif br0 eth1
ebtables -t broute -A BROUTING -p ! ipv6 -j DROP

The magic command is "ebtables -t broute -A BROUTING -p ! ipv6 -j DROP".

Questions :
1) Did you understand my problems ? :)

Kind of. My understanding is you want to know if you can just accept the /64 traffic, and simply pass it through the firewall, while it's acting as a NAT for IPv4 traffic. My inclination is "no, that's not possible." I suspect it can be done though.

2) Is it the right solution to bridge only IPV6 traffic (I hope for it) ?

I think you could redirect v6 traffic from the external interface to the internal one. My concern is that you bypass the firewall. You may want to simply bridge, but I'd filter IPv6 just as much as IPv4.

3) The most important question, how to do this type of bridging under
Openbsd (without ebtables) ?

brconfig(8) would configure the bridges, but I believe you'd be pretty much screwed on the routing and NAT once you do that.

You could bridge between the external interface, an internal tun/gif, and the internal interface, then route all v6 traffic to the tun/gif. it'd require some interesting work with route(8), though.

According to the man page, "brconfig" can only perform layer 2 filtering.

Just a thought, you could set up a non-bridging "route" label in pf, forwarding all IPv6 traffic to a bridged "virtual" interface with the internal interface. It's horribly complex, even in just thinking it out.

Reply via email to