Reprenons une maquette classique:
Notre modem transmet au routeur NAT une unique adresse IPv4 et une délégation /64 IPv6. L'ensemble Modem/8outeur NAT/switch ressemble furieusement à ce qui est habituellement inclus dans une «Box», mais nous allons nous en passer pour pouvoir maîtriser complètement cet ensemble.
Le routeur NAT/DHCP/DNS, c'est du GNU/Linux Debian 12 et Nftables est activé dessus. Tout est virtuel dans cette maquette.
Nous utiliserons la famille inet pour y grouper des règles ipv4 et ipv6, ce qui nous conduit au fichier /etc/nftables.conf suivant:
table inet filter {
chain INPUT {
# par défaut, rien n'entrera
type filter hook input priority filter; policy drop;
# on accepte ssh et telnet depuis le LAN
iifname "enp7s0" tcp dport { 22, 23 } accept
# on accepte les requêtes DNS et DHCP depuis le LAN
iifname "enp7s0" udp dport { 53, 67, 68 } accept
# on accepte ssh depuis l'extérieur
iifname "enp1s0" tcp dport 22 accept
# on accepte ce qui entre par l'interface locale
iifname "lo" accept
# on accepte tout ce qui a été initié par le serveur
ct state established,related accept
# on accepte en icmpv6 le ping-request et tout ce qui concerne le voisinage
icmpv6 type { echo-request, nd-router-solicit, nd-router-advert, nd-neighbor-solicit, nd-neighbor-advert } accept
# on accepte le ping d'icmpv4
icmp type echo-request accept
}
}