nftables — подсистема ядра Linux, обеспечивающая фильтрацию и классификацию сетевых пакетов/датаграмм/кадров.

Позволяет заменить пакетов iptables, ip6tables, arptables, ebtables в межсетевом экране Netfilter. За счёт объединения функциональности перечисленных пакетов, в nftables присутствует меньшее дублирование кода при построении правил для Netfilter и низкоуровневая оптимизация.

nftables лучше подходит для работы dual-stack хостов чем ip6tables, так как не требуется создавать отдельный конфиг для каждого семейства протоколов.

На конечных хостах для работы IPv6 требуется разрешение работы ICMPv6 для работы SLAAC. Пример минимального рабочего конфига:

/etc/nftables.conf
#!/usr/sbin/nft -f

flush ruleset

table inet filter {
       chain input {
                type filter hook input priority filter; policy drop;
                # Разрешаем ответные пакеты, дропаем невалидные
                ct state established,related accept
                ct state invalid counter drop
                
                # Разрешаем общение внутри localhost
                iifname "lo" accept
                
                # Разрешаем echo-запросы ICMP
		ip protocol icmp icmp type { echo-request } accept

                # Разрешаем echo-запросы ICMPv6
		ip6 nexthdr ipv6-icmp icmpv6 type echo-request accept

                # Разрешаем Neighbor Advertisement, Neighbor Solicitation, Router Advertisment. Пакеты с Hoplimit 1 и 255 не могут выйти за пределы локальной сети. 
		ip6 nexthdr ipv6-icmp ip6 hoplimit 1 icmpv6 type { nd-neighbor-advert, nd-neighbor-solicit, nd-router-advert} accept
		ip6 nexthdr ipv6-icmp ip6 hoplimit 255 icmpv6 type { nd-neighbor-advert, nd-neighbor-solicit, nd-router-advert} accept
		
                # Все остальные пакеты отбрасываем
                counter packets 0 bytes 0 drop
	}

	chain forward {
		type filter hook forward priority 0;
	}
	chain output {
		type filter hook output priority 0;
	}
}

nftables.txt · Последние изменения: 2024-09-04 06:57 UTC От 16depo
Personal Tools