Asta kernel tenê navgînek serbixwe-protokolek gelemperî peyda dike ku fonksiyonên bingehîn ji bo derxistina daneyan ji pakêtan, pêkanîna operasyonên daneyê, û kontrolkirina herikê peyda dike. Rêzikên fîlterkirinê û rêkarên protokol-taybet di cîhê bikarhêner de di nav bytekodê de têne berhev kirin, piştî ku ev bytekod bi karanîna navbeynkariya Netlink-ê di kernelê de tê barkirin û di kernelê de di makîneyek virtual ya taybetî ya ku BPF (Parzeyên pakêtê yên Berkeley) tîne bîra xwe de, tê darve kirin. Ev nêzîkatî dihêle hûn bi girîngî mezinahiya koda fîlterkirinê ya ku di asta kernelê de tê xebitandin kêm bikin û hemî fonksiyonên qaîdeyên parskirinê û mantiqê ji bo xebata bi protokolan re li cîhê bikarhêner biguhezînin.
Nûvekirinên sereke:
- В наборы добавлена поддержка счётчиков пакетов и трафика, привязанных к элементам набора. Счётчики включаются при помощи ключевого слова «counter»:
tablo ip x {
set y {
typeof ip saddr
masa dûkanan
hêmanên = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
}zincîr z {
type filter hook output priority filter; policy accept;
ip daddr @y
}
} - Для установки начальных значений счётчиков, например, для восстановления прошлых счётчиков после перезапуска, набора можно использовать команду «nft -f»:
# cat ruleset.nft
tablo ip x {
set y {
typeof ip saddr
masa dûkanan
elements = { 192.168.10.35 counter packets 1 bytes 84, 192.168.10.101 \
counter p 192.168.10.135 counter packets 0 bytes 0 }
}zincîr z {
type filter hook output priority filter; policy accept;
ip daddr @y
}
}
# nft -f ruleset.nft
# nft list ruleset
tablo ip x {
set y {
typeof ip saddr
masa dûkanan
elements = { 192.168.10.35 counter packets 1 bytes 84, 192.168.10.101 \
counter p 192.168.10.135 counter packets 0 bytes 0 }
}zincîr z {
type filter hook output priority filter; policy accept;
ip daddr @y
}
} - Поддержка счётчиков также добавлена во flowtable:
sifrê ip foo {
flowtable bar {
hook ingress priority -100
devices = { eth0, eth1 }
masa dûkanan
}zincîra pêş {
type filter hook forward priority filter;
flow add @bar counter
}
}Посмотреть список счётчиков можно командной «conntrack -L»:
tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 packets=9 bytes=608 \
src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 packets=8 bytes=428 [OFFLOAD] mark=0 \
secctx=null use=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
packets=1005763 bytes=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
packets=967505 bytes=50310268 [OFFLOAD] mark=0 secctx=null use=2 - В наборах для присоединений (concatenation, определённые связки адресов и портов, упрощающие сопоставление) обеспечена возможность использования директивы «typeof», определяющей тип данных элементов для составных частей элементов набора:
sifrê ip foo {
lîsteya spî saz bike {
typeof ip saddr . tcp dport
elements = { 192.168.10.35 . 80, 192.168.10.101 . 80 }
}barê zincîrê {
type filter hook prerouting filter priority; drop Policy;
ip daddr . tcp dport @whitelist accept
}
} - Директива typeof теперь также применима для присоединений в map-списках:
sifrê ip foo {
nexşeya addr2mark {
typeof ip saddr . tcp dport : meta mark
elements = { 192.168.10.35 . 80 : 0x00000001,
192.168.10.135 . 80 : 0x00000002 }
}barê zincîrê {
type filter hook prerouting filter priority; drop Policy;
meta mark set ip daddr . tcp dport map @addr2mark accept
}
} - Добавлена поддержка присоединений с диапазонами в анонимных (неименованных) наборах:
# nft add rule inet filter input ip daddr . tcp dport \
{ 10.0.0.0/8 . 10-23, 192.168.1.1-192.168.3.8 . 80-443 } accept - Предоставлена возможность отбрасывания пакетов с флагами 802.1q (VLAN) при обработке сетевых мостов:
# nft add rule bridge foo bar ether type vlan reject with tcp reset
- Добавлена поддержка сопоставления по идентификатору TCP-сеанса (conntrack ID). Для определения conntrack ID можно использовать опцию «—output id»:
# conntrack -L —output id
udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 packets=2 \
bytes=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 packets=2 bytes=320 \
[ASSURED] mark=0 use=1 id=2779986232# nft add rule foo bar ct id 2779986232 counter
Source: opennet.ru