Цөмийн түвшин нь пакетуудаас өгөгдөл гаргаж авах, өгөгдлийн үйлдлүүдийг гүйцэтгэх, урсгалыг хянах үндсэн функцуудыг хангадаг зөвхөн ерөнхий протоколоос хамааралгүй интерфейсээр хангадаг. Шүүлтүүрийн логик өөрөө болон протоколын тусгай зохицуулагчийг хэрэглэгчийн орон зайд байт код болгон хөрвүүлсний дараа энэ байт кодыг Netlink интерфейсийг ашиглан цөмд ачаалж, BPF (Беркли Пакет шүүлтүүр) -ийг санагдуулам тусгай виртуал машинд ажиллуулдаг. Энэхүү арга нь цөмийн түвшинд ажиллаж байгаа шүүлтүүрийн кодын хэмжээг мэдэгдэхүйц багасгаж, протоколтой ажиллах логикийн дүн шинжилгээ хийх дүрэм, логикийн бүх функцийг хэрэглэгчийн орон зайд шилжүүлэх боломжийг олгодог.
Гол инноваци:
- Поддержка сопоставления пакетов по времени. Можно определить как диапазоны времени и дат, в которых будет срабатывать правило, так и настроить срабатывание в отдельные дни недели. Также добавлена новая опция «-T» для вывода эпохального времени в секундах.
meta time \»2019-12-24 16:00\» — \»2020-01-02 7:00\»
meta hour \»17:00\» — \»19:00\»
meta day \»Fri\» - Поддержка восстановления и сохранения меток SELinux (secmark).
ct secmark set meta secmark
meta secmark set ct secmark - Поддержка map-списков synproxy, позволяющих определять более одного правила на бэкенд.
хүснэгт ip foo {
synproxy https-synproxy {
mss 1460
wscale 7
timestamp sack-perm
}synproxy other-synproxy {
mss 1460
wscale 5
}chain pre {
төрөл шүүлтүүр дэгээ урьдчилан чиглүүлэх тэргүүлэх ач холбогдол түүхий; бодлогыг хүлээн зөвшөөрөх;
tcp dport 8888 tcp флагууд syn notrack
}гинжин баар {
төрөл шүүлтүүр дэгээ урагш тэргүүлэх шүүлтүүр; бодлогыг хүлээн зөвшөөрөх;
ct state invalid,untracked synproxy name ip saddr map { 192.168.1.0/24 : «https-synproxy», 192.168.2.0/24 : «other-synproxy» }
}
} - Возможность динамического удаления элементов set-наборов из правил обработки пакетов.
nft add rule … delete @set5 { ip6 saddr . ip6 daddr }
- Поддержка сопоставления VLAN по идентификатору и протоколу, определённых в метаданных интерфейса сетевого моста;
meta ibrpvid 100
meta ibrvproto vlan - Опция «-t» («—terse») для исключения элементов set-наборов при отображении правил. При выполнении «nft -t list ruleset» будет выведено:
хүснэгт ip x {
тохируулах y {
type ipv4_addr
}
}А при «nft list ruleset»
хүснэгт ip x {
тохируулах y {
type ipv4_addr
elements = { 192.168.10.2, 192.168.20.1,
192.168.4.4, 192.168.2.34 }
}
} - Возможность указания более одного устройства в цепочках netdev (работает только с ядром 5.5) для объединения типовых правил фильтрации.
add table netdev x
add chain netdev x y { \
type filter hook ingress devices = { eth0, eth1 } priority 0;
} - Возможность добавления описаний типов данных.
# nft describe ipv4_addr
datatype ipv4_addr (IPv4 address) (basetype integer), 32 bits - Возможность сборки CLI-интерфейса с библиотекой linenoise вместо libreadline.
./configure —with-cli=linenoise
Эх сурвалж: opennet.ru