కెర్నల్ స్థాయి సాధారణ ప్రోటోకాల్-స్వతంత్ర ఇంటర్ఫేస్ను మాత్రమే అందిస్తుంది, ఇది ప్యాకెట్ల నుండి డేటాను సంగ్రహించడం, డేటా కార్యకలాపాలు చేయడం మరియు ఫ్లో నియంత్రణ కోసం ప్రాథమిక విధులను అందిస్తుంది. ఫిల్టరింగ్ లాజిక్ మరియు ప్రోటోకాల్-నిర్దిష్ట హ్యాండ్లర్లు యూజర్ స్పేస్లో బైట్కోడ్గా కంపైల్ చేయబడతాయి, ఆ తర్వాత ఈ బైట్కోడ్ నెట్లింక్ ఇంటర్ఫేస్ను ఉపయోగించి కెర్నల్లోకి లోడ్ చేయబడుతుంది మరియు 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