[PATCH netifd v2] interface-ip: fix ipv6 routing loop

Maxim Mikityanskiy maxtram95 at gmail.com
Wed Mar 29 07:44:49 PDT 2023


Hello Hans!

On Sun, 03 Jan 2021 12:14:18 -0800, Hans Dedecker wrote:
> In case of prefix delegation an upstream ISP will route the complete
> delegated prefix (e.g 2001:DB8:BEEF::/56) to an OpenWrt device, OpenWrt
> will route back the complete /56 not matching a local or subdelegated
> prefix and with as source an address from the delegated prefix
> causing a routing loop.
> Fix this by using an ip rule which directs traffic matching the
> subdelegated prefix and coming from the wan interface to the main or
> user configured routing table.
> An ip rule with lower priority will make sure the traffic not matching
> the subdelegated prefix(es) will be dropped with an ICMPv6 unreachable
> fixing the potential routing loop.
> 
> 
> This will result into the following typical IPv6 rules :
> 
> 0:      from all lookup local
> 30000:  from all to 2001:DB8:BEEF::/64 iif eth4 lookup main
> 30001:  from all to 2001:DB8:BEEF::/56 iif eth4 unreachable
> 32766:  from all lookup main
> 4200000000:     from 2001:DB8:BEEF::1/64 iif br-lan unreachable

Could you please hint me why the rule with ID 4200000000 is useful? I
understand the purpose of rule 30001 explained in this commit message,
but I can't imagine the situation in which rule 4200000000 would be
triggered, because the main routing table has the default route that
would be the final match.

Thanks,
Max

> 4200000001:     from all iif lo failed_policy
> 4200000011:     from all iif eth0 failed_policy
> 4200000015:     from all iif eth4 failed_policy
> 4200000015:     from all iif eth4 failed_policy
> 4200000019:     from all iif br-lan failed_policy
> 
> Signed-off-by: Hans Dedecker <dedec... at gmail.com>
> ---
> v2: Keep unreachable route in the routing table dropping traffic from the lan
> not matching any routing rules with an ICMPv6 unreachable



More information about the openwrt-devel mailing list