]> git.itanic.dy.fi Git - linux-stable/commit
netfilter: nat: fix ipv6 nat redirect with mapped and scoped addresses
authorFlorian Westphal <fw@strlen.de>
Wed, 8 Nov 2023 12:18:53 +0000 (13:18 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 8 Nov 2023 15:40:30 +0000 (16:40 +0100)
commit80abbe8a8263106fe45a4f293b92b5c74cc9cc8a
tree6bdf5f0986d591be15a3551a0d1769cd11fd9b55
parent7b308feb4fd2d1c06919445c65c8fbf8e9fd1781
netfilter: nat: fix ipv6 nat redirect with mapped and scoped addresses

The ipv6 redirect target was derived from the ipv4 one, i.e. its
identical to a 'dnat' with the first (primary) address assigned to the
network interface.  The code has been moved around to make it usable
from nf_tables too, but its still the same as it was back when this
was added in 2012.

IPv6, however, has different types of addresses, if the 'wrong' address
comes first the redirection does not work.

In Daniels case, the addresses are:
  inet6 ::ffff:192 ...
  inet6 2a01: ...

... so the function attempts to redirect to the mapped address.

Add more checks before the address is deemed correct:
1. If the packets' daddr is scoped, search for a scoped address too
2. skip tentative addresses
3. skip mapped addresses

Use the first address that appears to match our needs.

Reported-by: Daniel Huhardeaux <tech@tootai.net>
Closes: https://lore.kernel.org/netfilter/71be06b8-6aa0-4cf9-9e0b-e2839b01b22f@tootai.net/
Fixes: 115e23ac78f8 ("netfilter: ip6tables: add REDIRECT target")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_nat_redirect.c