Con IPv4, solía poder darle a un host una dirección IP local estática en la LAN y usar una regla de firewall en el firewall/enrutador para reenviar un puerto en la IP (posiblemente dinámica) orientada a Internet utilizada por la red para un puerto en ese host en particular, utilizando la dirección IPv4 LAN estática del host como una forma estable de identificar el host en la regla de firewall.
Pero con IPv6, cada host utiliza IP de Internet enrutables reales, por lo que el tráfico entrante para el host ya estará dirigido a él y no hay necesidad de NAT. Pero aún necesita poder escribir una regla de firewall que indique que se debe permitir el tráfico entrante a un host y puerto en particular, mientras que se debe bloquear el tráfico a otros hosts o puertos.
Pero si el prefijo bajo el cual la red asigna direcciones IPv6 es dinámico, ¿cómo se referiría a un host en particular en una regla de firewall para permitir el tráfico hacia él? No puedes simplemente permitir el tráfico a su dirección IPv6, porque la próxima semana tendrá una dirección IPv6 con un prefijo diferente, porque el ISP le habrá asignado a la red un prefijo diferente.
¿Cómo se configura entonces un firewall para permitir el tráfico entrante a ese host en algún puerto? Parece ip6tables
que hay una --dest
opción para hacer coincidir por destino, pero eso solo parece permitirle ingresar una dirección completa y no, por ejemplo, un sufijo de la dirección que puede garantizar que se mantenga estático para un host. Desde la página de manual:
[!] -s, --source address[/mask][,...]
Source specification. Address can be either a network name, a
hostname, a network IP address (with /mask), or a plain IP ad‐
dress. Hostnames will be resolved once only, before the rule is
submitted to the kernel. Please note that specifying any name
to be resolved with a remote query such as DNS is a really bad
idea. The mask can be either an ipv4 network mask (for ipta‐
bles) or a plain number, specifying the number of 1's at the
left side of the network mask. Thus, an iptables mask of 24 is
equivalent to 255.255.255.0. A "!" argument before the address
specification inverts the sense of the address. The flag --src
is an alias for this option. Multiple addresses can be speci‐
fied, but this will expand to multiple rules (when adding with
-A), or will cause multiple rules to be deleted (with -D).
[!] -d, --destination address[/mask][,...]
Destination specification. See the description of the -s
(source) flag for a detailed description of the syntax. The
flag --dst is an alias for this option.
¿Hay alguna manera de manejar esto ip6tables
? ¿Existe alguna otra capa superior ip6tables
que se supone que genera reglas que cambian a medida que se renumera la red, que todos estén usando realmente? ¿Existe algún tipo de ip6tables
complemento que me permita hacer coincidir el tráfico que irá a un host en particular incluso si cambia el número de red? ¿Otros firewalls de SO manejan esto de manera diferente?
Respuesta1
ip6tables
acepta una máscara de bits para la dirección. A diferencia de iptables
IPv4, estos bits no necesariamente tienen que estar todos al principio de la dirección, por lo que algo como esto debería funcionar bien:
ip6tables -A INPUT -d ::1234:56ff:fe78:90ab/::ffff:ffff:ffff:ffff -j ACCEPT
Eso haría que ip6tables acepte todos los paquetes que vayan a una dirección IPv6 que termine en ::1234:56ff:fe78:90ab
, sin importar el prefijo.