my ISP have IPv6 using 6rd (sit) tunnel.
I have 6to4 interface:
Code: Select all
/interface 6to4
add !keepalive \
local-address=<my public IPv4 address> \
mtu=1479 \
name=6rd \
remote-address=<6rd gateway ISP IPv4 address>
Code: Select all
/ipv6 address
add address=<my public IPv6 address> interface=LAN
<my public IPv6 address> is computed:
Code: Select all
2a01:4240:<my public IPv4 address>::1/64
IPv4: 10.1.2.3
IPv6: 2a01:4240:a01:203::/64
IPv6 route:
Code: Select all
/ipv6 route
add distance=1 dst-address=2000::/3 gateway=6rd
So for example:
Location 1:
IPv4: 10.1.2.3
IPv6: 2a01:4240:a01:203::/64
communicates with:
Location 2:
IPv4: 10.1.2.4
IPv6: 2a01:4240:a01:204::/64
2a01:4240:a01:203::1 send icmpv6 to 2a01:4240:a01:204::1. IPv6 packet is encapsulated inside 6in4 packet, src ipv4 is 10.1.2.3 and dst ipv4 is <6rd gateway ISP IPv4 address>. But that's wrong, because communication inside ISP IPv6 prefix should not go to <6rd gateway ISP IPv4 address> but directly to other location, thus dst ipv4 should be 10.1.2.4. Obviously still encapsulated inside 6in4 packet.
This picture shows how data should flow (not my image):
This setup worked fine before, but ISP upgraded 6rd gateway to new Linux kernel, which blocks communication inside 2a01:4240:/32. Details: https://patchwork.ozlabs.org/project/ne ... ktion.org/
Is there any way to route IPv6 traffic directly without 6rd gateway, encapsulate in 6in4 but only when it's "inside ISP network"? And use 6rd gateway otherwise.
Thanks.