J'ai un problème avec IPv6 sur mon serveur. Je dispose de Nginx configuré pour écouter le port 443 d'IPv4 et IPv6. Et cela fonctionne bien: mon webiste est disponible sur Internet avec TLS activé.
Les choses sont compliquées lorsque j'active NFTABLES: Lorsque j'accède à mon site Web d'IPv4, cela fonctionne, mais lorsque j'y ai accès à partir de Connections IPv6 Time Out: (
Sortie 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;
}
}
Sortie 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
Remarque Je n'ai pas ce problème avec ssh sur le port 22. Je suis en cours d'exécution nftables v0.9.8 (E.D.S.)
sur Debian 11.
J'ai presque passé une journée à chercher la solution. Toute aide est la bienvenue! Remercier
ICMPV6, qui est un protocole via IPv6, implémente la résolution de la couche de liaison à l'aide de multidiffusion et d'unicast. Dossier ICMPV6 signifie qu'il n'y a plus de résolution disponible: les nœuds ne peuvent pas trouver d'autres nœuds dans le même réseau local. Cela inclut le routeur IPv6 en amont qui ne peut pas communiquer avec le système Linux à l'aide de IPv6 si ICMPv6 est supprimé.
En revanche IPv4 s'appuie sur un protocole différent: ARP (en utilisant la diffusion et unicast), qui n'est pas sur IPv4. Donc, on peut laisser tomber tout ICMP et ne subir aucun problème de connectivité LAN depuis que l'ARP n'est pas affecté (mais on peut encore souffrir de PMTU Blackhole et d'autres problèmes similaires lors de la perte de tout ICMP, en particulier lors de l'utilisation de tunnels).
Donc, commencez par l'activer tout ICMPv6 alors, une fois, une fois que vous validez que IPv6 fonctionne à nouveau, si vous ne souhaitez pas activer tout cela, vérifiez quoi de l'accepter sélectivement dans le Protocole de découverte de voisin (Pour un nœud non routier, je dirais au moins des types 134, 135, 136 et 137):
nft add rule inet filter INPUT 'icmpv6 type { 134, 135, 136, 137 } accept'