Problema de NFTABLE: IPv6 no se comporta como IPv4 con configuración espejo

Problema de NFTABLE: IPv6 no se comporta como IPv4 con configuración espejo

Tengo un problema con IPv6 en mi servidor. Tengo nginx configurado para escuchar en el puerto 443 desde IPv4 e IPv6. Y funciona muy bien: mi sitio web está disponible desde Internet con TLS habilitado.

Las cosas se complican cuando activo nftables:cuando accedo a mi sitio web desde IPv4 funciona, pero cuando accedo desde IPv6, las conexiones se agotan :(

Salida de sudo nft list ruleset:

table inet filter {
        chain INPUT {
                type filter hook input priority filter; policy drop;
                meta nftrace set 1
                ct state established,related accept comment "allow established connections"
                iif "lo" accept comment "allow all from localhost"
                iif != "lo" ip daddr 127.0.0.0/8 counter packets 0 bytes 0 drop comment "drop connections to loopback not coming from loopback"
                iif != "lo" ip6 daddr ::1 counter packets 0 bytes 0 drop comment "drop connections to loopback not coming from loopback"
                iifname "tunnel0" accept comment "allow all from VPN"
                udp dport 12345 accept comment "allow VPN on port 12345"
                tcp dport { 22, 80, 443 } accept comment "allow HTTP, HTTPS and SSH on classic ports"
        }

        chain OUTPUT {
                type filter hook output priority filter; policy accept;
        }

        chain FORWARD {
                type filter hook forward priority filter; policy drop;
        }
}

Salida de sudo nft monitor trace | grep 443:

trace id 76d7cb1a inet filter INPUT packet: iif "eth0" ether saddr AA:AA:AA:AA:AA:AA ether daddr BB:BB:BB:BB:BB:BB ip6 saddr 2a01:cb09:804b:cd61:CCCC:CCCC:CCCC:CCCC ip6 daddr 2001:CCCC:CCCC:CCCC::CCCC ip6 dscp cs0 ip6 ecn not-ect ip6 hoplimit 45 ip6 flowlabel 0 ip6 nexthdr tcp ip6 length 40 tcp sport 53184 tcp dport 443 tcp flags == syn tcp window 22240

Tenga en cuenta que no tengo este problema con ssh en el puerto 22. Estoy ejecutando nftables v0.9.8 (E.D.S.)Debian 11.

Casi pasé un día buscando la solución. ¡Cualquier ayuda es bienvenida! Agradecer

Respuesta1

ICMPv6, que es un protocolo sobre IPv6, implementa la resolución de la capa de enlace mediante multidifusión y unidifusión. Eliminar ICMPv6 significa que ya no hay resolución disponible: los nodos no pueden encontrar otros nodos en la misma LAN. Esto incluye el enrutador IPv6 ascendente que no puede comunicarse con el sistema Linux mediante IPv6 si se descarta ICMPv6.

Por el contrario, IPv4 se basa en un protocolo diferente: ARP (que utiliza transmisión y unidifusión), que no se basa en IPv4. Por lo tanto, se puede eliminar todo ICMP y no sufrir ningún problema de conectividad LAN ya que ARP no se ve afectado (pero aún se pueden sufrir problemas).Agujero negro PMTUy otros problemas similares al eliminar todo ICMP, especialmente cuando se utilizan túneles).

Entonces comience habilitando todo ICMPv6 y luego, por segunda vez, una vez que haya validado que IPv6 está funcionando nuevamente, si no desea habilitarlo todo, verifique qué aceptar selectivamente en elProtocolo de descubrimiento de vecinos(para un nodo sin enrutamiento diría al menos los tipos 134, 135, 136 y 137):

nft add rule inet filter INPUT 'icmpv6 type { 134, 135, 136, 137 } accept'

Respuesta2

Esto funcionó para mí:

table inet filter {
    chain INPUT {
        type filter hook input priority 0; policy drop;

        meta l4proto ipv6-icmp accept
        ip6 ecn not-ect accept

        # Although I used the slightly more restrictive:
        # ip6 ecn not-ect ip6 hoplimit 1 accept
    }
}

Tenga en cuenta que el paquete que capturó es un paquete ECN, como el mío (excepto que el mío tiene ip6 hoplimit 1 desde un enlace local fe80::/10 saddr, mientras que el suyo tiene ip6 hoplimit 45). Parece que este paquete debe ser aceptado para que mi ISP (Spectrum Broadband) le asigne un bloque IPv6, y tal vez usted esté teniendo dificultades similares relacionadas con estos paquetes ECN.

información relacionada